第二天 Hadoop命令参考
概述:
所有的hadoop命令都被bin/hadoop调用,运行hadoop脚本但是不传入参数可以打印出所有命令的描述
用法:hadoop [--config confdir] [--loglevel loglevel] [COMMAND] [GENERIC_OPTIONS][COMMAND_OPTIONS]
| FIELD | Description |
| --config confdir | 默认是${HADOOP_HOME}/conf. |
| --loglevel loglevel | 可用的是FATAL, ERROR, WARN, INFO, DEBUG, and TRACE. 默认是INFO. |
| GENERIC_OPTIONS | 多个命令都支持的选将 |
| COMMAND_OPTIONS | 具体的在其他地方有描述 |
通用选项(GEBERIC OPTIONS)
| GENERIC_OPTION | Description |
| -archives <comma separated list of archives> | 区别归档文件和其他文件. 只适用于job. |
| -conf <configuration file> | 定义应用的配置文件 |
| -D <property>=<value> | 给制定的属性赋值 |
| -files <comma separated list of files> | 定义逗号分隔的文件要被复制到mapreduce集群中. 只适用于job. |
| -jt <local> or <resourcemanager:port> | 指定一个ResourceManager. 只适用于job. |
| -libjars <comma seperated list of jars> | Specify comma separated jar files to include in the classpath. 只适用于job. |
Hadoop 通用命令
所有这些命令都是从hadoop shell中运行的,分为用户命令和管理员命令
用户命令:
$archive:创建一个hadoop archive
checknative:
用法:hadoopchecknative [-a] [-h]
| COMMAND_OPTION | Description |
| -a | 检查所有的类库都是可得到的 |
| -h | 打印帮助信息 |
$classpath:
用法:hadoopclasspath [--glob |--jar <path> |-h |--help]
| COMMAND_OPTION | Description |
| --glob | ????? 通配符 |
| --jar path | 做为jar内的清单写入classpath,名字叫path |
| -h, --help | 打印帮助信息 |
打印出能得到hadoop jar和相关的类库的class path,如果不传入参数,打印出命令脚本的classpath有可能在calsspath中包含通配符,增加的选项在通配符拓展或者在jar文件中写入classpath之后打印出classpath,后者的使用情况是通配符不能使用的环境并且classpath超过了最大的支持命令行的长度。
$credential
用法: hadoop credential <subcommand> [options]
| COMMAND_OPTION | Description |
| create alias [-provider provider-path] | 提示用户一个给存储的证书一个别名,如果没有声明provider,则使用core-site.xml中的hadoop.security.credential.provider.path |
| delete alias [-provider provider-path] [-f] | 用提供的别名删除证书,如果没有声明provider,则使用core-site.xml中的hadoop.security.credential.provider.path,如果没有-f选项则会询问是否确认删除 |
| list [-provider provider-path] | 列出所有的证书别名,如果没有声明provider,则使用core-site.xml中的hadoop.security.credential.provider.path |
管理证书提供商的证书,密码和秘密的命令
在Hadoop中的CredentialProvider API允许应用程序分离,并且他们自己决定如何存储他们的密码,为了提供一个特别的提供商类型和所在位置,用户必须提供core-site.xml中的hadoop.security.credential.provider.path或者使用上面的命令,提供商的命令是一系列以逗号分隔的URL,这些URL声明了那些需要被咨询的提供商的类型和位置,例如下面的路径:
user:///,jceks://file/tmp/test.jceks,jceks://hdfs@nn1.example.com/my/path/test.jceks
声明了当前用户的证书应该通过User Provider咨询,本地的文件/tmp/test.jceks是一个java
Key存储的提供商并且hdfs中的文件nn1.example.com/my/path/test.jceks也是一个java key存储的提供商。
当使用这个命令时,经常被用于向一个特别的证书存储提供商供应密码,-provider可以显示的声明提供商,否则,给出多个提供商的路径,第一个非短暂的提供商将要被用,这就不一定是你需要的那个提供商了。
例子:hadoop credential list -provider jceks://file/tmp/test.jceks
$distcp
递归的复制文件或者目录
$fs
当HDFS被使用时,hdfs dfs和这个命令意思相同
$hadoop
用法:hadoop jar <jar> [mainClass] args...
运行一个jar文件
用yarn jar去运行一个YARN应用
$key
通过keyprovider管理key
$trace
观察改变Hadoop的踪迹设置
$version
打印版本
$CLASSNAME
运行一个叫做CLASSNAME的class
管理员命令:
Hadoop集群的管理员有用的命令
$daemonlog
用法:
hadoop daemonlog -getlevel<host:httpport> <classname>
hadoop daemonlog -setlevel<host:httpport> <classname> <level>
hadoop daemonlog -setlevel <host:httpport><classname> <level>
| COMMAND_OPTION | Description |
| -getlevel host:httpport classname | 打印出classname的日志等级,这个命令实际上连接到 http://<host:httpport>/logLevel?log=<classname> |
| -setlevel host:httpport classname level | 设置classname的日志等级,实际上连接到 http://<host:httpport>/logLevel?log=<classname>&level=<level> |
例子: $bin/Hadoop daemonlog -setlevel 127.0.0.1:50070org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG
文件系统命令
概述:文件系统命令包含多种类似shell的命令,这些命令与HDFS和其他Hadoop支持的文件系统交互,例如本地文件系统,S3,HFTP和其他,fs命令可以用以下的命令调用:
bin/hadoopfs <args>
所有的文件系统命令都把URI路径作为一个参数,URI的格式为scheme://authority/path,对于HDFS来说,scheme就是hdfs,本地的文件系统scheme就是file,scheme和authority是可以省略的,如果没有声明这二个,在配置文件中的默认的将被使用,比如hdfs://namenodehost/parent/child可以简写为/parent/child
许多的文件系统命令的表现和unix系统的命令是相同的,每个文件的不同在以下被描述,错误信息发送到Stderr输出发送到Stdout
$appendToFile
用法:hadoop fs –appendToFile <localsrc> … <dst>
从本地文件系统附加到目的文件系统,也可以从标准输入增加到目的文件系统
•hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
•hadoop fs -appendToFile localfile1 localfile2/user/hadoop/hadoopfile
•hadoop fs -appendToFile localfilehdfs://nn.example.com/hadoop/hadoopfile
•hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile 从标准输入读取文件
Return 0表示正常,1表示错误
$cat
用法: hadoop fs -cat URI [URI ...]
显示文件(们)的内容
•hadoop fs -cat hdfs://nn1.example.com/file1hdfs://nn2.example.com/file2
•hadoop fs -cat file:///file3 /user/hadoop/file4
返回0表示正常,-1表示错误
$checksum
用法:hadoop fs -checksum URI
返回文件的验证码信息
例子:
•hadoop fs -checksum hdfs://nn1.example.com/file1
•hadoop fs -checksum file:///etc/hosts
$chgrp
用法: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 <localsrc>URI
与put命令比较像,区别在于这个命令的原文件被限制为本地文件
-f选项不管目的地址的文件是否同名,都回重写(这文档,,,这个-f在那里,,我猜应该在放在后面)
$copyToLocal
hadoop fs -copyToLocal [-ignorecrc] [-crc]URI <localdst>
与get命令比较像,区别在于这个命令的目的文件被限制为本地文件
$count
hadoop fs -count [-q] [-h] [-v]<paths>
计算path下符合特定的文件模式的目录的数量,文件的数量和字节数,输出的列为DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME
-q:QUOTA,REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT,CONTENT_SIZE, PATHNAME
-h:用人类易于读的格式显示大小
-v:打印头部信息(我的版本不支持这个选项)
例子:
•hadoop fs -count hdfs://nn1.example.com/file1hdfs://nn2.example.com/file2
•hadoop fs -count -q hdfs://nn1.example.com/file1
•hadoop fs -count -q -h hdfs://nn1.example.com/file1
•hdfs dfs -count -q -h -v hdfs://nn1.example.com/file1
返回0表示成功,返回1表示错误
$cp
hadoop fs -cp [-f] [-p | -p[topax]] URI[URI ...] <dest>
从源地址向目的地址复制文件,这个命令允许多个源文件,这种情况,目的地址必须是一个文件夹
‘raw.*’ namespace extended attributes are preserved if (1) the sourceand destination filesystems support them (HDFS only), and (2) all source anddestination pathnames are in the /.reserved/raw hierarchy. Determination ofwhether raw.* namespace xattrs are preserved is independent of the -p(preserve) flag(这段内容有点要求高)
选项:
-f:覆盖已经存在的文件
-p:保存文件属性,如果后面不放参数,将要保存时间戳,拥有关系和权限,-pa表示保存权限
Example:
•hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
•hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
返回0表示正常,返回-1表示错误
$createSnapshot
$deleteSnapshot
$df
hadoop fs -df [-h] URI [URI ...]
显示空闲的空间
-h:变成人类易读的格式
$du
hadoop fs -du [-s] [-h] URI [URI ...]
URI是文件:给出文件长度 URI是目录:给出所包含的文件的大小
选项:
-s:合并文件的长度
-h:人类易读的格式
例子:
hadoop fs -du /user/hadoop/dir1/user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1
dus:
不推荐使用了,使用上一个啊
$expunge
hadoop fs –expunge
清空垃圾箱
$find
hadoop fs -find <path> ...<expression> ...
在给定的文件夹寻找符合表达式的文件,文件夹默认为当前文件夹,表达式默认为-print
下面的表达式是被承认的:
-name pattern
-iname pattern
其中iname大小写不敏感
-print0
当前的路径名将被写在标准输出,使用后者的时候一个NULL将被加到后面(经我测试print0不换行)
下面的表达式是被承认的:
expression -a expression
expression -and expression
expression expression
他们都表示逻辑与,当二个表达式都成立时返回true(这个用不了呀)
例子:hadoop fs -find / -name test –print
$get
hadoop fs -get [-ignorecrc] [-crc]<src> <localdst>
把文件复制到本地文件系统,-crc表示复制冗余校验码
Example:
•hadoop fs -get /user/hadoop/file localfile
•hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile
$getfacl
hadoop fs -getfacl [-R] <path>
显示文件或者目录的访问控制表,如果目录有默认的访问控制表,也会显示默认的访问控制表
-R:递归的显示
例子:
hadoop fs -getfacl /file
hadoop fs -getfacl -R /dir
$getfattr
hadoop fs -getfattr [-R] -n name | -d [-een] <path>
显示一个文件或者目录的拓展的属性的名字和值
选项:
-R:递归的列出来
-n name:全部打印name的属性
-d:全部打印所有的属性
-e encoding:检索之后对他们的值进行编码,ecoding可以选择text,hex和base64,“”表示采用text,以hex编码的以0x开头,以base64编码的以0s开头
例子:
hadoop fs -getfattr -d /file
hadoop fs -getfattr -R -n user.myAttr /dir
$getmerge
hadoop fs -getmerge <src><localdst> [addnl]
把源文件和目标文件合二为一放在本地的目标文件中,addnl在每个文件的结尾增加新的一行(我实验的不成功,,,)
$help
hadoop fs -help
打印帮助信息
$ls
hadoop fs -ls [-d] [-h] [-R] [-t] [-S] [-r][-u] <args>
选项:
•-d: 目录被当作普通文件列出来
•-h: 人类可读的格式列出文件大小
•-R: 递归的列出文件
•-t: 根据时间排序
•-S: 根据文件大小排序
•-r: 逆着排序
•-u: 用访问时间排序
返回的格式如下:
permissions number_of_replicas useridgroupid filesize modification_date modification_time filename
目录下的文件默认根据文件名字排序
$mkdir
hadoop fs -mkdir [-p] <paths>
创建一个文件夹,-p表示一同创建父目录
Example:
•hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
$moveFromLocal
hadoop fs -moveFromLocal <localsrc><dst>
把文件从本地移动到目的地址
$moveToLocal
hadoop fs -moveToLocal [-crc] <src><dst>
把文件从源地址移动到目的地址
还没有实现,,,
$mv
hadoop fs -mv URI [URI ...] <dest>
从源地址移动到目的地址,源文件是多个的时候目的地址是一个文件夹,跨文件系统的移动文件是不被允许的
例子:
•hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
•hadoop fs -mv hdfs://nn.example.com/file1hdfs://nn.example.com/file2 hdfs://nn.example.com/file3hdfs://nn.example.com/dir1
$put
hadoop fs -put <localsrc> ...<dst>
从本地文件系统复制到目的文件系统,也可以从标准输入读取文件,
hadoop fs -put localfile/user/hadoop/hadoopfile
•hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
•hadoop fs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
•hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile
$rm
hadoop fs -rm [-f] [-r |-R] [-skipTrash]URI [URI ...]
删除列表里的文件
-f:不会询问是否确认删除,文件不存在也不提示错误
-R:递归的删除
-skipTrash 彻底删除文件,这个选项适合删除超配额的文件
$rmdir
hadoop fs -rmdir[--ignore-fail-on-non-empty] URI [URI ...]
删除一个文件夹
--ignore-fail-on-non-empty:目录里面存在内容的时候不会失败
hadoop fs -rmdir /user/hadoop/emptydir
$rmr
hadoop fs -rmr [-skipTrash] URI [URI ...]
$setfacl
hadoop fs -setfacl [-R] [-b |-k -m |-x<acl_spec> <path>] |[--set <acl_spec> <path>]
设置文件或者目录的访问控制表
Options:
•-b:只留下基本的user,group和other的bit表示.
•-k: 移除默认的访问控制表
•-R: 递归的应用
•-m:改变访问控制表,增加一个新的,原来的也被保留
•-x: 移除一个特别的访问控制表
•--set:完全替换现有的访问控制表. acl_spec必须包含 user, group, and others
•acl_spec: 逗号分隔的ACL实体
•path: 要改变的文件或者目录
例子:
•hadoop fs -setfacl -m user:hadoop:rw- /file
•hadoop fs -setfacl -x user:hadoop /file
•hadoop fs -setfacl -b /file
•hadoop fs -setfacl -k /dir
•hadoop fs -setfacl --setuser::rw-,user:hadoop:rw-,group::r--,other::r-- /file
•hadoop fs -setfacl -R -m user:hadoop:r-x /dir
•hadoop fs -setfacl -m default:user:hadoop:r-x /dir
$setfattr
hadoop fs -setfattr -n name [-v value] | -xname <path>
为一个文件或者目录设置一个额外的属性
选项:
•-b: 只留下基本的user,group和other的bit表示.
•-n name:扩展属性的名字.
•-v value:扩展属性的值. Base64:0s ,hex:0x,text:双引号
•-x name: 移除拓展的属性
•path: 文件或者目录
例子:
•hadoop fs -setfattr -n user.myAttr -v myValue /file
•hadoop fs -setfattr -n user.noValue /file
•hadoop fs -setfattr -x user.myAttr /file
$setrep
hadoop fs -setrep [-R] [-w]<numReplicas> <path>
改变文件的冗余份数,目录的话循环改变冗余的份数
Options:
•The -w 等待冗余操作完成,这可能要花费很长时间.
•The –R为的是向后兼容,实际上没有效果.
例子:
•hadoop fs -setrep -w 3 /user/hadoop/dir1
$stat
hadoop fs -stat [format] <path> ...
以特定的形式打印path下的文件或者目录的统计信息文件块 (%b), 类型(%F), 拥有者的组名(%g), 名字(%n), 块的大小(%o), 冗余数量(%r), 文件所有者的用户名(%u), and 修改日期(%y, %Y).%y显示的格式为日期,%Y显示的格式为毫秒数,默认为%y
$tail
hadoop fs -tail [-f] URI
打印文件的千字节(其实就是打印出内容么,,,)
-f选项当文件增加时打印出增加的数据
$test
hadoop fs -test -[defsz] URI
选项:
•-d: 是目录返回0
•-e: 存在返回0
•-f: 是文件返回0
•-s:非空返回0
•-z:0长度返回0
例子:
•hadoop fs -test -e filename
(这返不返回0都不显示呀)
$text
hadoop fs -text <src>
把文件以字符格式输出,允许文件是zip和textRecordInputStream
$touchz
hadoop fs -touchz URI [URI ...]
创建一个新的文件
例子:
•hadoop fs -touchz pathname
$truncate
hadoop fs -truncate [-w] <length><paths>
截断符合特定格式的文件到指定的长度
-w:等待文件块的恢复,不使用这个选项的话文件可能由于恢复正处于打开状态,这时不能重新打开或者添加内容
例子:
•hadoop fs -truncate 55 /user/hadoop/file1 /user/hadoop/file2
•hadoop fs -truncate -w 127 hdfs://nn1.example.com/user/hadoop/file1
$usage
hadoop fs -usage command
打印出特定命令的帮助信息
本文详细介绍了Hadoop的各种命令及其用法,包括用户命令和管理员命令,涵盖了文件系统操作、作业管理等多个方面。

被折叠的 条评论
为什么被折叠?



