常用的HDFS Shell命令
大多数HDFS Shell命令的行为和对应的Unix Shell命令类似,主要不同之处是HDFS Shell 命令操作的是远程Hadoop服务器的文件,而Unix Shell命令操作的是本地文件。
命令 | 功能 |
---|---|
-help [cmd] | 显示命令的帮助信息 |
-ls( r )
|
显示当前目录下的所有文件 |
-du( s )
|
显示目录中所有文件的大小 |
-count [-q]
|
显示目录中文件数量 |
-mv | 移动多个文件到目标目录 |
-cp | 复制多个文件到目标目录 |
-rm( r ) | 删除文件(夹) |
-put | 本地文件复制到hdfs |
-copyFromLocal | 与put相同 |
-moveFromLocal | 本地文件移动到hdfs |
-get[-ignoreCrc] | 复制文件到本地,可忽略crc校验 |
-getmerge | 将源目录中的所有文件排序合并到一个文件中 |
-cat | 在终端显示文件内容 |
-text | 在终端显示文件内容 |
-copyToLocal [-ignoreCrc] | 复制到本地 |
-moveToLocal | 移动到本地 |
-mkdir
|
创建文件夹 |
-touchz
|
创建一个空的文件 |
部分命令的具体使用方法:
1.mkdir 创建目录
使用方法:hadoop fs -mkdir path
接收路径指定的URI作为参数,创建这些目录。其行为类似于UNIX中的mkdir命令
第一种方式
- hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
第二种方式
- hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir
2.put 上传文件
使用方法:hadoop fs -put localsrc ··· dst
从本地文件系统中复制单个或多个源路径到目标文件系统,也支持从标准输入中读取输入写入到目标文件系统,成功返回0,失败返回-1
复制单个文件
- hadoop fs -put localfile /user/hadoop/hadoopfile
复制多个文件
- hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
3.ls 列出文件
使用方法:hadoop fs -ls args
递归版本:hadoop fs -lsr args
#如果是文件,则按照如下的格式返回文件信息。
#文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID
#如果是目录,则返回子文件的一个列表, 就像UNIX中一样。格式如下:
#目录名 dir 修改日期 修改时间 权限 用户ID 组ID
示例:
列出HDFS目录下名为‘input’的文件 返回值:成功返回0 失败返回-1
- hadoop fs -ls input
递归列出output下的子目录中的文件及目录信息
- hadoop fs -ls output
列出HDFS下的文件
- hadoop fs -ls
#注意:在HDFS中未带参数的“ls”命令没有返回值,它默认返回HDFS的“home”目录下的内容。在HDFS中,没有当前目录./这样的概念,也没有cd这个命令。
4.cat 将文件内容显示到stdout
使用方法:hadoop fs -cat URI [URI···]
显示input目录下的所有文件内容
- hadoop fs -cat input/*
5.get 将hdfs文件复制到本地文件系统
使用方法:hadoop fs -get [-ignorecrc] [crc] src localsrc
-ignorecrc选项复制CRC1校验失败的文件,使用-crc选项复制文件以及CRC信息。
- hadoop fs -get ini IN1
- hadoop fs -get /user/hadoop/file localfile
- hadoop fs -get hdfs://host:port/user/hadoop/file localfile
成功返回0.失败返回-1
6.rm 删除文件或非空目录
使用方法:hadoop fs rm URI [URI···]
删除指定非空目录dir
- hadoop fs -rm /user/hadoop/dir
删除指定文件file
- hadoop fs -rm /user/hadoop/file
递归删除目录dir下的子目录及其所有文件
- hadoop fs -rmr /user/hadoop/file
7.chgrp 改变文件所属的组
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI···]
命令的使用者必须是文件的所有者或root用户
8.chmod 改变文件的权限
hadoop fs -chmod [-R] <MODE[,MODE]···|OCTALMODE> URI [URI···]
命令的使用者必须是文件的所有者或root用户
9.copyFromLocal 复制本地文件到hdfs,与put命令类似
使用方法:hadoop fs -copyFromLocal URI
10.copyToLocal 复制hdfs文件到本地,与get命令类似
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI
11.cp 复制文件
使用方法:hadoop fs -cp URI [URI···]
将文件从源路径复制到目标路径。允许有多个源路径,但此时目标路径必须是一个目录
- hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
- hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
返回值:成功返回0,失败返回-1
12.du 显示目录属性
使用方法:hadoop fs -du URI [URI···]
显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小
- hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1
- hdfs://host:port/user/hadoop/dir1
13.expunge 清空回收站
使用方法:hadoop fs -expunge
可参考HDFS设计文档以获取更多关于回收站特性的信息。
14.getmerge
使用方法:hadoop fs -getmerge [addnl]
将源目录中的所有文件排序合并到一个本地文件中。addnl是可选的,用于指定在每个文件结尾添加一个换行符
15.mv 移动文件
使用方法:hadoop fs -mv URI [URI···]
将文件从源路径移动到目标路径。这个命令允许有多个源路径,但此时目标路径必须是一个目录,。不允许在不同的文件系统移动文件
- hadoop fs -mv /user/hadoop/file1 /user/hadoop/dir
16.setrep 改变一个文件的副本系数
使用方法:hadoop fs -setrep [-R] path
- hadoop fs -setrep -w 3 -R /user/hadoop/dir
17.stat 返回指定路径的统计信息
使用方法:hadoop fs -stat path
18.tail 在stdout中输出文件尾部1KB的内容
使用方法:hadoop fs -tail pathname
包含返回值
19.test 检查文件或目录
使用方法:hadoop fs -test -[ezd] URI
选项说明:
-e:检查文件是否存在。存在返回0
-z:检查文件容量是否为0。是返回0
-d:检查目录是否存在。是返回1,否则返回0
- hadoop fs -e filename
20.text 将源文件输出为文本格式
使用方法:hadoop fs -text src
允许的格式为:zip和TextRecordInputStream
21.touchz 创建一个空文件
使用方法:hadoop fs -touchz URI [URI···]
- hadoop fs -touchz pathname
返回值:成功返回0,失败返回-1
Hadoop 系统管理命令
命令 | 功能 |
---|---|
hadoop version | 查看Hadoop版本 |
sbin/start-all.sh | 启动Hadoop所有进程 |
sbin/stop-all.sh | 停止Hadoop所有进程 |
bin/hadoop namenode -format | 格式化一个新的分布式文件系统 |
sbin/start-dfs.sh | 在分配的Namenode上,启动HDFS |
sbin/stop-dfs.sh | 在分配的Namenode上,停止HDFS |
sbin/start-yarn.sh | 启动yarn |
sbin/stop-yarn.sh | 停止yarn |
Hadoop常用端口号
端口名称 | Hadoop2.X | Hadoop3.X |
---|---|---|
NameNode 内部通信端口 | 8020 / 9000 | 8020 / 9000/9820 |
NameNode HTTP UI | 50070 | 9870 |
MapReduce 查看执行任务端口 | 8088 | 8088 |
历史服务器通信端口 | 19888 | 19888 |
Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息
Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息
Web 端查看 JobHistory
(a)浏览器中输入:
http://hadoop102:19888/jobhistory
-
HDFS客户端软件实现了对HDFS文件内容的校验和(checksum)检查。当客户端创建一个新的HDFS文件时,会计算这个文件每个数据块的校验和,并将校验和作为一个单独的隐藏文件保存在同一个HDFS名字空间下。当用户读取文件内容时,会校验从Datanode获取的数据以及相应的校验和与文件中的检验和是否匹配,如果不匹配,客户端可以选择从其他的Datanode中获取该数据块的副本。 ↩︎