HDFS的Shell操作

HDFS的Shell操作

HDFS是一个分布式文件系统,我们可以使用一些命令来操作HDFS集群上的文件。

例如: 文件上传、下载、移动、拷贝等操作。

HDFS的Shell操作主命令都是 hdfs dfs,其他的操作直接向后拼接即可。

创建目录
[-mkdir [-p] <path> ...]	# 在分布式文件系统上创建目录  -p,多层级创建

调用格式: hdfs dfs -mkdir (-p)  /目录
例如: 
    - hdfs dfs -mkdir /data
    - hdfs dfs -mkdir -p /data/a/b/c
上传命令
[-put [-f] [-p] [-l] <localsrc> ... <dst>]   # 将本地文件系统的文件上传到分布式文件系统

调用格式: hdfs dfs -put /本地文件  /分布式文件系统路径
注意: 直接写/是省略了文件系统的名称hdfs://ip:port
例如:
    - hdfs dfs -put /root/a.txt /data/
    - hdfs dfs -put /root/logs/* /data/

其他指令:
    [-moveFromLocal <localsrc> ... <dst>]		#将本地文件系统的文件上传到分布式文件系统
    [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
查看命令
[-ls [-d] [-h] [-R] [<path> ...]]		#查看分布式文件系统的目录里内容
调用格式: hdfs dfs -ls /

[-cat [-ignoreCrc] <src> ...]	    	#查看分布式文件系统的文件内容	
调用格式: hdfs dfs -cat /xxx.txt

[-tail [-f] <file>]						#查看分布式文件系统的文件内容	
调用格式: hdfs dfs -tail /xxx.txt
注意:默认最多查看1000行
下载命令
[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
注意:本地路径的文件夹可以不存在

[-moveToLocal <src> <localdst>]
注意:从hdfs的某个路径将数据剪切到本地,已经被遗弃了

[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]	
调用格式:同copyToLocal
合并下载
hdfs dfs [generic options] -getmerge [-nl] <src> <localdst>

调用格式: hdfs dfs -getmerge  hdfs上面的路径   本地的路径    
实例: hdfs dfs -getmerge /hadoopdata/*.xml /root/test.test
删除命令
[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
注意:如果删除文件夹需要加-r

[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
注意:必须是空文件夹,如果非空必须使用rm删除
拷贝命令
hdfs dfs [generic options] -cp [-f] [-p | -p[topax]] <src> ... <dst>

调用格式: hdfs dfs -cp /hdfs路径_1  /hdfs路径_2
实例: hdfs dfs -cp /input /input2
移动命令
hdfs dfds [generic options] -mv <src> ... <dst>   

调用格式: hdfs dfs -mv /hdfs的路径1  /hdfs的另一个路径2    
实例: hfds dfs -mv /aaa /bbb
创建空文件
hdfs dfs [generic options] -touchz <path> ...   
调用格式: hdfs dfs touchz  /hadooptest.txt
向文件中追加内容

HDFS的文件系统上的文件,不允许进行文件中的数据插入、删除、修改操作,只支持向文件的末尾追加内容

例如: 删除文件的第10行数据,在第11行插入数据,修改第12行数据等,这些都是不允许的。

[-appendToFile <localsrc> ... <dst>]

调用格式: hdfs dfs -appendToFile  本地文件  hdfs上的文件
注意: 不支持在中间随意增删改操作
修改文件权限
跟本地的操作一致, -R是让子目录或文件也进行相应的修改

[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]

实例: hdfs dfs -chmod 777 /input
修改文件副本数量
[-setrep [-R] [-w] <rep> <path> ...]

调用格式:hadoop fs -setrep  3 /   将hdfs根目录及子目录下的内容设置成3个副本
注意:当设置的副本数量与初始化时默认的副本数量不一致时,集群会作出反应,比原来多了会自动进行复制.
文件测试
hdfs dfs [generic options] -test -[defsz] <path>    

参数说明: -e:文件是否存在  存在返回0    -z:文件是否为空  为空返回0   -d:是否是路径(目录) ,是返回0
调用格式: hdfs dfs -test -d 文件 
实例: hdfs dfs -test -d /shelldata/111.txt  && echo "OK"  || echo "no"
解释: 测试当前的内容是否是文件夹 ,如果是返回ok,如果不是返回no
查看文件夹及子文件夹数量
hdfs dfs [generic options] -count [-q] [-h] <path> ...   
调用格式: hdfs dfs  -count   /hadoop
查看文件状态
hdfs dfs [generic options] -stat [format] <path> ...

命令的作用:当向hdfs上写文件时,可以通过dfs.blocksize配置项来设置文件的block的大小。这就导致了hdfs上的不同的文件block的大小是不相同的。有时候想知道hdfs上某个文件的block大小,可以预先估算一下计算的task的个数。stat的意义:可以查看文件的一些属性。
调用格式:hdfs dfs -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

注意:
1)当使用-stat命令但不指定format时,只打印创建时间,相当于%y
2)-stat 后面只跟目录,%r,%o等打印的都是0,只有文件才有副本和大小

实例:
hdfs dfs -stat %b-%n-%o-%r /input/file1
查看磁盘利用率及文件大小
[-df [-h] [<path> ...]] 查看分布式系统的磁盘使用情况
[-du [-s] [-h] <path> ...]	#查看分布式系统上当前路径下文件的情况	-h:human 以人类可读的方式显示

 更多大数据精彩内容欢迎B站搜索“千锋教育”或者扫码领取全套资料

【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值