HDFS常用命令[备忘]

【HDFS常用命令】

一、appendToFile:将一个或多个目标文件append到hdfs文件中,目标文件可以为本地文件或者stdin。

    使用方式:hdfs dfs -appendToFile <localFile or -> <hdfs-path or hdfs URL>

    1) ./hdfs dfs -appendToFile /data.txt /hdfs/data.txt

    2) ./hdfs dfs -appendToFile /data.txt hdfs://otherClust/hdfs/data.txt 将src文件append到其他集群的hdfs中。

    3) ./hdfs dfs -appendToFile - /hdfs/data/txt,这个命令执行之后,允许在窗体中输入字符串,Ctrl + C退出stdin,此后stdin数据将会追加到hdfs文件中。

二、cat:将hdfs文件中的数据输出在stdout(窗体)中。此命令可以在外部调用,外部程序可以从stdout中读取数据。

    使用方式:hdfs dfs -cat <hdfs-path>

三、chgrp:修改指定文件或路径的group归属。注意,当前用户必须是文件的owner或者为super-user,否则权限不足。-R参数可以指定(递归的)当前目录下所有文件的group归属

    使用方式:hdfs dfs -chgrp [-R] <group-name> <hdfs-path>

四、chmod:修改文件或目录的权限,同linux指令chmod。当前用户必须为文件或者目录的owner或者为super-user,否则权限不足。-R参数可以指定当前目录下所有文件的权限。

    先了解一下linux chmod指令:chmod [-R] <[code] | [who opcode permission]> <file or dir>;其中-R为递归的执行目录之内的所有文件。

    [code]为一个三位数字,第一位表示owner的权限,第二位表示group权限,第三位表示其他user的权限;每一位使用4(读权限)、2(写)、1(执行)三种数字表示权限,6(即4+2)表示读 + 写权限,7(即4+2+1)表示读 + 写 + 执行权限;比如777表示owner、group、其他user均具有读写和执行的权限。

    [who]即参与授权的用户,u表示owner,g表示文件所属组,o表示其他用户;[opcode]有“+”(增加权限)、“-”(删除权限)、“=”(重置权限);[permission]表示权限类型,r(读)、w(写)、x(执行)。

    例如:

    1) chmod u+x /file:给file的owner用户增加执行权限

    2) chmod 754 /file:给file的owner用户全部权限,给文件所属group为读 + 执行权限,给其他用户读权限。

    3) chmod u=rwx,g=rx,o=r /file:同2)

    4) chmod o=r /file:将其他用户的权限重置为“只读”。

    不过hdfs文件没有“执行”权限,因为设置执行权限没有意义。例如:

>./hdfs dfs -chmod u=rw,g=rw,o=r /tmp/test.txt

五、chown:修改文件的owner,只能super-user才能进行此操作。-R参数可以递归的修改目录下所有文件的owner信息。

    使用方式:hdfs dfs -chown [-R] [owner][:group] hdfs-path

    例如:

./hdfs dfs -chown super-user:group /tmp/test1.txt

六、copyFromLocal:将本地文件copy到hdfs中。-f参数表示如果hdfs路径下已经存在同名文件,是否覆盖,此命令会保留本地文件的名字,即copy之后,hdfs目录下文件名和本地文件名一样。

    使用方式:hdfs dfs -copyFromLocal [-f] <localFile> hdfs-path

七、copyToLocal:将hdfs中的文件copy到本地目录中,同时保留文件名。

    使用方式:hdfs dfs -copyToLocal [-ignorecrc] [-crc] hdfs-path <local-dir>

八、count:计算指定的path下文件目录或者文件的总数。

    使用方式:hdfs dfs -count [-q] <path>

    -count输出的列依次是:DIR_COUNT(目录、子目录的个数),FILE_COUNT(文件个数),CONTENT_SIZE(占用空间),FILE_NAME(当前path)。

    -count -q输出的列依次是:QUOTA(文件个数配额,如果为none表示没有设定),REMAINING_QUOTA(剩余配额,inf表示无限制),SPACE_QUOTA(空间大小配额),DIR_COUNT,FILE_COUNT,CONTENT_SIZE,FILE_NAME。

九、cp:同linux cp。在hdfs中copy文件。

    使用方式:hdfs dfs -cp [-f] <hdfs-file-src> <hdfs-file-dist>

十、du:展示指定文件的大小,如果为目录,则展示目录下所有文件的大小之和。

    使用方式:hdfs dfs -du [-s] [-h] <file or path>...

十一、expunge:清空垃圾箱,trash。

十二、get:从hdfs中copy文件到本地,与copyToLocal指令的不同点是get指令可以指定本地文件的名称。

    使用方式:hdfs dfs -get [-ignorecrc] [-crc] <hdfs-file-src> <local-path-filename>

十三、ls:同linux ls指令。

十四、lsr:同linux ls -R指令。

十五、mkdir:同linux mkdir指令。

    使用方式:hdfs dfs -mkdir [-p] <paths>

十六、moveFromLocal:类似于linux mv指令,将本地文件move到hdfs上,此后删除本地文件,类似于put指令。

十七、mv:同linux mv指令,将hdfs-file移动到其他目录中。

十八、put:将本地文件copy到hdfs中,也可以从stdin中读取数据并写入指定的新文件。与copyFromLocal指令的区别为put指令可以自定义hdfs目标文件的名称。

十九、rm:同linux rm命令,删除指定的文件(将文件移动到trash中),如果使用了-skipTrash,那么文件将直接删除,rm指令只能删除文件和空目录。

    使用方式:hdfs dfs -rm [-skipTrash] <file or dir>

二十、rmr:同linux rm -r命令,递归的删除指定目录下的文件,也可以使用-skipTrasn参数。

二十一、setrep:修改文件或者目录的replication个数,如果指定的为目录,则目录树下所有的文件的replication都会修改。

    使用方式:hdfs dfs -setrep [-w] <numReplicas> <file or path>

    其中-w参数表示等待备份操作结束,但这通常是个耗时的过程。

二十二、stat:获取path的stat信息,只返回了一个修改时间。

二十三、tail:同linux tail命令,展示文件最后1K的数据。-f参数可以设定浮动展示。

二十四、test:检测文件。

    使用方式:hdfs dfs -text -[ezd] <file>

    -e参数用来检测文件是否存在,-z检测文件的大小是否为0,-d参数指定的file是否为目录,如果是返回0。

二十五、text:以文本的方式展示文件内容。

    使用方式:hdfs dfs -text <hdfs-file>

二十六、touchz:创建一个空文件,类似于vi指令

    使用方式:hdfs dfs -touchz <newFile>

    如果想查看一个目录下文件的replication情况,请使用hadoop fsck指令。

相关推荐