HDFS Shell 命令实操
【摘要】 HDFS Shell 命令实操
1. 微博案例–HDFS Shell实操
1.1 案例:微博用户数据HDFS操作
- 需求:微博作为社交平台,拥有大量的用户评论数据。为了更好的分析微博用户的行为和习惯,进行精准的营销和推荐。可以将微博的用户评论数据上传到HDFS,供后续其他大规模文本、情感分析程序来处理。因为HDFS作为分布式文件存储系统,是整个大数据平台的最底层的核心。
- 目录规划
1.2 创建目录
-
命令:
hadoop fs -mkdir [-p] <path> ...
path
为待创建的目录
-p
选项的行为与Unixmkdir -p
非常相似,它会沿着路径创建父目录。
-
可以选择一个一个创建,也可以一起创建
hadoop fs -mkdir /common
hadoop fs -mkdir /workspace /warehouse /source
1.3 查看指定目录下内容
- 命令:
hadoop fs -ls [-h] [-R] [<path> ...]
path
指定目录路径
-h
人性化显示文件size
-R
递归查看指定目录及其子目录
- 两个参数也可以同时使用
hadoop fs -ls -h -R /
- 使用 -h 参数会人性化一点
1.4 上传文件到指定目录下(1)
-
命令:
hadoop fs -put [-f] [-p] <localsrc> ... <dst>
-f
覆盖目标文件(已存在下)
-p
保留访问和修改时间,所有权和权限。
localsrc
本地文件系统(客户端所在机器)
dst
目标文件系统(HDFS) -
上传
test1.csv
测试文件到root
目录下
-
创建好 HDFS 下的文件目录
hadoop fs -mkdir -p /source/weibo/star/comment_log/20210404_hadoop1/
- 把刚刚root下的
test1.cvs
文件上传到 HDFS 对应的路径下,下面两种方式都是可行的
hadoop fs -put test1.csv /source/weibo/star/comment_log/20210404_hadoop1/
或
hadoop fs -put file:///root/test1.csv
1.5 上传文件到指定目录下(2)
- 命令:
hadoop fs -moveFromLocal <localsrc> ... <dst>
- 和-put功能意义,只不过上传结束,源数据会被删除
hadoop fs -moveFromLocal test1.csv /tmp/
1.6 查看HDFS文件内容(1)
- 命令:
hadoop fs -cat <src> ...
读取指定文件全部内容,显示在标准输出控制台。
注意:对于大文件内容读取,慎重。 适合查看小文件 - 如:
hadoop fs -cat /source/weibo/star/comment_log/20210404_hadoop1/test1.csv
1.7 查看HDFS文件内容(2)
- 命令:
hadoop fs -head <file>
- 查看文件前1KB的内容。
- 如:
hadoop fs -head /source/weibo/star/comment_log/20210404_hadoop1/test1.csv
1.8 查看HDFS文件内容(3)
- 命令:
hadoop fs -tail [-f] <file>
- 查看文件最后1KB的内容
-f
选择可以动态显示文件中追加的内容。
1.9 下载HDFS文件(1)
- 命令:
hadoop fs -get [-f] [-p] <src> ... <localdst>
src
表示的的是 HDFS 路径- 下载文件到本地文件系统指定目录,
localdst
必须是目录,表示当前客户端的机器路径
-f
覆盖目标文件(已存在下)
-p
保留访问和修改时间,所有权和权限。 - 如:把
HDFS
下的/tmp/test1.csv
下载到第三台hadoop3
的root
下
hadoop fs -get /tmp/test1.csv /root
或
hadoop fs -get /tmp/test1.csv ./
./
表示的就是当前路径
1.10 合并下载HDFS文件(2)
- 命令:
hadoop fs -getmerge [-nl] [-skip-empty-file] <src> <localdst>
- 下载多个文件合并到本地文件系统的一个文件中。并且跳过空文件
-nl
选项表示在每个文件末尾添加换行符 - 案例:分别在本地文件路径下创建 三个txt文件,分别写入
1,2,3
数字
- 创建HDFS下
/tmp/small
文件夹,把三个 txt 文件上传到此路径下
- 把
/tmp/small/
下的 三个文件下载到本地合并,重命名为123.txt
文件
1.11 拷贝HDFS文件
- 命令:
hadoop fs -cp [-f] <src> ... <dst>
-f
覆盖目标文件(已存在下) - 案例:把
/tmp/test1.csv
文件拷贝到/tmp/small
路径下
hadoop fs -cp /tmp/test1.csv /tmp/small/
1.12 追加数据到HDFS文件中
- 命令:
hadoop fs -appendToFile <localsrc> ... <dst>
- 将所有给定本地文件的内容追加到给定
dst
文件。
dst
如果文件不存在,将创建该文件。
如果<localSrc>
为-,则输入为从标准输入中读取。 - 案例:在本地创建
xdr630.txt
文件,写入:this is xdr630 file.
,追加到 HDFS 上的/tmp/small/1.txt
下
hadoop fs -appendToFile xdr630.txt /tmp/small/1.txt
1.13 查看HDFS磁盘空间
- 命令:
hadoop fs -df [-h] [<path> ...]
- 显示文件系统的容量,可用空间和已用空间
hadoop fs -df -h /
1.14 查看HDFS文件使用的空间量
- 命令:
hadoop fs -du [-s] [-h] <path> ...
-s
:表示显示指定路径文件长度的汇总摘要,而不是单个文件的摘要。
-h
:选项将以“人类可读”的方式格式化文件大小
hadoop fs -du -s -h /source/weibo
1.15 HDFS数据移动操作或重命名文件的名称
- 命令:
hadoop fs -mv <src> ... <dst>
- 移动文件到指定文件夹下
- 可以使用该命令移动数据,重命名文件的名称
- 案例:把/tmp/small/test1.csv 文件移动到 HDFS 的根目录下
hadoop fs -mv /tmp/small/test1.csv /
1.16 修改HDFS文件副本个数
- 命令:
hadoop fs -setrep [-R] [-w] <rep> <path> ...
- 修改指定文件的副本个数。
-R
表示递归 修改文件夹下及其所有
-w
客户端是否等待副本修改完毕。
1.17 删除HDFS文件
- 命令:
hadoop fs -rm [-f] [-r |-R] [-skipTrash] [-safely] URI [URI ...]
- 删除文件
-R
选项以递归方式删除目录及其下的任何内容。
-r
选项等效于-R。
-skipTrash
选项将绕过垃圾桶(如果启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这很有用。 - 案例:删除 HDFS 根目录下的
test1.csv
hadoop fs -rm /test1.csv
- 成功返回0,错误返回-1。
- 递归删除:
1.18 批量删除文件
- 其实就是一个命令连续删除多个文件,如:
- 案例:删除 HDFS 上的 /tmp/small 下的三个 txt 文件。
hadoop fs -rm /tmp/small/1.txt /tmp/small/2.txt /tmp/small/3.txt
- 这里要注意的是:多个文件中的间隔一定要写完整的文件路径,不然就删除不了
1.19 递归删除文件夹
- 命令:
hadoop fs -rmr URI [URI …]
或:hadoop fs -rm -r URI [URI …]
- 递归版本的删除。
- 官方推荐使用
hadoop fs -rm -r
- 如:
hadoop fs -rmr /user/hadoop/dir
hadoop fs -rmr hdfs://host:port/user/hadoop/dir
2. HDFS其他Shell命令操作
- 目前最新版本
hadoop 3.2.2
命令官方指导文档
https://hadoop.apache.org/docs/r3.2.2/hadoop-project-dist/hadoop-common/FileSystemShell.html - 老版本HDFS中文版命令:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
- 友情提示
常见的操作自己最好能够记住,其他操作可以根据需要查询文档使用。
命令属于多用多会,孰能生巧,不用就忘。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)