hadoop2.7文档翻译第二天

本文详细介绍了Hadoop的各种命令及其用法,包括用户命令和管理员命令,涵盖了文件系统操作、作业管理等多个方面。


第二天      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

运行一个叫做CLASSNAMEclass

 

管理员命令:

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支持的文件系统交互,例如本地文件系统,S3HFTP和其他,fs命令可以用以下的命令调用:

 bin/hadoopfs <args>

所有的文件系统命令都把URI路径作为一个参数,URI的格式为scheme://authority/path,对于HDFS来说,scheme就是hdfs,本地的文件系统scheme就是fileschemeauthority是可以省略的,如果没有声明这二个,在配置文件中的默认的将被使用,比如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

-qQUOTA,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大小写不敏感

-print

-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可以选择texthexbase64,“”表示采用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:只留下基本的usergroupotherbit表示.

-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: 只留下基本的usergroupotherbit表示.

-n name:扩展属性的名字.

-v value:扩展属性的值. Base640s hex0xtext:双引号

-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>

把文件以字符格式输出,允许文件是ziptextRecordInputStream

$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

打印出特定命令的帮助信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值