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指令。