HDFS Shell是Hadoop分布式文件系统(HDFS)提供的命令行工具。LindormDFS(Lindorm底层存储,LDFS)100%兼容HDFS协议,您可以通过HDFS Shell工具交互式管理LDFS中存储的文件,例如文件查询、文件删除、文件权限管理和修改文件名称等。本文介绍通过HDFS Shell管理LDFS时的常用命令及使用示例。
环境配置
常用命令
数据上传
下表为将本地数据上传至LDFS的常用命令。
命令 | 说明 |
put | 从本地文件系统中复制单个或多个源路径到目标LDFS。也支持从标准输入中读取输入写入目标LDFS。 |
copyFromLocal | 限定源路径为本地文件,其他功能实现和put命令相同。 |
moveFromLocal | 将文件从本地剪切到LDFS。 |
appendToFile | 从本地文件系统追加一个或多个 |
数据处理
下表为处理LDFS中数据时的常用命令。
命令 | 说明 |
cp | 将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。 |
mv | 将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。 |
chown | 改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。 |
chgrp | 改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。 |
chmod | 改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。 |
mkdir | 接受路径指定的URL作为参数,创建这些目录。其行为类似于Unix的 |
du | 显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小。 |
df | 查看文件的使用情况。 |
cat | 将路径指定文件的内容输出到stdout。 |
rm | 删除指定的文件。只删除非空目录和文件。 |
ls |
|
数据下载
从LDFS下载数据到本地的常用指令如下表所示。
命令 | 说明 |
get | 复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。 |
getmerge | 接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。 |
copyToLocal | 除了限定目标路径是一个本地文件外,和get命令类似。 |
更多命令,可以执行help命令查看。更多内容请参考Apache HDFS Shell介绍。
示例
实际使用时,请将示例代码中的${实例Id}
替换为Lindorm实例ID。
查询目录下面的文件。
${HADOOP_HOME}/bin/hadoop fs -ls hdfs://${实例ID}/
上传文件。
${HADOOP_HOME}/bin/hadoop fs -put test.txt hdfs://${实例ID}/
下载文件至本地。
${HADOOP_HOME}/bin/hadoop fs -get hdfs://${实例ID}/${filename}
其中,
${filename}
为需要下载的文件名。删除文件。
${HADOOP_HOME}/bin/hadoop fs -rm hdfs://${实例ID}/${filename}
其中,
${filename}
为需要下载的文件名。说明使用上述示例删除文件时,文件会被移动至
Trash
目录下,不会被真正清除。如需彻底清除,请执行hadoop fs -expunge命令,即清空回收站。