您的位置:首页 > 运维架构 > Shell

Hadoop—FS Shell

2016-02-01 10:29 645 查看
    文件系统 (FS) shell 包括各种类似的命令直接与 Hadoop Distributed File System (HDFS)交互。hadoop也支持其它文件系统,比如 Local FS, HFTP FS, S3 FS等。 FS shell命令应使用bin/hadoop fs <args>的形式。所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child(假设你配置文件中的默认值是namenode:namenodeport)。大多数FS
Shell命令的行为和对应的Unix Shell命令类似,不同之处会在下面介绍各命令使用详情时指出。出错信息会输出到stderr,其他信息输出到stdout。

    appendToFile

    用法: hadoop fs -appendToFile <localsrc> ... <dst>    添加单个src,或则多个srcs从本地文件系统到目标文件系统。从标准输入读取并追加到目标文件系统。

    hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile

    cat

    用法:hadoop fs -cat URI [URI …]    将路径指定文件的内容输出到stdout。

    hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2 

    hadoop fs -cat file:///file3 /user/hadoop/file4

    checksum

    用法:hadoop fs -checksum URI    返回文件的校验信息。

    hadoop fs -checksum hdfs://nn1.example.com/file1

    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命令, 需要指出的是这个限制是本地文件。

    copyToLocal

    用法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>    与get命令类似, 除了限定目标路径是一个本地文件外。

    count

     用法:hadoop fs -count [-q] [-h] [-v] <paths>    统计目录个数,文件和目录下文件的大小。

输出列:DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME

【目录个数,文件个数,总大小,路径名称】

输出列带有 -count -q 是: QUOTA, REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME

【配置,其余指标,空间配额,剩余空间定额,目录个数,文件个数,总大小,路径名称】

The -h 选项,size可读模式.

The -v 选项显示一个标题行。

    cp

    用法: hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>复制文件,这个命令允许复制多个文件到一个目录。

    -f 选项如果文件已经存在将会被重写.

    -p 选项保存文件属性 [topx] (timestamps, ownership, permission, ACL, XAttr). 如果指定 -p没有参数, 保存timestamps, ownership, permission. 如果指定 -pa,  保留权限 因为ACL是一个权限的超级组。确定是否保存raw命名空间属性取决于是否使用-p决定

    hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

    createSnapshot

    See
HDFS Snapshots Guide.

    delectSnapshot

    See
HDFS Snapshots Guide.

    df

    用法:用法: hadoop fs -df [-h] URI [URI ...]    显示剩余空间

    -h 选项会让人更加易读 (比如 64.0m代替 67108864)

    hadoop fs -df -h /

    du

    用法: hadoop fs -du [-s] [-h] URI [URI ...]    显示给定目录的文件大小及包含的目录,如果只有文件只显示文件的大小

    -s 选项汇总文件的长度,而不是现实单个文件.

    -h 选项显示格式更加易读

    hadoop fs -du /user/hadoop

    dus

    用法: hadoop fs -dus <args>    显示统计文件长度

    注意:这个命令已被启用, hadoop fs -du -s即可

    expunge

    用法: hadoop fs -expunge    清空垃圾回收站. 请参考HDFS Architecture Guide以获取更多关于回收站特性的信息。

    find

    用法: hadoop fs -find <path> ... <expression> ...查找与指定表达式匹配的所有文件,并将选定的操作应用于它们。如果没有指定路径,则默认查找当前目录。如果没有指定表达式默认-print。

    下面主要表达式:

-name 模式

-iname  模式

如果

值为TRUE如果文件基本名匹配模式使用标准的文件系统组合。如果使用-iname匹配不区分大小写。
-print

-print0Always

值为TRUE. 当前路径被写至标准输出。如果使用 -print0 表达式, ASCII NULL 字符是追加的.

下面操作:
expression -a expression

expression -and expression

expression expression

and运算符连接两个表达式,如果两个字表达式返回true,则返回true.由两个表达式的并置暗示,所以不需要明确指定。如果第一个失败,则不会应用第二个表达式。

    hadoop fs -find / -name test -print

    get

    用法: hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>    复制文件到本地文件。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。 

    getfacl

    用法: hadoop fs -getfacl [-R] <path>    显示访问控制列表(ACL)的文件和目录. 如果一个目录有默认的ACL,  getfacl 也显示默认的ACL.

    -R: 递归目录和列出所有文件的ACLs.

    path: 文件或目录列表。

    hadoop fs -getfacl -R /user/hadoop/

    getfattr

    用法: hadoop fs -getfattr [-R] -n name | -d [-e en] <path>    显示文件和目录扩展属性名字和值[如果有的话]

    -R: 递归显示文件和目录属性.

    -n name: Dump the named extended attribute value.

    -d: Dump all extended attribute values associated with pathname.

    -e encoding: 检索后的值进行编码。 有效的编码是 “text”, “hex”, and “base64”. 值编码作为文本字符串是用双引号括起来的(“),值编码作为16进制和64进制,前缀分别为 0x 和 0s

    path:文件或目录列表。

    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: 文件格式变为易读 (例如  67108864显示 64.0m).

    -R: 递归子目录列表中。

    -t: 按修改时间排序输出(最近一次)。

    -S: 按文件大小排序输出。

    -r: 倒序排序

    -u: 对使用时间显示和排序而不是修改时间

    如果是文件,则按照如下格式返回文件信息:文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID 

如果是目录,返回列表的信息如下:目录名 <dir> 修改日期 修改时间 权限 用户ID 组ID 

    lsr

    用法: hadoop fs -lsr <args>    ls递归

    注意: 这个命令被 弃用,替换为hadoop fs -ls -R

    mkdir

    用法: hadoop fs -mkdir [-p] <paths>    以URI的路径作为参数并创建目录。

    -p选项会创建父目录

    moveFromLocal

    用法: hadoop fs -moveFromLocal <localsrc> <dst>    类似put命令,但是它是本地源文件复制后被删除

    moveToLocal

    用法: hadoop fs -moveToLocal [-crc] <src> <dst>    显示 “Not implemented yet” 消息

    mv

    用法: hadoop fs -mv URI [URI ...] <dest>    移动文件,这个命令允许移动多个文件到某个目录

    put

    用法: hadoop fs -put <localsrc> ... <dst>    复制单个或则多个源文件到目标系统文件。从stdin读取输入并写入到目标文件系统。

    renameSnapshot

    See
HDFS Snapshots Guide.

    rm

    用法: hadoop fs -rm [-f] [-r |-R] [-skipTrash] URI [URI ...]    删除指定的参数文件。

    -f 选项 如果该文件不存在,则该选项将不显示诊断信息或修改退出状态以反映错误。

    -R选项递归删除目录下任何内容

    -r与-R效果一样-skipTrash选项绕过垃圾回收器,如果启用,将会立即删除指定文件。这是非常有用对于超过配额的目录

    rmdir

    用法: hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]    删除目录

    --ignore-fail-on-non-empty: 当使用通配符,一个目录还包含文件,不会失败.

    rmr

    用法: hadoop fs -rmr [-skipTrash] URI [URI ...]    递归删除

    说明:这个命令被弃用了,而是使用hadoop fs -rm -r

    setfacl

    用法: hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]    设置访问控制列表(ACL)的文件和目录。

    -b:移除所有除了基本的ACL条目。用户、组和其他的条目被保留为与权限位的兼容性。

    -k:删除默认的ACL。

    -R: 递归应用于所有文件和目录的操作。

    -m:修改ACL。新的项目添加到ACL,并保留现有的条目。

    -x: 删除指定的ACL条目。其他保留ACL条目。

    --set:完全替换ACL,丢弃所有现有的条目。acl_spec必须包括用户,组,和其他有权限位的兼容性。

    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 --set user::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] | -x name <path>    设置一个文件或目录的扩展属性名和值。

    -b: 移除所有的条目除了基本的ACL条目。用户、组和其他的条目被保留为与权限位的兼容性。

    -n name:扩展属性名。

    -v value:扩展属性值。有三种不同编码值,如果该参数是用双引号括起来的,则该值是引号内的字符串。如果参数是前缀0x或0X,然后作为一个十六进制数。如果参数从0或0,然后作为一个base64编码。

    -x name: 移除所有属性值

   
path: 文件或则路径

    setrep

    用法: hadoop fs -setrep [-R] [-w] <numReplicas> <path>    更改文件的备份. 如果是一个目录,会递归改变目录下文件的备份。

    -w标识,要求备份完成,这可能需要很长时间。

    -R标识,是为了兼容,没有实际效果

    hadoop fs -setrep -w 3 /user/hadoop/dir1

    stat

    用法: hadoop fs -stat [format] <path> ...    按指定格式打印文件/目录的打印统计。格式接受文件块 (%b), 类型 (%F), groutp拥有者 (%g), 名字 (%n), block size (%o), replication (%r), 用户拥有者(%u),  修改日期 (%y, %Y). %y 显示 UTC 日期如 “yyyy-MM-dd HH:mm:ss” 和 %Y 1970年1月1日以来显示毫秒UTC. 如果没有指定, 默认使用%y.

    hadoop fs -stat "%F %u:%g %b %y %n" /file

    tail

    用法: hadoop fs -tail [-f] URI    显示文件内容,最后千字节的文件发送到stdout

    - f选项将输出附加数据随着文件的增长,如同Unix

    test

    用法: hadoop fs -test -[defsz] URI

    -d:如果路径是一个目录,返回0

    -e:如果路径已经存在,返回0

    -f: 如果路径是一个文件,返回0

    -s:如果路径不是空,返回0

    -z:如果文件长度为0,返回0

    text

    用法: hadoop fs -text <src>     将一个源文件,以文本格式输出文件。允许的格式是zip和textrecordinputstream。

    touchz

    用法: hadoop fs -touchz URI [URI ...]    创建一个零长度的文件。

    truncate

    用法: hadoop fs -truncate [-w] <length> <paths>    截断指定文件模式指定的长度匹配的所有文件。

    -w 选项需要等待命令完成块恢复。如果没有-w选项,在恢复的过程中可能是未闭合的

    usage

    用法: hadoop fs -usage command    返回单个命令的帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop Shell FS Shell