HDFS Shell 命令是由一系列类似Linux Shell的命令组成的
- 1、创建文件夹
- 2、列出指定的目录或文件
- 3、新建文件
- 4、上传文件
- 5、将本地文件移动到HDFS
- 6、下载文件
- 7、查看文件
- 8、追写文件
- 9、删除目录或者文件
- 10、显示占用的磁盘空间大小
- 11、 HDFS中的文件复制
- 12、HDFS中的文件移动(改名)
- 13 、 HDFS中的文件合并后下载
操作命令是以“hdfs dfs”开头的命令。通过这些命令,用户可以完成HDFS文件的复制、删除和查找的操作。Shell命令一般格式如下:
hdfs dfs <args>
- hdfs 是Hadoop系统在linux系统中的主命令
- dfs是子命令,表示执行文件系统操作;
- args 是由HDFS文件操作命令和操作参数组成
1、创建文件夹
命令: hdfs dfs -mkdir [-p] <path>
- [-p]:表示如果父目录不存在,先创建父目录
hdfs dfs -mkdir /mydir #新建文件夹/mydir
hdfs dfs -mkdir -p /yourdir/dir1 # 新建文件夹/yourdir/mydir
2、列出指定的目录或文件
命令:hdfs dfs -ls [-d][-h][-R] <path>
- [-d] :返回path
- [-h]:h指“human-readble",表示按照人性化的单位显示文件大小,比如文件显示未10M,而不会显示1024KB
- [-R]:级联显示paths下的文件或目录
例:列出根目录下的文件或目录:hdfs dfs -ls /
3、新建文件
命令:hdfs dfs -touchz <path>
例:在mydir目录下创建大小为0的空文件input.txt
hdfs dfs -touchz /mydir/input.txt
结果如下:
4、上传文件
命令:hdfs dfs -put [-f][-p] <localsrc> <dst>
或 hdfs dfs -copyFromLocal[-f][-p][-l] <localsrc> <dst>
- put或copyFromLocal命令是将本地文件上传到HDFS
- localsrc表示本地文件的路径
- dst表示保存在HDFS上的路径
- -p:保留访问和修改时间,所有权和权限
- -f :覆盖目的地(如果已经存在)
例:将本地的data.txt 上传到HDFS的/mydir下
hdfs dfs -put data.txt /mydir
或者
hdfs dfs -copyFromLocal data.txt /mydir
5、将本地文件移动到HDFS
命令: hdfs dfs -moveFromLocal <localsrc> <dst>
- 与hdfs dfs -copyFromLocal不同的是,此命令将文件移动到HDFS后,本地的文件会被删除
hdfs dfs -moveFromLocal data.txt /mydir
6、下载文件
命令:hdfs dfs -get [-p] <src> <localdst>
或 hdfs dfs -copyToLocal [-p][-ignoreCrc][crc] <src> <localdst>
- get 或copyToLocal 命令把文件从分布式系统复制到本地
- src 表示HDFS中的文件的完整路径
- localdst 表示为要保存在本地的文件名或文件夹的路径
- -ignoreCrc:跳过对下载文件的CRC检查
- -crc为下载的文件写CRC校验和
例:将HDFS的mydir/data.txt 文件下载并保存为本地的根目录下./local_data.txt,将/mydir/data.txt文件下载到本地./目录
hdfs dfs -get /mydir/data.txt ./local_data.txt
hdfs dfs -copyToLocal /mydir/data3.txt ./
7、查看文件
命令:
hdfs dfs -cat/text[-ignoreCrc] <src>
hdfs dfs -tail [-f]<file>
- -cat :显示文件内容到stdout(标准输出(屏幕))
- -tail:将文件的最后一千字节内容显示到stdout(标准输出(屏幕))
- -ignoreCrc:跳过对下载文件的CRC检查
- -f:动态更新显示数据
例:查看/mydir/data.txt
hdfs dfs -cat /mydir/data.txt
8、追写文件
命令:hdfs dfs appendToFile <localsrc> <dst>
- 功能:追加一个文件到已经存在的文件末尾
例:将根目录下的data1.tx追加到/mydir/data.txt中
hdfs dfs -appendToFile data1.txt /mydir/data.txt
9、删除目录或者文件
命令:hdfs dfs -rm [-f][-r] <src>
- -f :如果要副除的文件不存在,不显示错误信息
- -r/R:级联删除目录下所有的文件和子目录文件
例,删除HDFS中的/mydir/data.txt文件
hdfs dfs -rm /mydir/data.txt
10、显示占用的磁盘空间大小
命令:hdfs dfs -du [-s][-h] <path>
- 功能:按字节显示指定目录所占空间大小。
- -s:显示指定目录F文件总的大小。
- -h:指"human-readble", 表示按照人性化的单位显示文件大小,比如文件显求为10MB,而不会显示10240KB。
例:显示HDFS主月录中input文件夹下所有文件的大小。命令如下。
hdfs dfs -du /mydir
11、 HDFS中的文件复制
命令: hdfs dfs -cp [-f] [-p | -p[topax]] <src> <dst>
- -f:如果目标文件存在,将强行覆益。
- -p:将保存文件的属性。
例:将HDFS中的 /mydir/data.txt 复制为 /mydir/data_copy.txt
hdfs dfs -cp /mydir/data.txt /mydir/data_copy.txt
12、HDFS中的文件移动(改名)
命令:hdfs dfs -mv <src> <dst>
例:将HDFS中的 /mydir/data1.txt 移动 (也可理解为改名)为/mydir/data0.txt
hdfs dfs -mv /mydir/data1.txt /mydir/data0.txt
13 、 HDFS中的文件合并后下载
命令: hdfs dfs -getmerge [-nl] <src> <localdst>
例:将HDFS中/mydir目录下(不包含子目录)的文件合并成merge.txt 后再下载到本地
hdfs dfs -getmerge /mydir merge.txt