文章目录
一、HDFS的Shell
HDFS是一个分布式文件系统,我们可以使用一些命令来操作HDFS集群上的文件。例如文件上传、下载、移动、拷贝等操作。
HDFS的Shell操作主命令都是hdfs dfs ,其他的操作直接向后拼接即可。
二、Shell操作
1.创建目录
-[-mkdir [-p]
调用格式:hdfs dfs -mkdir (-p)/目录
例如:
hdfs dfs -mkdir /data
hdfs dfs-mkdir -p /data/a/b/c
2.上传命令
#将本机系统文件上传至分布式文件系统
[-put [-f ] [-p] [-l] <本地文件夹或文件路径> <上传到hdfs的文件路径>]
调用格式:hdfs dfs -put /本地文件 /分布式文件系统路径
注意 ,直接写/是忽略了文件系统的名称hdfs://ip:port
例如 :
[root@serverx ~]# hdfs dfs -put /root/a.txt /data/
#模糊搜索上传
[root@serverx ~]# hdfs dfs -put /root/logs/*.txt /data/
#从本地拷贝到hdfs上
[root@serverx ~]# hdfs dfs -copyFromLocal /root/data/a.txt /data/
#将本机文件移动到hdfs上
[root@serverx ~]# hdfs dfs -moveFromLocal /root/data/a.txt /data/
3.查看命令
#查看分布式文件系统目录里的内容;-h把文件大小以M的形式展示,默认为字节,-R递归查看
[root@serverx ~]# hdfs dfs -ls /
#查看分布式文件系统的文件内容
[root@serverx ~]# hdfs dfs -cat /a.txt
#查看分布式文件系统的文件最后几行内容;-head是查看文件开头的几行
[root@serverx ~]# hdfs dfs -tail /a.txt
4. 下载命令
#将分布式文件系统上的文件下载到本机,不写下载到哪个路径,会默认下载到当前路径
[root@serverx ~]# hdfs dfs -copyToLocal /a.txt ~/
[root@serverx ~]#hdfs dfs -get /s.txt
#将文件合并下载,例如/data目录下有2个文件file1和file2,使用该命令可以将2个文件合并到本机file文件里面
[root@serverx ~]# hdfs dfs -germerge /data/* file
5. 文件的删除
#删除文件
[root@serverx ~]# hdfs dfs -rm /a.txt
#删除文件夹
[root@serverx ~]# hdfs dfs -rm -r /data
6. 文件的拷贝
#将/data/a.txt文件拷贝到根目录下
[root@serverx ~]# hdfs dfs /data/a.txt /
#移动或更改文件名,将a.txt改为b.txt
[root@serverx ~]# hdfs dfs -mv /data/a.txt /data/b.txt
7. 创建空文件并向空文件中追加内容
#在根目录下创建一个名为file的空文件
[root@serverx ~]# hdfs dfs touchz /file
#HDFS系统文件不支持数据插入删除和修改的操作,只支持内容的追加
[root@serverx ~]# hdfs dfs -appendToFile 本地文件 hdfs上文件
8.修改文件权限
#修改文件权限
[root@serverx ~]# hdfs dfs -chmod 777 /file
#修改文件夹权限,会进行递归的修改/input文件夹下的所有文件的权限
[root@serverx ~]# hdfs dfs -chmod -R 777 /input
#修改文件的所属用户
[root@serverx ~]# hdfs dfs -chown root /file
#修改文件的所属组
[root@serverx ~]# hdfs dfs -chown :root /file
#同时修改所属用户所属组
[root@serverx ~]# hdfs dfs -chown root:root /file
9. 修改文件副本数量
#修改文件或文件夹副本数量,注意当修改文件夹时该文件夹下的所有文件的副本数量也会跟着改变
[root@serverx ~]# hdfs dfs -setrep 5 /file
10. 文件测试
主要是测试该目录是否是文件夹,是否存在等
#该目录是否是一个文件夹,如果是则输出OK,反之输出NO
[root@serverx ~]# hdfs dfs -test -d /input && echo "Ok" || echo "NO"
#查看一个文件或一个文件夹是否存在
[root@serverx ~]# hdfs dfs -test -e /input && echo "OK" || echo "NO"
#查看文件是否为空
[root@serverx ~]# hdfs dfs -test -z /input && echo "OK" || echo "NO"
11.查看磁盘的使用率
[root@serverx ~]# hdfs dfs -df -h /
总结
以上就是hdfs的shell操作