Hadoop—HDFS Shell命令

HDFS Shell命令介绍

HDFS Shell是由一系列类似Linux Shell的操作命令组成。借助这些命令,用户可以完成HDFS文件的复制、删除和查找等操作,也可以完成HDFS与Linux本地文件系统、S3文件系统等的交互。

更多可以参考hadoop官方文档:http://hadoop.apache.org/docs/

1、HDFS有关文件操作的Shell命令

一般格式如下:

$ hadoop fs [通用选项]

其中,“hadoop”是Hadoop系统在Linux系统中的主命令,它对应的程序文件位于Hadoop安装目录的bin子目录中。“fs”是子命令,表示执行文件系统操作。通用选项由HDFS文件操作命令和操作参数组成,不能省略,必须以英文减号字符“-”打头。操作对象在操作参数中指定。

例如,“hadoopfs -ls /”命令表示显示HDFS文件系统的根目录信息。在该命令中,“-ls”是HDFS的文件操作命令,功能与Linux系统中的ls命令相似。“/”是操作参数,指定操作对象为HDFS文件系统的根目录。

2、HDFS Shell帮助

1.显示所有帮助信息    $ hadoop fs –help

2.显示特定命令的帮助

若要显示某个特定Shell命令的帮助信息,则可在help命令之后添加该Shell命令。

    例如,$ hadoop fs -help ls

3、文件操作命令

在HDFS Shell命令中,有关文件的操作命令比较丰富,包括目录或文件的创建、复制、重命名、显示、查找、统计等命令。

3.1、 ls和lsr  

一般格式如下:

 hadoop fs -ls

[-d] [-h] [-R] <args>

 其中,各选项说明如下:

    -d选项: 将目录显示为普通文件(plain file)

    -h选项: 使用方便人阅读的信息单位显示文件大小,例如64.0m 表示67108864字节

    -R选项: 递归显示所有子目录的信息

    lsr功能等同于ls -R命令

3.2、mkdir命令

mkdir命令用来在指定的path中新建子目录。其中,创建位置path可采用URI格式进行指定。该命令功能与Linux系统的mkdir相同,允许一次创建多个子目录。一般格式如下:

 hadoop fs -mkdir [-p]

<paths>

其中,-p选项表示创建子目录时先检查路径是否存在,若不存在则同时创建相应的各级目录。

例如, hadoop fs -mkdir /test1 /test2

此处,若文件路径/test1不存在,则可使用  hadoop fs -mkdir -p /test1 /test2

3.3、touchz和appendToFile命令

  touchz命令与Linux的touch命令功能相同,用于创建一个空文件。appendToFile命令用于把一个或多个Linux本地的原文件的内容追加到目标文件中。2条命令的格式分别如下:

  hadoop fs -touchz URI[URI……]

  hadoop fs -appendToFile <localsrc>   <dst>

其中,<localsrc>为本地源文件,<dst>为HDFS中的目标文件。

例如: hadoop fs -touchz /test1/abc.txt

3.4、cp、mv、rm、rmdir和rmr命令

这4条命令类似Linux系统命令,表示复制文件、移动文件和删除文件。

(1) cp命令

 cp命令用于将指定URI的一个或多个源文件复制到HDFS文件系统中目标位置。该命令一般格式如下:

hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...]  <dest>

其中,各选项说明如下:

 -f选项:表示如果目标文件存在,则覆盖它。

 -p选项:表示需要保存文件属性(包括文件的时间戳、拥有者、许可权限、ACL等。)

例如,$ hadoop fs -cp file:/home/hadoop/file1  /x

(2)mv命令

 mv命令用于移动指定源文件到目标文件。当源文件和目标文件的路径相同时,该命令实质是重命名文件名。当源文件有多个文件时,目标对象必须是一个目录。该命令不允许跨越文件系统移动文件。例如,将Linux本地文件移动到HDFS中。

mv命令一般格式如下:

  hadoop fs -mv URI [URI ...] <dest>

例如:$ hadoop fs -mv /x/file1 /x/file1.txt

(3) rm、rmdir和rmr命令

 这3条命令用来删除指定URI中的文件或目录。为安全起见,执行删除操作后,被删除的文件可放入垃圾目录(trash directory)中。需要注意的是,HDFS默认情况下关闭了垃圾目录功能,用户可以在core-site.xml文件中设置fs.trash.interval配置项的值为非零值,即可启用该功能。rm命令的一般格式如下:

  hadoop fs -rm [-f] [-r |-R] [-skipTrash] URI [URI ...]

 其中,各选项说明如下:

 -f选项:表示执行删除操作时不显示提示信息,包括错误提示。

 -R或-r选项:表示删除目录,连同内部文件或子目录。

 rmdir和rmr命令用于删除目录。其中,rmdir只能删除空目录,rmr与rm–r功能相同。

3.5、cat、tail、du、dus、stat和count命令

 (1) cat、tail命令

 cat命令与Linux系统的cat类似,能够输出指定文件的全部内容;而tail命令只能显示文件的最后1KB的内容。可见,当输出对象小于1KB时,cat和tail命令效果相同。

例如:

 $ hadoop fs -cat /x/file 1.txt

 $ hadoop fs -cat file:/home/hadoop/file2

(2) du、dus命令

du命令用来显示文件或目录占用存储空间的大小,当目标对象是一个文件时,将输出该文件的长度。该命令的一般格式如下:

 hadoop fs -du [-s] [-h] URI [URI ...]

 其中,各选项说明如下:

 -s 选项:汇总输出各目标文件的总长度,而不是单个文件的汇总。

 -h选项:以便于人阅读的信息单位显示文件大小,例如MB。

dus命令用来输出各目标文件的总长度,与du -s功能相同。

例如:$ hadoop fs -du /x/y/test1/abc.txt

(3) stat命令

 stat命令支持以指定输出格式显示文件或目录的统计信息。该命令的一般格式如下:

 hadoop fs -stat [format] <path> ...

其中,[format]是一个输出格式字符串,可以包含普通字符,也可以包含%打头的格式字符,例如%b。如果是普通字符,则直接显示输出。

例如:$ hadoop fs -stat "%n '%F' %b %o %r %u:%g %y" /x/file1.txt

(4) count命令

count命令用来统计指定路径的文件数,输出的主要信息包括:目录数(DIR_COUNT)、文件个数(FILE_COUNT)、内容长度(CONTENT_SIZE)以及对象名(FILE_NAME)。该命令支持Linux通配符,例如用星号*来匹配任意不确定的多个字符。该命令的一般格式如下:

   hadoop fs -count [-h] <paths>

其中,-h选项表示以便于阅读的信息单位显示文件大小。

例如:$ hadoop fs -count file:/home/hadoop/hadoop-2*

3.6、 find、checksum和df 命令

 (1) find命令

该命令用来查找与指定表达式匹配的所有文件,以找出想要查找的文件,其一般格式如下:

  hadoop fs -find <path> ... <expression> ...

其中,path为查找目标,省略查找目标时,默认从当前目录中开始查找;expression为查找表达式,支持Linux系统的通配符,可用-name或-iname选项来定义,表示根据文件名进行匹配查找。其中,iname选项表示不区分大小写(case insensitive)。省略查找表达式时,该命令的功能等效于lsr命令,显示指定目录及其子目录的所有文件列表。

例如:$ hadoopfs -find / -name  '*.txt'

(2) checksum命令

  checksum命令用来返回指定文件的校验码信息。

例如:$ hadoop fs -checksum /x/file1.txt

(3) df命令

df命令用来显示指定文件的大小及HDFS系统剩余存储空间。该命令的一般格式如下:

hadoop fs -df [-h] URI [URI ...]

其中,-h选项使用便于阅读的方式格式化文件的大小,例如用64.0m来代替67108864。

例如:$ hadoop fs -df /x/file1.txt

4、跨文件系统的交互操作命令

1. put和 copyFromLocal命令

这2条命令都表示上传文件,即把Linux本地文件系统中的一个或多个文件复制到HDFS文件系统中。

put命令的一般格式如下: hadoop fs -put <localsrc>  <dst>

例如:$ hadoopfs -put hadoop-2.7.2.tar.gz  /test/

2. get和copyToLocal命令

这2条命令都表示下载文件,即从HDFS文件系统中复制文件到Linux本地文件系统。

get命令的一般格式如下:

 hadoop fs -get [-ignorecrc] [-crc] <src>  <localdst>

其中,-ignorecrc选项表示忽略CRC检验错误。

例如:$ hadoopfs -get /x/file1.txt  myfile.txt

3. moveFromLocal和moveToLocal命令

这2条命令提供Linux文件系统和HDFS文件系统之间的“乾坤大挪移”操作,moveFromLocal命令支持从本地将文件移动到HDFS中, moveToLocal命令则相反。

一般格式如下:

 hadoop fs -moveFromLocal <localsrc>  <dst>

 hadoop fs -moveToLocal [-crc] <src>  <dst>

不同于put和get命令,此2条命令操作结束之后原文件将不复存在。

5、权限管理操作

1. chgrp命令

该命令用于修改文件所属的组。需要注意的是,只有文件的拥有者或超级用户才能有权执行该命令操作。一般格式如下:

 hadoop fs -chgrp [-R] GROUP URI [URI ...]

其中,-R选项表示涵盖指定URI的内部所有目录和文件。

例如,执行以下操作,修改/test2目录及内部目录和文件的所属的用户组为root组:

  $hadoop fs -chgrp -R root /test2

2. chown命令

该命令用于修改文件的拥有者。需要注意的是,只有超级用户才能有权执行该命令操作。

一般格式如下:

hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

其中,-R选项的功能与chgrp命令的-R选项相同。

例如,执行以下命令,修改/test2/myfile.txt的拥有者为root用户。

   $hadoop fs -chown root /test2/myfile.txt

3. chmod命令

该命令用来修改文件的操作权限。需要注意的是,只有文件的拥有者和超级用户才能有权执行该命令操作。

一般格式如下:

  hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

其中,-R选项表示把目标URI内的所有文件和子目录的权限一起修改。

4. setrep命令

该命令用来修改一个文件的副本系数。如果目标对象是一个目录,则该命令将修改该目录及其子目录中的所有文件的副本系数。一般格式如下:

  hadoop fs -setrep [-R] [-w] <numReplicas> <path>

 其中,各选项说明如下:

 -w选项:表示请求该命令等待到副本完成之时。这可能需要很长的时间。

 -R选项:用于递归改变目录下所有文件的副本系数。

例如:$ hadoop fs -setrep 3 /test2/myfile.txt

5. truncate命令

  该命令用于强制截断文件数据为指定长度的数据块,也就是要求HDFS系统不采用默认长度(如128MB)而按指定长度值把文件数据内容重新切分。

一般格式如下:

 hadoop fs -truncate [-w] <length> <paths>

 其中,-w选项表示请求该命令等待到数据块截断完成之时。省略-w选项,由于truncate命令通常会在目标文件实际切分操作结束之前提前结束,显然目标文件将仍然处于未关闭状态,因此此时不能立即重新打开,进行追加数据操作。

例如,执行以下命令,把myfile.txt文件按10字节长度进行截断:

   $hadoop fs -truncate 10 /test2/myfile.txt

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容