提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
FS Shell 简介
FS Shell
调用文件系统(FS)Shell命令应使用 hadoop fs 的形式。
所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。
对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。
一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child,以下示例中的文件或者目录都可以表示为这两种形式。(假设你配置文件中的默认值是namenode:namenodeport)。
大多数FS Shell命令的行为和对应的Unix Shell命令类似,不同之处在于操作的是hdfs文件系统内的文件。出错信息会输出到stderr,其他信息输出到stdout。
一、主要命令
命令 | 说明 |
---|---|
hadoop fs -ls [-r ] < path > | 查看HDFS目录下的文件和子目录 |
hadoop fs -mkdir < path > | 创建HDFS目录 |
hadoop fs -rm [-r] < path > | 删除HDFS下的文件及子目录 |
hadoop fs -touchz < path > | 创建一个0字节的文件 |
hadoop fs -put /-moveFromLocal/-copyFromLocal < path > | 上传文件到HDFS |
hadoop fs -get < path > | 下载文件到HDFS |
hadoop fs -getmerge/-copyToLocal < path > | 合并文件到HDFS |
hadoop fs -mv < path > | 移动HDFS上文件 |
hadoop fs -cp < path > | 复制HDFS上文件 |
hadoop fs -cat/-text < path > | 查看HDFS上文件 |
hadoop fs -tail < path > | 查看HDFS文件最后1000个字节 |
hadoop fs -du [-s] [-h] < path > | 查看HDFS文件的空间 |
hadoop fs -stat < path > | 查看HDFS文件的创建时间 |
hadoop fs -count < path > | 计算HDFS文件数和大小 |
hadoop fs -test < path > | 检查HDFS文件 |
hadoop fs -chmod < path > | 修改HDFS文件权限 |
hadoop fs -chown < path > | 修改HDFS文件所有者和组 |
hadoop fs -chgrp < path > | 修改HDFS所属的组 |
hadoop fs -setrep < path > | 修改HDFS文件副本数 |
hadoop fs -expunge < path > | 清空回收站 |
二、使用示例
1. 查看 HDFS 文件/目录
ls
使用方法:hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ < path > …
1)查看HDFS根目录下面列表
查看目录,返回它直接子文件的一个列表,就像在Unix中一样。
目录返回列表的信息如下:目录名 修改日期 修改时间 权限 用户ID 组ID
示例:
#列出目录下的文件内容
hadoop fs -ls /
#递归列出目录、子目录及文件信息
hadoop fs -ls -r /
hadoop fs -lsr /
2)查看HDFS文件
若查看文件,则返回文件信息如下:文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID
示例:
hadoop fs -ls /user/file1
2. 创建 HDFS 目录
mkdir
使用方法:hadoop fs -mkdir [-p] < path > …
示例:
#创建单个目录
hadoop fs -mkdir -p /file1
#创建多级目录
hadoop fs -mkdir -p /file1/file2/…
3. 删除 HDFS 目录/文件
rm
使用方法:hadoop fs -rm [-f] [-r|-R] [-skipTrash] [-safely] < src > …
示例:
#删除HDFS上指定文件
hadoop fs -rm /user/file1
#递归删除HDFS文件目录及文件
hadoop fs -rmr /user/file1
#为了避免误删数据,加了一个确认
hadoop fs -rmi /user/file1
4. 创建一个0字节的文件
touchz
使用方法:hadoop fs -touchz < path > …
示例:
hadoop fs -touchz /user/file1
5. 上传文件
put : 从本地系统拷贝文件到DFS
使用方法:hadoop fs -put [-f] [-p] [-l] [-d] [-t < thread count >] < localsrc > … < dst >
moveFromLocal : 等价于hadoop fs -put
使用方法:hadoop fs -moveFromLocal [-f] [-p] [-l] [-d] < localsrc > … < dst >
copyFromLocal : 等价于hadoop fs -put
使用方法:hadoop fs -copyFromLocal [-f] [-p] [-l] [-d] [-t < thread count >] < localsrc > … < dst >
示例:
hadoop fs -put /user/file1
hadoop fs -moveFromLocal /user/file1
hadoop fs -copyFromLocal /user/file1
6. 下载文件
get : 从DFS拷贝文件到文件系统,若多个文件,则dst必须是目录
使用方法:hadoop fs -get [-f] [-p] [-ignoreCrc] [-crc] < src > … < localdst >
示例:
hadoop fs -get /user/file1
7. 合并文件
getmerge : 从DFS拷贝多个文件,合并排序为一个文件到本地文件系统
使用方法:hadoop fs -getmerge [-nl] [-skip-empty-file] < src > < localdst >
copyToLocal : 等价于hadoop fs -get
使用方法:hadoop fs -copyToLocal [-f] [-p] [-ignoreCrc] [-crc] < src > … < localdst >
示例:
hadoop fs -getmerge /user/file1
hadoop fs -copyToLocal /user/file1
8. 移动文件
mv : 将制定格式的文件move到指定的目标位置,若src为多个文件,则dst必须是目录
使用方法 : hadoop fs -mv < src > … < dst >
示例:
hadoop fs -mv /user/file1
9. 复制文件
cp : 拷贝文件到目标位置,当scr为多个文件时,dst必须是个目录。
使用方法:hadoop fs -cp [-f] [-p | -p[topax]] [-d] <
src > … < dst >
示例:
hadoop fs -cp /user/file1
10. 查看文件内容
cat
使用方法:hadoop fs -cat [-ignoreCrc] < src > …
text :将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream,如果是压缩文件会先解压再查看
使用方法:hadoop fs -text [-ignoreCrc] < src > …
示例:
hadoop fs -cat hdfs://file1
hadoop fs -text hdfs://file1
11. 查看文件尾部
tail : 将文件的最后1000字节(1k)的内容输出到stdout
使用方法:hadoop fs -tail [-f] [-s ] < file >
示例:
hadoop fs -tail /user/file1
12. 查看文件空间大小
du
使用方法 : hadoop fs -du [-s] [-h] [-v] [-x] < path > …
示例:
hadoop fs -du /user/file1
#对应路径下每个文件夹和文件的大小,文件的大小用方便阅读的形式表示,例如用64M代替67108864
hadoop fs -du -h /user/file1
#显示文件大小,s代表显示只显示总计,显示此文件大小。
hadoop fs -du -s /user/file1
hadoop fs -dus
13. 查看文件状态
stat : 当使用-stat选项但不指定format时候,只打印文件创建日期,相当于%y
使用方法 : hadoop fs -stat [format] < path > …
说明:
当向HDFS上写文件时,可以通过设置dfs.block.size配置项来设置文件的block size,这导致HDFS上不同文件的block size是不同的。有时候我们需要知道HDFS上某个文件的block size,比如想知道该该文件作为job的输入会创建几个map等。Hadoop FS Shell提供了一个-stat选项可以达到目的。
hadoop fs -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
示例:
#打印文件创建日期
hadoop fs -stat hdfs://b1/apps/summary_fz_province/hive/summary_fz_province/cdc_zxt_user_info_tmp
2022-11-02 08:35:45 #文件创建日期
#打印文件的block size和备份个数
hadoop fs -stat “%o %r” hdfs://b1/apps/summary_fz_province/hive/summary_fz_province/cdc_zxt_user_info_tmp
0 0 #block size和备份个数
14. 统计文件数和大小
count :计数文件个数及所占空间的详情
输出表格的列的含义依次为:DIR_COUNT,FILE_COUNT,CONTENT_SIZE,FILE_NAME
或者如果加了-q的话,还会列出QUOTA,REMAINING_QUOTA,SPACE_QUOTA,REMAINING_SPACE_QUOTA。
使用方法 : hadoop fs -count [-q] [-h] [-v] [-t []] [-u] [-x] [-e] < path > …
示例:
hadoop fs -count [-q] hdfs://b1/apps/file1
15. 检查文件
test
使用方法 : hadoop fs -test -[defswrz] < path >
-e 检查文件是否存在,如果存在返回为0
-z 检查文件是0字节,如果是则返回0
-d 如果路径是个目录,则返回1,否则返回0
示例:
hadoop fs -test -e hdfs://b1/apps/file1
16. 修改文件权限
chmod : 改变文件的权限,使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。
使用方法 : hadoop fs -chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…
17. 修改文件的所有者和组
chown:改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。
使用方法 : hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH…
18. 修改文件目录的属组
chgrp : 改变文件所属的组,使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。等价于-chown … GROUP …。
使用方法 : hadoop fs -chgrp [-R] GROUP PATH…
19. 修改文件的副本系数
setrep : 设置文件的备份级别。-R标志控制是否递归设置子目录及文件。
使用方法 : hadoop fs -setrep [-R] [-w]
…
示例:
#查看副本数
hadoop fs -ls hdfs://b1/apps/file
-rw-r–r-- 3 root analy 29318252 2022-11-02 16:35 hdfs://b1/apps/file #第二列为副本数
#修改副本数
hadoop fs -setrep -w 2 -R hdfs://b1/apps/file1
#再次查看副本数,变成2
hadoop fs -ls hdfs://b1/apps/file
-rw-r–r-- 2 root analy 29318252 2022-11-02 16:35 hdfs://b1/apps/file #第二列为副本数
20. 清空回收站
expunge
使用方法 : hadoop fs -expunge [-immediate]
示例:
hadoop fs -expunge文章来源:https://www.toymoban.com/news/detail-761283.html
三、实际应用
实现目标:定时核查记录 hive 每天的更新时间
实现过程:
1 、找表的存储路径
一种方法通过hive命令" desc formatted table_name " 得到表的详细信息,找到表的存储路径 “Location : 'hdfs://b1/apps/analy/hive/';
另一种方法通过hive命令 "show create table table_name ",找到 "LOCATION 'hdfs://b1/apps/analy/hive/ "
2、利用 hadoop fs -ls location 第六列是表的更新时间文章来源地址https://www.toymoban.com/news/detail-761283.html
到了这里,关于Hadoop—hadoop fs 命令使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!