美文网首页
HDFS 命令

HDFS 命令

作者: 华阳_3bcf | 来源:发表于2018-10-15 12:22 被阅读0次

HDFS就是Hadoop分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

HDFS命令,也是对文件或者目录的增删改查,只不过对象是分布式文件系统,而不是我们通常的本地文件系统。

关于HDFS的文件操作,主要使用以下2个命令:

  1. hadoop fs {args}
  2. hdfs dfs {args}

fs和dfs的区别简要说一下,fs属于一个更抽象的概念,可以操作任何文件系统;而dfs只能操作HDFS文件系统相关(包括与Local FS间的操作)。

操作之前,切换用户(目的是command path 和权限):

sudo su - hdfs

  • 列出HDFS上的文件

hdfs dfs -ls /

或者

hadoop fs -ls /

$ hdfs dfs -ls /
Found 11 items
drwxrwxrwx   - yarn   hadoop          0 2018-10-11 06:26 /app-logs
drwxr-xr-x   - hdfs   hadoop          0 2018-10-11 02:59 /apps
drwxr-xr-x   - yarn   hadoop          0 2018-10-11 02:58 /ats
drwxr-xr-x   - hdfs   hadoop          0 2018-10-11 02:58 /hdp
drwxr-xr-x   - mapred hadoop          0 2018-10-11 02:58 /mapred
drwxrwxrwx   - mapred hadoop          0 2018-10-11 02:58 /mr-history
drwxrwxrwx   - spark  hadoop          0 2018-10-11 09:02 /spark-history
drwxrwxrwx   - spark  hadoop          0 2018-10-11 09:02 /spark2-history
drwxr-xr-x   - hdfs   hadoop          0 2018-10-11 08:56 /system
drwxrwxrwx   - hdfs   hadoop          0 2018-10-11 08:51 /tmp
drwxr-xr-x   - hdfs   hadoop          0 2018-10-11 08:51 /user

或者

$ hadoop fs -ls
Found 1 items
drwx------   - hdfs hadoop          0 2018-10-11 08:51 .Trash

【注意】在HDFS中未带参数的"-ls"命名没有返回任何值,它默认返回HDFS的"home"目录下的内容。在HDFS中,没有当前目录这样一个概念,也没有cd这个命令。

  • 查看 HDFS上文件占用空间
$ hadoop fs -du -h /
128.9 K  /app-logs
12.4 K   /apps
418.2 K  /ats
892.7 M  /hdp
0        /mapred
165.0 K  /mr-history
0        /spark-history
0        /spark2-history
0        /system
31       /tmp
50.6 K   /user
$ hadoop fs -du -s -h /
893.4 M  /
  • 创建目录并上传文件
$ hadoop fs -mkdir /tmp/roy
$ echo roytest > a.txt
$ hadoop fs -put ./a.txt /tmp/roy/upload.txt

  • 检查刚创建的文件
$ hadoop fs -ls /tmp/roy
Found 1 items
-rw-r--r--   3 hdfs hadoop          8 2018-10-11 09:40 /tmp/roy/upload.txt
$ hadoop fs -cat /tmp/roy/upload.txt
roytest
  • 下载文件
$ hadoop fs -get /tmp/roy/upload.txt ./download.txt
$ cat download.txt
roytest
  • 删除刚创建的目录和文件
$ hadoop fs -rm -r /tmp/roy
18/10/11 09:45:10 INFO fs.TrashPolicyDefault: Moved: 'hdfs://dcpcluster/tmp/roy' to trash at: hdfs://dcpcluster/user/hdfs/.Trash/Current/tmp/roy
$ hadoop fs -ls /tmp/roy
ls: `/tmp/roy': No such file or directory
  • 彻底删除刚创建的文件(不放入回收站)

hdfs dfs -rm -skipTrash /path/to/file/you/want/to/remove/permanently

如果不加 -skipTrash,删除的目录会放入/user/hdfs/.Trash中。有专门的配置项来指定什么时候清空回收站。

$ hdfs dfs -rm -skipTrash /tmp/roy/new.txt
Deleted /tmp/roy/new.txt
  • 清空回收站

hdfs dfs -expunge
执行完命令后,回收站的数据不会立即被清理,而是先打了一个checkpoint。之后清除。

$ hdfs dfs -expunge
18/12/19 03:21:53 INFO fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://lab-eastasia-security-check-vm-hdp-01:8020/user/hdfs/.Trash
18/12/19 03:21:53 INFO fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://lab-eastasia-security-check-vm-hdp-01:8020/user/hdfs/.Trash
18/12/19 03:21:53 INFO fs.TrashPolicyDefault: TrashPolicyDefault#createCheckpoint for trashRoot: hdfs://lab-eastasia-security-check-vm-hdp-01:8020/user/hdfs/.Trash
18/12/19 03:21:53 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/hdfs/.Trash/181219032153
  • 查看HDFS状态

hdfs dfsadmin -report

  • 磁盘修复

hdfs fsck /

[参考文档]

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

https://segmentfault.com/a/1190000002672666

https://www.jianshu.com/p/64a92a96fe3c

相关文章

网友评论

      本文标题:HDFS 命令

      本文链接:https://www.haomeiwen.com/subject/bdtgaftx.html