30个常用HDFS命令总结
本文总计 2000 字,预计阅读需要 10 分钟
HDFS 是 Hadoop 生态系统的主要组成部分,这里整理了一些最常用的 HDFS 命令。
对于初学者很可能会很困惑因为hadoop操作hdfs的命令有好几个版本,比如
hadoop fs、hadoop dfs 和 hdfs dfs,这三个命令有什么区别呢?hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作)。
官方文档解释如下:
The HDFS shell is invoked by bin/hadoop dfs. All the HDFS shell commands take path URIs as arguments. The URI format is scheme://autority/path. For HDFS the scheme is hdfs, and for the local filesystem the scheme is file.
而hadoop fs 可以适应更多的系统,比如亚马逊的S3,阿里云的OSS等
The FileSystem (FS) shell is invoked by bin/hadoop fs. All the FS shell commands take path URIs as arguments. The URI format is scheme://autority/path. For HDFS the scheme is hdfs, and for the local filesystem the scheme is file. The scheme and authority are optional. If not specified, the default scheme specified in the configuration is used. An HDFS file or directory such as /parent/child can be specified as hdfs://namenodehost/parent/child or simply as /parent/child (given that your configuration is set to point to hdfs://namenodehost). Most of the commands in FS shell behave like corresponding Unix commands.?
我们看看代码:
elif [ "$COMMAND" = "datanode" ] ; then
CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode'
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"
elif [ "$COMMAND" = "fs" ] ; then
CLASS=org.apache.hadoop.fs.FsShell
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
elif [ "$COMMAND" = "dfs" ] ; then
CLASS=org.apache.hadoop.fs.FsShell
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
elif [ "$COMMAND" = "dfsadmin" ] ; then
CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
其实都是调用的org.apache.hadoop.fs.FsShell
这个类,使用那个都是可以的,我们把它当作是一个为了兼容老代码的历史遗留的问题就可以了,为了统一起见,本文中使用hadoop fs 命令为基准,进行介绍。
version——显示 Hadoop 的版本,以及附加的本地文件系统位置和编译信息。
mkdir — 如果新目录不存在,此命令用于创建新目录。如果目录存在,则会给出“文件已存在”错误。
ls — 检查 HDFS 中的文件或目录。它显示指定目录中每个文件或目录的名称、权限、所有者、大小和修改日期。
put — 将数据从本地文件系统复制到 HDFS。
我们可以从 HDFS WebUI 中进行验证。
get — 将数据从 HDFS 复制到本地文件系统。该命令与“put”命令相反。
cat — 查看 HDFS 中文件内容
mv — 将文件从一个位置移动到 HDFS 到 HDFS 中的另一个位置。
cp — 将文件从一个位置复制到 HDFS 到 HDFS 内的另一个位置。
copyFromLocal — 将数据从本地文件系统复制到 HDFS。
copyToLocal — 将数据从 HDFS 复制到本地文件系统。
moveFromLocal 、moveFromLocal 与上面的命令类似,就不详细说明了
rm — 从 HDFS 中删除/删除文件。
tail — 从 HDFS 读取文件的尾部/结尾部分。它有一个附加参数“[-f]”,用于显示附加到文件的数据。
expunge — 清空垃圾箱。
chown — 更改 HDFS 中文件或目录的用户。
chgrp — 更改 HDFS 中文件或目录的组。
setrep——改变HDFS中文件的复制因子。
这个命令比较重要,输入完成后我们使用Web UI查看一下结果:
du——检查文件或目录的磁盘使用量。
df——显示HDFS文件系统的容量、可用空间和大小。它有一个附加参数“[-h]”,可以将数据转换为人类可读的格式。
fsck — 检查 HDFS 文件系统中的文件的健康状况。
这个命令还有一些选项
touchz——在指定的目录中创建一个大小为 0 的新文件。
test——测试<HDFS path>的各种问题,结果通过退出状态进行返回。
text — 在控制台上打印 HDFS 文件的数据。
stat——提供HDFS中文件或目录的状态。
它可以提供以下格式的数据。默认情况下,它使用“%y”。
useage——显示给定命令的用法,如果没有指定,则显示所有命令。
help — 显示给定命令或所有命令的帮助(如果未指定)。
chmod — 更改文件在 HDFS 文件系统中的权限。
appendToFile — 将本地文件系统中的两个文件合并为 HDFS 文件中的一个文件。
checksum — 检查 HDFS 文件系统中文件
count — 计算特定路径的文件、目录和大小的数量。
还可以根据需要修改一些参数获得不同的结果
find——查找HDFS文件系统中的文件。
getmerge — 将目录的内容从 HDFS 合并到本地文件系统中的文件。
总结
上面总结了最常见和最常用的 HDFS 命令,希望对你有所帮助
喜欢就关注一下吧:
点个在看你最好看