Hadoop客户端指令大全
指令风格说明
Hadoop shell可以使用三种不同风格的开头来使用,其效果基本相同,分为:
hadoop fs
CDH官方邮件建议Hadoop 1.x版本使用,可以适用于除HDFS系统以外的Local FS、WebHDFS、S3 FS以及其它文件系统
hdfs dfs
CDH官方邮件建议Hadoop 2.x+版本使用,只能操作HDFS文件系统
hadoop dfs
目前仍可使用,但不赞成使用
基本格式说明
fs [–config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
其中–config:
用于设置 Hadoop 配置文件目录,默认目录为 ${HADOOP_HOME}/etc/hadoop/
COMMAND:
为各类具体命令,细分为用户命令(Hadoop集群用户的常用命令
常用如fs/dfs下的各类操作)与管理命令(Hadoop集群管理员常用的命令,如:datanode)
GENERIC_OPTIONS:
为多个命令都支持的通用选项(所谓多个命令即dfsadmin, fs, fsck和 job)
COMMAND_OPTIONS:
单独命令的额外选项
指令详情
说明:本指令大全以Hadoop CDH版本为主,主要以hadoop fs的指令风格介绍(其它同理),参考依次以官方英文文档、《Hadoop权威指南》、中文文档、国外论坛、国内论坛降低
fs开头
1.x指令
cat
功能:将路径指定文件的内容输出到stdout
返回:0成功,1失败(故可用echo $?查看返回)
使用方法:hadoop fs -cat URI [URI …]
例:hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2 可以查看HDFS的file1和file2
例:hadoop fs -cat file:///file3 /user/hadoop/file4 可以查看Linux本地文件的file3和file4
checksum
功能:查看文件的checksum信息
使用方法:hadoop fs -checksum URI
chgrp
功能:改变文件所属的组(只能由文件的所有者或者超级用户执行),使用-R将使改变在目录结构下递归进行(超级用户即运行name node进程的用户)
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …]
可选项-R:递归改变组
chmod
功能:改变文件的权限
使用方法:hadoop fs -chmod [-R] <MODE[,MODE]… | OCTALMODE> URI [URI …]
可选项-R:递归改变权限
chown
功能:改变文件的拥有者(命令的使用者必须是超级用户)
使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
可选项-R:递归改变组、拥有者
copyFromLocal
功能:从本地上传文件至文件系统
使用方法:hadoop fs -copyFromLocal URI
copyFromLocal
功能:下载至本地
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI
copyFromLocal
功能:将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录
使用方法:hadoop fs -cp URI [URI …]
例:hadoop fs -cp dir1 dir2 dir3,将会把dir1和2的文件传到dir3这个目录下
du
功能:显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小
使用方法:hadoop fs -du URI [URI …]
dus
功能:显示文件的大小(同上,过时但可用)
使用方法:hadoop fs -du URI [URI …]
expunge
功能:清空回收站(在开启回收站时,文件被删除后会进入/trash文件夹下。默认6小时后删除)
使用方法:hadoop fs -expunge
get
功能:复制文件到本地文件系统
使用方法:hadoop fs -get [-ignorecrc] [-crc]
可选项-ignorecrc:也会复制CRC校验失败的文件
-crc:复制文件以及CRC信息
getmerge
功能:将一个源目录下的所有文件合并为一个本地文件
使用方法:hadoop fs -getmerge [addnl]
help
功能:显示帮助
使用方法:hadoop fs -help
ls
功能:类似Unix ls,可对文件夹使用也可对文件使用
使用方法:hadoop fs -ls
lsr
功能:ls命令的递归版本。类似于Unix中的ls -R
使用方法:hadoop fs -lsr
mkdir
功能:接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会自动创建路径中的各级父目录
使用方法:hadoop fs -mkdir
movefromLocal
功能:将本地文件上传至hdfs,并删除本地文件
使用方法:dfs -moveFromLocal
mv
功能:1.将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件 2.文件改名
使用方法:hadoop fs -mv URI [URI …]
put
功能:从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统
使用方法:hadoop fs -put …
rm
功能:删除指定的文件。只删除非空目录和文件
使用方法:hadoop fs -rm URI [URI …]
rmr
功能:rm的递归版本
使用方法:hadoop fs -rmr URI [URI …]
setrep
功能:改变一个文件的副本系数
使用方法:hadoop fs -setrep [-R]
可选项-R:递归所有子路径副本数
stat
功能:返回指定路径的统计信息
使用方法:hadoop fs -stat URI [URI …]
tail
功能:将文件尾部1K字节的内容输出到stdout(默认显示尾部10行)
使用方法:hadoop fs -tail [-f] URI
可选项-f:根据文件描述符进行追踪,当文件改名或被删除,追踪停止
test
功能:检查文件
使用方法:hadoop fs -test -[ezd] URI
可选项-e:检查文件是否存在。如果存在则返回0
-z:检查文件是否是0字节。如果是则返回0
-d:如果路径是个目录,则返回1,否则返回0
text
功能:将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream
使用方法:hadoop fs -text
touchz
功能:创建一个0字节的空文件
使用方法:hadoop fs -touchz URI [URI …]
2.x指令
appendToFile
功能:将本地文件系统中的一个文件或多个文件添加到目标文件系统中,也可以从stdin读取input文件添加到目标文件系统中
用法:hdfs dfs -appendToFile …
count
功能:计算并显示路径或文件的路径深度、文件数、总大小
用法:hdfs dfs -count [-q] [-h]
可选项-q:会额外显示磁盘空间的信息
-h:会将大小显示易读
getfacl
功能:会显示路径的ACL(用户、所属等信息)
用法:hdfs dfs -getfattr [-R] -n name | -d [-e en]
可选项-R:递归
-n:转存拓展属性值
-d:所有和路径相关的拓展属性值都会被转存
-e:检索后编译
setfacl
功能:设置某路径的ACL(可以用来设置目录访问权限)
用法:hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec>
可选项-b:移除除基本ACL外ACL限制
-k:移除默认ACL
-R:递归
-m:修改ACL规则
-x:删除某一个ACL
setfattr
功能:设置路径的额外拓展属性
用法:hadoop fs -setfattr -n name [-v value] | -x name
可选项-n:额外属性名
-v:额外属性值
-x:移除额外属性
非fs开头
version
功能:版本信息,包含编译时间及校验码等信息
用法:hadoop version
jar
功能:运行jar文件(用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行)
用法:hadoop jar [mainClass] args…
可以附带额外的-input -output -mapper及插件-inputformat等(如-mapper myPythonScript.py即是将该python文件作为mapper)
checknative [-a | -h]
功能:检查本机hadoop和相关库的可用性,编译hadoop后用来检查
distcp
功能:分布式拷贝,用于大规模集群内部和集群之间拷贝的工具,采用Map/Reduce实现文件分发,拷贝时可用mr指令查看进程
(相对于一般的shell拷贝,shell拷贝为单线程,拷贝大量数据慢,且不支持集群拷贝)
用法:hadoop distcp dir1 dir2
(源路径和目标路径都需采用绝对路径;如dir2 不存在,则新建dir2,dir1下文件全部复制到dir2;如dir2 存在,则目录dir1被复制到dir2下,形成dir2/dir1结构)
可选项:
(distcp hadoop1.x可选项)
-p[rbugpcax]:保留源文件的一些状态
-p[rbugpcax] | 子功能 |
---|---|
b | 块大小 |
u | 用户 |
g | 组 |
p | 权限 |
c | 校验类型 |
a | ACL(访问控制) |
x | XAttr(文件系统拓展属性) |
t | 时间戳(此选项官方文档没有但部分博客有,存疑) |
(当同时指定了更新-update和-p,则只有当创建新文件时(判定条件为文件大小不同)才会将保留的状态同步过去(即不更新的文件不同步)如果指定了-pa限于acl的权限,同步过去的文件也会保留原文件权限)
-update:dir2仅更新dir2下相对dir1下发生变化的文件
-overwrite:保持同样的目录结构同时覆盖原有文件
(使用这两个指令后会改变目录结构:本来是dir2/dir1结构使用后成为dir2)
-i:1.会比没有-i保留更多日志信息,会保留失败的日志(调试重要)
2.如果一个map失败了,会继续尝试运行,不会导致整个作业失败
-log :1.记录日志信息到logdir,并将日志作为map的输出
2.如果一个map失败了,那么重新执行指令时上一个日志不会被保留
-m <num_maps>:指定了拷贝数据时map的最大数目
(如果没使用-m选项,DistCp会尝试在调度工作时指定map的数目 为 min (total_bytes / bytes.per.map, 20 * num_task_trackers), 其中bytes.per.map默认是256MB。
建议对于长时间运行或定期运行的作业,根据源和目标集群大小、拷贝数量大小以及带宽调整map的数目)
-f <urilist_uri>:从文件里获得多个原路径进行拷贝(例:adoop distcp -f srclist dir2)
(distcp hadoop2.x额外可选项)
-delete:删除dir2中有但dir1没有的文件(进垃圾站)
-strategy {dynamic|uniformsize}:复制策略(默认为un),可改变为dyn,即DynamicInputFormat 方式(有空可以开个帖子单独说说)
-bandwidth:可为每个map指定最大带宽(使用方法不明,没google到)
-atomic {-tmp <tmp_dir>}:可通过设置一个临时文件路径将传输文件添加原子性(即文件先分批存储至临时路径,最后成功组合后保存进目标路径,如未成功组合,则删除该临时路径的文件(要么全传,要么传失败什么都没有))
-mapredSslConf <ssl_conf_file>:用来指定一个hsftp 协议文件来对源文件的安全传输属性进行配置
-async:异步运行DistCp ,会跟踪Hadoop Job-id,一旦运行便退出DistCp
archive
功能:创建一个archive文档,一般用于大量小文件的目录保存,减少namenode的消耗
用法:hadoop archive -archiveName NAME *
可选项-archiveName NAME:要创建的档案的名字
例子:hadoop archive -archiveName test.har -p /foo/bar -r /user/hz
credential
功能:证书的管理
用法:hadoop credential [options]
daemonlog
功能:管理日志输出的指令,可查看日志水平或设置日志水平
用法:hadoop daemonlog -getlevel URI | -setlevel URI
classpath
功能:输出classpath
用法:hadoop classpath [–glob |–jar
可选项-glob:扩展通配符
-jar:jar文件路径
s3guard
功能:为Amazon 相关的S3A路径
trace
功能:查看和修改Hadoop的跟踪设置
trace
功能:执行名称为CLASSNAME的类
用法:hadoop CLASSNAME
key
功能:用来创建/删除Hadoop的key
用法:hadoop key [options]
dfsadmin
功能:一些管理员功能(需使用超级用户执行)
用法:hadoop dfsadmin -report | -safemode <enter | leave | get | wait>
-report:显示hdfs健康情况
-safemode <enter | leave | get | wait>:进入退出安全模式
fsck
功能:通过相关指令检查hdfs健康度
用法:hadoop fsck [-…]
fsck 用法参数 |
---|
-move 破损的文件移至/lost+found目录 |
-delete 删除破损的文件 |
-openforwrite 打印正在打开写操作的文件 |
-files 打印正在check的文件名 |
-blocks 打印block报告(需要和-files参数一起使用) |
-locations 打印每个block的位置信息(需要和-files参数一起使用) |
-racks 打印位置信息的网络拓扑图(需要和-files参数一起使用) |
job/pipes
hadoop1.x指令,已被yarn替代
hadoop3.x新增了一些指令,并且有的旧指令增加了额外可选项,有空填一填坑。。。