菜鸟科技网

Hadoop Shell常用命令有哪些?

Hadoop Shell是Hadoop生态系统中最基础且强大的工具之一,它允许用户通过命令行与Hadoop分布式文件系统(HDFS)和YARN等组件进行交互,掌握Hadoop Shell常用命令对于Hadoop开发、运维及数据处理至关重要,以下将详细介绍Hadoop Shell中常用的命令,涵盖文件系统操作、权限管理、集群状态查看等多个方面,并通过表格形式汇总关键命令,帮助用户高效掌握。

Hadoop Shell常用命令有哪些?-图1
(图片来源网络,侵删)

Hadoop Shell命令以hadoop fshdfs dfs开头(两者功能基本一致,hdfs dfs更侧重HDFS操作),后续跟具体子命令,文件与目录管理是最常用的操作。-ls命令用于列出指定路径下的文件和目录,例如hadoop fs -ls /可查看HDFS根目录内容;-mkdir用于创建目录,支持多级目录创建,如hadoop fs -mkdir -p /user/input/data-put-copyFromLocal均用于将本地文件上传至HDFS,区别在于-put还可用于从HDFS到HDFS的复制,而-copyFromLocal仅支持本地到HDFS;-get-copyToLocal用于从HDFS下载文件到本地,-get支持下载到标准输出,-copyToLocal则更灵活;-moveFromLocal可将本地文件移动至HDFS,原文件会被删除;-mv用于在HDFS内部移动或重命名文件/目录;-cp用于复制HDFS内的文件/目录;-rm删除文件,-rm -r删除目录及其内容;-du显示文件大小,-dus汇总目录总大小;-cat查看文件内容,适用于小文件,大文件建议用-tail查看末尾内容,这些命令是日常操作的基础,熟练使用可大幅提升文件管理效率。

权限与所有权管理在多用户环境中尤为重要。-chown用于修改文件/目录的所有者,格式为hadoop fs -chown [owner][:group] path,例如hadoop fs -chown hadoop:user /data/data的所有者改为hadoop,所属组改为user-chgrp修改所属组,如hadoop fs -chgrp hadoop /data-chmod修改权限,支持八进制模式(如755)或符号模式(如u+r),例如hadoop fs -chmod 755 /dir设置目录权限为所有者可读写执行、组和其他用户可读执行,通过这些命令,可以实现对HDFS资源访问的精细化控制,确保数据安全。

HDFS的磁盘空间管理也是运维重点。-df命令用于查看HDFS整体磁盘使用情况,例如hadoop fs -df -h以人类可读格式显示各目录的剩余空间;-count统计目录下的文件数量、目录数量及占用空间,如hadoop fs -count /user可快速获取用户目录的文件统计信息。-expunge用于清空HDFS的垃圾回收站(Trash),执行后无法恢复被删除的文件,需谨慎使用。

对于HDFS的高级操作,-distcp是分布式复制工具,可实现集群间或集群内的海量数据复制,例如hadoop distcp -update -delete hdfs://cluster1/data hdfs://cluster2/backup会增量同步cluster1data目录到cluster2backup,并删除目标目录中已不存在的文件;-setrep修改文件副本数,如hadoop fs -setrep 3 /largefile将大文件副本数设置为3(默认为3,可根据集群节点数调整);-touchz创建空文件,-test测试文件是否存在(-e)、是否为文件(-f)或是否为目录(-d),例如hadoop fs -test -e /file检查文件是否存在,并返回相应退出状态码。

Hadoop Shell常用命令有哪些?-图2
(图片来源网络,侵删)

以下是常用Hadoop Shell命令的汇总表格:

命令分类 命令格式 功能描述 示例
文件/目录列表 hadoop fs -ls <path> 列出指定路径下的文件和目录 hadoop fs -ls /user
创建目录 hadoop fs -mkdir [-p] <path> 创建目录,-p支持多级目录创建 hadoop fs -mkdir -p /data/input
上传文件 hadoop fs -put <local> <hdfs> 本地文件上传至HDFS hadoop fs -put local.txt /data/
下载文件 hadoop fs -get <hdfs> <local> HDFS文件下载至本地 hadoop fs -get /data/file.txt ./
移动文件 hadoop fs -mv <src> <dst> 在HDFS内移动或重命名文件/目录 hadoop fs -mv /old /new
复制文件 hadoop fs -cp <src> <dst> 复制HDFS内的文件/目录 hadoop fs -cp /file1 /file2
删除文件 hadoop fs -rm [-r] <path> 删除文件,-r删除目录及其内容 hadoop fs -rm -r /temp
查看文件大小 hadoop fs -du [-s] <path> 显示文件大小,-s汇总目录总大小 hadoop fs -du -s /user
查看文件内容 hadoop fs -cat <file> 查看文件内容 hadoop fs -cat /data.log
修改所有者 hadoop fs -chown <owner>:<group> <path> 修改文件/目录的所有者和所属组 hadoop fs -chown user:group /file
修改权限 hadoop fs -chmod <mode> <path> 修改文件/目录权限 hadoop fs -chmod 644 /file
查看磁盘空间 hadoop fs -df [-h] <path> 查看HDFS磁盘使用情况,-h以人类可读格式显示 hadoop fs -df -h /
统计目录信息 hadoop fs -count <path> 统计目录下的文件数、目录数及占用空间 hadoop fs -count /user

在实际使用中,需要注意HDFS命令的执行效率和资源消耗,对小文件频繁执行-cat可能导致NameNode压力过大,此时可考虑使用-text命令自动识别文本格式;对大文件操作时,建议在非高峰期执行,避免影响集群性能,Hadoop Shell命令支持通配符,如hadoop fs -ls /user/*.txt可批量匹配.txt文件,提升操作灵活性。

相关问答FAQs:

  1. 问:Hadoop Shell中hadoop fshdfs dfs命令有什么区别?
    答:hadoop fs是通用文件系统命令,支持多种文件系统(如HDFS、Local FS等),而hdfs dfs是专门针对HDFS的命令,功能上两者基本一致,但hdfs dfs更明确指向HDFS操作,在实际使用中,推荐优先使用hdfs dfs,以避免与其他文件系统命令混淆。

    Hadoop Shell常用命令有哪些?-图3
    (图片来源网络,侵删)
  2. 问:如何批量删除HDFS中满足特定条件的文件(如所有.tmp文件)?
    答:可通过hadoop fs -rm命令结合通配符实现批量删除,例如执行hadoop fs -rm /data/*.tmp可删除/data目录下所有扩展名为.tmp的文件,如果需要递归删除子目录中的文件,可使用hadoop fs -rm -r /data/**/*.tmp(需Hadoop版本支持通配符),注意:删除操作不可逆,建议先通过hadoop fs -ls确认文件列表,避免误删重要数据。

分享:
扫描分享到社交APP
上一篇
下一篇