ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

HDFS的Shell操作

2021-07-17 16:33:54  阅读:186  来源: 互联网

标签:hdfs Shell HDFS interval dfs fs ... 操作 root


目录

1. 创建⽬录

 2. 上传指令

 3. 查看指令

 4. 下载指令

5. 删除命令

6. 查看磁盘利⽤率和⽂件⼤⼩

7. 向分布式⽂件系统中的⽂件⾥追加内容

8. 修改权限的

9. 修改⽂件的副本数

10. 查看⽂件的状态

11. 测试

12. 创建空⽂件

13. 显示当前⽂件夹及⼦⽂件夹的数量

14. 合并下载

15. 移动hdfs中的⽂件(更名)

16. 复制hdfs中的⽂件到hdfs的另⼀个⽬录

17. 设置Hadoop回收站trash


1. 创建⽬录

[-mkdir [-p] <path> ...] # 在分布式⽂件系统上创建⽬录 -p, 多层级创建 调⽤格式 : hdfs dfs -mkdir (-p) / ⽬录 例如 : - hdfs dfs -mkdir /data - hdfs dfs -mkdir -p /data/a/b/c

 2. 上传指令

[-put [-f] [-p] [-l] <localsrc> ... <dst>] # 将本地⽂件系统的⽂件 上传到分布式⽂件系统 调⽤格式 :hdfs dfs -put / 本地⽂件 / 分布式⽂件系统路径 注意 : 直接写 / 是省略了⽂件系统的名称 hdfs://ip:port 。 例如 :         - hdfs dfs -put /root/a.txt /data/         - hdfs dfs -put /root/logs/* /data/ 其他指令 : [-moveFromLocal <localsrc> ... <dst>] # 将本地⽂件系统的⽂ 件上传到分布式⽂件系统 [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]

 3. 查看指令

[-ls [-d] [-h] [-R] [<path> ...]] # 查看分布式⽂件系统的⽬录⾥内容 调⽤格式 :hdfs dfs -ls / [-cat [-ignoreCrc] <src> ...] # 查看分布式⽂件系统的⽂件内容 调⽤格式 :hdfs dfs -cat /xxx.txt [-tail [-f] <file>] # 查看分布式⽂件系统的⽂件内容 调⽤格式 :hdfs dfs -tail /xxx.txt 注意 : 默认最多查看 1000 ⾏

 4. 下载指令

[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] 注意 : 本地路径的⽂件夹可以不存在 [-moveToLocal <src> <localdst>] 注意 : 从 hdfs 的某个路径将数据剪切到本地 , 已经被遗弃了 [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] 调⽤格式 : 同 copyToLocal

5. 删除命令

[-rm [-f] [-r|-R] [-skipTrash] <src> ...] 注意 : 如果删除⽂件夹需要加 -r [-rmdir [--ignore-fail-on-non-empty] <dir> ...] 注意 : 必须是空⽂件夹 , 如果⾮空必须使⽤ rm 删除

6. 查看磁盘利⽤率和⽂件⼤⼩

[-df [-h] [<path> ...]] 查看分布式系统的磁盘使⽤情况 [-du [-s] [-h] <path> ...] # 查看分布式系统上当前路径下⽂件的情况 -h : human 以⼈类可读的⽅式显示

7. 向分布式⽂件系统中的⽂件⾥追加内容

[-appendToFile <localsrc> ... <dst>] 调⽤格式 :hdfs dfs -appendToFile 本地⽂件 hdfs 上的⽂件 注意 : 不⽀持在中间随意增删改操作

8. 修改权限的

跟本地的操作⼀致 ,-R 是让⼦⽬录或⽂件也进⾏相应的修改 [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...]

9. 修改⽂件的副本数

[-setrep [-R] [-w] <rep> <path> ...] 调⽤格式 :hadoop fs -setrep 3 / 将 hdfs 根⽬录及⼦⽬录下的内容设置成 3 个 副本 注意 : 当设置的副本数量与初始化时默认的副本数量不⼀致时 , 集群会作出反应 , ⽐原来多 了会⾃动进⾏复制.

10. 查看⽂件的状态

hdfs dfs [generic options] -stat [format] <path> ... 命令的作⽤ : 当向 hdfs 上写⽂件时,可以通过 dfs.blocksize 配置项来设置⽂件的 block的⼤⼩。这就导致了 hdfs 上的不同的⽂件 block 的⼤⼩是不相同的。有时候想知 道hdfs 上某个⽂件的 block ⼤⼩,可以预先估算⼀下计算的 task 的个数。 stat 的意 义:可以查看⽂件的⼀些属性。 调⽤格式 :hdfs dfs -stat [format] ⽂件路径 format 的形式: %b :打印⽂件的⼤⼩(⽬录⼤⼩为 0 ) %n :打印⽂件名 %o :打印 block 的 size %r :打印副本数 %y : utc 时间 yyyy-MM-dd HH:mm:ss %Y :打印⾃ 1970 年 1 ⽉ 1 ⽇以来的 utc 的微秒数 %F :⽬录打印 directory ,⽂件打印 regular file 注意 : 1) 当使⽤ -stat 命令但不指定 format 时,只打印创建时间,相当于 %y 2)-stat 后⾯只跟⽬录 ,%r,%o 等打印的都是 0, 只有⽂件才有副本和⼤⼩

11. 测试

hdfs dfs [generic options] -test -[defsz] <path> 参数说明 : -e: ⽂件是否存在 存在返回 0 -z: ⽂件是否为空 为空返回 0 -d: 是否是路径 ( ⽬录 ) , 是返回 0 调⽤格式 :hdfs dfs -test -d ⽂件 实例 :hdfs dfs -test -d /shelldata/111.txt && echo "OK" || echo "no" 解释 : 测试当前的内容是否是⽂件夹 , 如果是返回 ok, 如果不是返回 no

12. 创建空⽂件

hdfs dfs [generic options] -touchz <path> ...

调⽤格式 :hdfs dfs touchz /hadooptest.txt

13. 显示当前⽂件夹及⼦⽂件夹的数量

hdfs dfs [generic options] -count [-q] [-h] <path> ...

调⽤格式 :hdfs dfs -count /hadoop

14. 合并下载

hdfs dfs [generic options] -getmerge [-nl] <src> <localdst> 调⽤格式 :hdfs dfs -getmerge hdfs 上⾯的路径 本地的路径 实例 :hdfs dfs -getmerge /hadoopdata/*.xml

15. 移动hdfs中的⽂件(更名)

hdfs dfds [generic options] -mv <src> ... <dst> 调⽤格式 :hdfs dfs -mv /hdfs 的路径 1 /hdfs 的另⼀个路径 2 实例 :hfds dfs -mv /aaa /bbb 这⾥是将 aaa 整体移动到 bbb 中

16. 复制hdfs中的⽂件到hdfs的另⼀个⽬录

hdfs dfs [generic options] -cp [-f] [-p | -p[topax]] <src> ... <dst> 调⽤格式 :hdfs dfs -cp /hdfs 路径 _1 /hdfs 路径 _2

17. 设置Hadoop回收站trash

1 修改core-site.xml⽂件
     注意:我们需要在namenode和datanode同时设置垃圾回收
     <property>
         <name>fs.trash.interval</name>
         <!-- 1440分钟后检查点会被清除,如果为0,垃圾回收站不会启⽤. -->
         <value>1440</value>
     </property>
     <property> 
         <name>fs.trash.checkpoint.interval</name> 
         <value>0</value>
     </property>
 解释:
 ⼀:检查点:
     执⾏下⾯的语句后出现的.Trash/190907043825就是检查点
     [root@hadoop01 sbin]# hadoop fs -ls /user/root/.Trash/
     19/09/07 05:15:42 WARN util.NativeCodeLoader: Unable to
load native-hadoop library for your platform... using builtinjava classes where applicable
     Found 2 items
     drwx------ - root supergroup 0 2019-09-07   04:36 /user/root/.Trash/190907043825
     drwx------ - root supergroup 0 2019-09-07   05:15 /user/root/.Trash/Current
 ⼆:fs.trash.interval
     分钟数,当超过这个分钟数后检查点会被删除。如果为零,回收站功能将被禁⽤。默认是0.单位分钟。这⾥我设置的是1天(60*24)
     删除数据rm后,会将数据move到当前⽂件夹下的.Trash/current⽬录
 三:fs.trash.checkpoint.interval 
     检查点创建的时间间隔(单位为分钟)。其值应该⼩于或等于fs.trash.interval。如果为零,则将该值设置为fs.trash.interval的值。
 四:删除过程分析
    这⾥的Deletion interval表示检查点删除时间间隔(单位为分钟)
     这⾥的Emptier interval表示在运⾏线程来管理检查点之前,NameNode需要等待多⻓时间(以分钟为单位),即检查点创建时间间隔.NameNode删除超过fs.trash.interval的检查点,并为/user/${username}/.Trash/Current创建⼀个新的检查点。该频率由fs.trash.checkpoint.interval的值确定,且不得⼤于Deletion interval。这确保了在emptier窗⼝内回收站中有⼀个或多个检查点。

     [root@hadoop01 sbin]# hadoop fs -rm -r /hadoop4.txt
     19/09/07 05:15:24 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
    
     Moved: 'hdfs://qianfeng01:9000/hadoop4.txt' to trash at:hdfs://qianfeng01:9000/user/root/.Trash/Current
     例如:
     fs.trash.interval = 120 (deletion interval = 2 hours)
     fs.trash.checkpoint.interval = 60 (emptier interval = 1hour)

     说明:
     这导致NameNode为Current⽬录下的垃圾⽂件每⼩时创建⼀个新的检查点,并删除已经存在超过2个⼩时的检查点。
     在回收站⽣命周期结束后,NameNode从HDFS命名空间中删除该⽂件。删除⽂件会导致与⽂件关联的块被释放。请注意,⽤户删除⽂件的时间与HDFS中相应增加可⽤空间的时间之间可能存在明显的时间延迟,即⽤户删除⽂件,HDFS可⽤空间不会⽴⻢增加,中间有⼀定的延迟。

 五:expunge 清空回收站
     要想使⽤这个命令,⾸先得有回收站,即fs.trash.interval的值不能为0
     当我们执⾏expunge命令时,其实是会⽴刻创建⼀个新的检查点,并 将/.Trash/Current中的内容⽴刻放⼊这个检查点.
     实例: [root@qianfeng01 sbin]# hadoop fs -expunge
     19/09/07 05:15:58 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
     19/09/07 05:15:58 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/root/.Trash/190907051558

 六:如果想绕过垃圾回收站并⽴即从⽂件系统中删除⽂件。可以执⾏ hadoop fs -rm -skipTrash

    [root@hadoop01 sbin]# hadoop fs -rm -skipTrash /hadoop111.txt
     19/09/07 05:50:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtinjava classes where applicable
     Deleted /hadoop111.txt


2.测试
     1)新建⽬录input
         [root@hadoop01:/data/soft]# hadoop fs -mkdir /input

     2)上传⽂件
     [root@hadoop01:/data/soft]# hadoop fs -copyFromLocal /data/soft/file0* /input

     3)删除⽬录input
     [root@hadoop01 data]# hadoop fs -rmr /input
     Moved to trash: hdfs://qianfeng01:9000/user/root/input

     4)参看当前⽬录
     [root@hadoop01 data]# hadoop fs -ls
     Found 2 items
     drwxr-xr-x - root supergroup 0 2011-02-12 22:17 /user/root/.Trash
     发现input删除,多了⼀个⽬录.Trash

     5)恢复刚刚删除的⽬录
     [root@hadoop01data]# hadoop fs -mv
    /user/root/.Trash/Current/user/root/input /user/root/input
     6)检查恢复的数据
     [root@hadoop01 data]# hadoop fs -ls input
     Found 2 items
     -rw-r--r-- 3 root supergroup 22 2011-02-12 17:40 /user/root/input/file01
     -rw-r--r-- 3 root supergroup 28 2011-02-12 17:40 /user/root/input/file02
     7)删除.Trash⽬录(清理垃圾)
     [root@hadoop01data]# hadoop fs -rmr .Trash
     Deleted hdfs://hadoop01:9000/user/root/.Trash


标签:hdfs,Shell,HDFS,interval,dfs,fs,...,操作,root
来源: https://blog.csdn.net/CyAurora/article/details/118858020

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有