HDFS常用Shell命令

微信公众号:小康新鲜事儿

基本语法:hdfs dfs 具体命令hadoop fs 具体命令(过时)

1. 查看目录

# 显示目录结构
hdfs dfs -ls <path>
# 以人性化的方式递归显示目录结构
hdfs dfs -ls -R -h <path>
# 显示根目录下内容
hdfs dfs -ls /

2. 创建目录

# 创建目录
hdfs dfs -mkdir <path> 
# 递归创建目录
hdfs dfs -mkdir -p <path> 
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -mkdir /xiaokang
[xiaokang@hadoop01 ~]$ hdfs dfs -mkdir -p /wordcount/input

3. 创建文件

#创建一个文件大小为0的文件
hdfs dfs -touchz <文件名>
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -touchz /xiaokang/aaa.txt

4. 删除操作

# 删除文件
hdfs dfs -rm <path>
# 删除空文件夹
hdfs dfs -rmdir <path>
# 递归删除目录和文件
hdfs dfs -rm -R <path> 

5. 拷贝操作

#该命令允许多个来源,但此时目标必须是一个目录
hdfs dfs -cp [-f] [-p] <src> <dst>
-f :当文件存在时,进行覆盖
-p :将权限、所属组、时间戳、ACL以及XATTR等也进行拷贝

#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -cp -f -p /xiaokang/bbb.txt /wordcount/input/bbb.txt

6. 移动操作(重命名)

#命令允许多个来源,但此时目的地需要是一个目录。跨文件系统移动文件是不允许的
hdfs dfs -mv <src> <dst>
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -mv /xiaokang /xiaokang1 /wordcount
[xiaokang@hadoop01 ~]$ hdfs dfs -mv /wordcount/xiaokang /wordcount/xiaokang_mv

7. 从本地加载文件到HDFS

# 二选一执行即可
hdfs dfs -put <localsrc> <dst>
hdfs dfs -copyFromLocal <localsrc> <dst>
-f :当文件存在时,进行覆盖
-p :将权限、所属组、时间戳、ACL以及XATTR等也进行拷贝

#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -put -f -p ~/bbb.txt /xiaokang/bbb.txt

8. 从本地剪切文件到HDFS

hdfs dfs -moveFromLocal <localsrc> <dst>
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -moveFromLocal ~/xiaokang.txt /wordcount/input

9. 从HDFS导出文件到本地

# 二选一执行即可
hadoop fs -get <src> <localdst>
hadoop fs -copyToLocal <src> <localdst>
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -get /wordcount/input/xiaokang.txt ./

10. 从HDFS剪切文件到本地(还没实现呢)

[xiaokang@hadoop01 ~]$ hdfs dfs -moveToLocal /wordcount/input/xiaokang.txt ./
moveToLocal: Option '-moveToLocal' is not implemented yet.

11. 追加一个或多个文件到已经存在的文件的末尾

hdfs dfs -appendToFile <localsrc> ... <dst>
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -appendToFile ./test_1.txt /wordcount/input/aaa.txt
[xiaokang@hadoop01 ~]$ hdfs dfs -appendToFile ./test_1.txt ./test_2.txt /wordcount/input/aaa.txt

12. 查看文件内容

# 二选一执行即可
hdfs dfs -cat <path> 
#将HDFS中文件以文本形式输出(包括zip包,jar包等形式)
hdfs dfs -text <path> 
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -cat /wordcount/input/aaa.txt
[xiaokang@hadoop01 ~]$ hdfs dfs -text /wordcount/input/aaa.txt

13. 显示文件的最后一千字节 (1kb)

hdfs dfs -tail <path> 
#和Unix中tail -f命令类似,当文件内容更新时,输出将会改变,具有实时性
hdfs dfs -tail -f <path> 
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -tail /wordcount/input/wordcount_input.txt
[xiaokang@hadoop01 root]$ hdfs dfs -tail -f /wordcount/input/wordcount_input.txt
[xiaokang@hadoop01 ~]$ hdfs dfs -appendToFile ~/test_1.txt /wordcount/input/wordcount_input.txt

14. 统计目录下各文件大小

hdfs dfs -du [-s] [-h] URI [URI ...]
-s : 显示所有文件大小总和
-h : 将以更友好的方式显示文件大小(例如 64.0m 而不是 67108864)
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -du /wordcount
55524  /wordcount/input
0      /wordcount/xiaokang1
37     /wordcount/xiaokang_mv
[xiaokang@hadoop01 ~]$ hdfs dfs -du -h /wordcount
54.2 K  /wordcount/input
0       /wordcount/xiaokang1
37      /wordcount/xiaokang_mv
[xiaokang@hadoop01 ~]$ hdfs dfs -du -h -s /wordcount
54.3 K  /wordcount

15. 合并下载多个文件

hdfs dfs -getmerge [-nl] <src> <localdst>
# 案例 将HDFS上的wordcount_input.txt和aaa.txt合并后下载到本地的当前用户家目录的merge.txt
[xiaokang@hadoop01 ~]$ hdfs dfs -getmerge /wordcount/input/wordcount_input.txt /wordcount/input/aaa.txt ~/merge.txt
-nl 在每个文件的末尾添加换行符(LineFeed)
-skip-empty-file 跳过空文件

16. 统计文件系统的可用空间

hdfs dfs -df -h /
-h : 将以更友好的方式显示文件大小(例如 64.0m 而不是 67108864)

17. 改变文件复制因子

#更改文件的复制因子。如果 path 是目录,则更改其下所有文件的复制因子
hdfs dfs -setrep [-w] <numReplicas> <path>
-w : 标志的请求,命令等待复制完成。这有可能需要很长的时间。
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -setrep 3 /wordcount/input/bbb.txt
[xiaokang@hadoop01 ~]$ hdfs dfs -setrep -w 5 /wordcount/input/bbb.txt

18. 权限控制

# 权限控制和Linux上使用方式一致
# 变更文件或目录的所属群组。 用户必须是文件的所有者或超级用户。
hdfs dfs -chgrp [-R] GROUP URI [URI ...]
# 修改文件或目录的访问权限  用户必须是文件的所有者或超级用户。
hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
# 修改文件的拥有者  用户必须是超级用户。
hdfs dfs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -chmod -R 774 /tmp
[xiaokang@hadoop01 ~]$ hdfs dfs -chown -R xiaokang:hadoopenv /tmp
[xiaokang@hadoop01 ~]$ hdfs dfs -chgrp -R test /tmp

19. 文件检测

hdfs dfs -test -[defsz] URI
-d:如果路径是目录,返回 0
-e:如果路径存在,则返回 0
-f:如果路径是文件,则返回 0
-s:如果路径不为空,则返回 0
-r:如果路径存在且授予读权限,则返回 0
-w:如果路径存在且授予写入权限,则返回 0
-z:如果文件长度为零,则返回 0
#案例
[xiaokang@hadoop01 ~]$ hdfs dfs -test -d /wordcount/xiaokang_mv && echo "true"

20. 管理HDFS集群(dfsadmin)

#返回集群状态信息
hdfs dfsadmin -report
#查看、进入和离开安全模式
hdfs dfsadmin -safemode get/enter/leave
#提前进入安全模式,将内存中的fsimage保存为一个fsimage文件,重置edits文件(前提要打开安全模式)
hdfs dfsadmin -saveNamespace
#保存datanode和块信息,存储到logs下
hdfs dfsadmin -metasave 名称.tt
#重新读取hosts和exclude文件,刷新集群节点
hdfs dfsadmin -refreshNodes
#设置文件目录配额
hdfs dfsadmin -setQuota 10 /wordcount/input

21. 其它命令(以下操作用hdfs用户)

#检查HDFS上文件和目录的健康状态、获取文件的block信息和位置信息
hdfs fsck hdfs路径
#检查并列出所有文件状态
hdfs fsck /wordcount/input/ -files
#打印文件的block列表报告
hdfs fsck /wordcount/input/aaa.txt -files -blocks
#打印文件块的位置信息
hdfs fsck /wordcount/input/aaa.txt -files -blocks -locations
#打印文件块所在的机架信息
hdfs fsck /wordcount/input/aaa.txt -files -blocks -locations -racks
#案例
[xiaokang@hadoop01 logs]$ hdfs fsck /wordcount/input/aaa.txt -files -blocks -locations -racks
Connecting to namenode via http://hadoop01:50070/fsck?ugi=xiaokang&files=1&blocks=1&locations=1&racks=1&path=%2Fwordcount%2Finput%2Faaa.txt
FSCK started by xiaokang (auth:SIMPLE) from /192.168.239.124 for path /wordcount/input/aaa.txt at Wed Feb 12 15:28:42 CST 2020
/wordcount/input/aaa.txt 348 bytes, 1 block(s):  OK
0. BP-1004851153-192.168.239.124-1581483619988:blk_1073741828_1005 len=348 repl=1 [/default-rack/192.168.239.124:50010]

Status: HEALTHY
 Total size:	348 B
 Total dirs:	0
 Total files:	1
 Total symlinks:		0
 Total blocks (validated):	1 (avg. block size 348 B)
 Minimally replicated blocks:	1 (100.0 %)
 Over-replicated blocks:	0 (0.0 %)
 Under-replicated blocks:	0 (0.0 %)
 Mis-replicated blocks:		0 (0.0 %)
 Default replication factor:	1
 Average block replication:	1.0
 Corrupt blocks:		0
 Missing replicas:		0 (0.0 %)
 Number of data-nodes:		1
 Number of racks:		1
FSCK ended at Wed Feb 12 15:28:42 CST 2020 in 3 milliseconds


The filesystem under path '/wordcount/input/aaa.txt' is HEALTHY

文件块位置:/opt/software/hadoop-2.7.7/dfs/datanode_data/current/BP-1004851153-192.168.239.124-1581483619988/current/finalized/subdir0/subdir0/

安全模式:集群启动时,自动进入安全模式,此时集群文件为只读状态;datanode死掉的数量达到了集群能接受的上限值;自动进入安全模式;datanode可用空间达到了集群能接受的上限值;自动进入安全模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值