菜鸟科技网

HDFS操作命令有哪些常用场景及语法?

HDFS(Hadoop Distributed File System)是Hadoop生态系统的核心组件,提供了分布式存储能力,支持大规模数据的高容错性和高吞吐量访问,掌握HDFS操作命令是进行大数据开发与管理的基础,以下从文件操作、目录管理、权限控制、集群维护等多个维度详细介绍常用命令。

HDFS操作命令有哪些常用场景及语法?-图1
(图片来源网络,侵删)

基础文件操作命令

文件上传与下载

  • hdfs dfs -put:将本地文件或目录上传到HDFS。
    示例:hdfs dfs -put /local/path /hdfs/path,支持递归上传目录(需加-r参数)。
  • hdfs dfs -get:从HDFS下载文件或目录到本地。
    示例:hdfs dfs -get /hdfs/path /local/path,递归下载需加-r
  • hdfs dfs -copyFromLocal:与put功能类似,但更强调从本地复制到HDFS。
  • hdfs dfs -copyToLocal:与get功能类似,强调从HDFS复制到本地。

文件查看与编辑

  • hdfs dfs -cat:查看HDFS文件内容,输出到控制台。
    示例:hdfs dfs -cat /hdfs/file.txt
  • hdfs dfs -text:以文本格式查看文件,支持非文本文件(如SequenceFile)。
  • hdfs dfs -tail:查看文件末尾几行(默认1000行)。
    示例:hdfs dfs -tail /hdfs/file.txt -n 500(指定行数)。
  • hdfs dfs -chmod:修改文件或目录权限。
    示例:hdfs dfs -chmod 755 /hdfs/dir(权限格式同Linux)。
  • hdfs dfs -chown:修改文件或目录所有者。
    示例:hdfs dfs -chown user:group /hdfs/file

文件删除与移动

  • hdfs dfs -rm:删除文件或空目录。
    示例:hdfs dfs -rm /hdfs/file.txt,递归删除目录需加-r
  • hdfs dfs -rm -r:强制递归删除非空目录。
  • hdfs dfs -mv:移动或重命名HDFS文件/目录。
    示例:hdfs dfs -mv /hdfs/old.txt /hdfs/new.txt

目录管理命令

目录创建与删除

  • hdfs dfs -mkdir:创建目录,支持多级目录(需加-p)。
    示例:hdfs dfs -mkdir -p /hdfs/dir1/dir2
  • hdfs dfs -ls:列出目录内容,支持-h(显示人类可读大小)和-R(递归列出)。
    示例:hdfs dfs -ls -h /hdfs

目录信息查看

  • hdfs dfs -du:显示目录或文件大小及占用空间。
    示例:hdfs dfs -du -h /hdfs/dir-s可汇总总大小。
  • hdfs dfs -count:统计目录下的文件数、目录数及总大小。
    示例:hdfs dfs -count -h /hdfs/dir

高级操作命令

文件合并与分片

  • hdfs dfs -getmerge:将HDFS目录下多个文件合并下载到本地一个文件。
    示例:hdfs dfs -getmerge /hdfs/input /local/output.txt
  • hadoop fs -setrep:设置文件副本数。
    示例:hadoop fs -setrep 3 /hdfs/file.txt(默认副本数为3)。

快照与回收站

  • hdfs dfsadmin -allowSnapshot:为目录启用快照功能。
    示例:hdfs dfsadmin -allowSnapshot /hdfs/dir
  • hdfs dfs -createSnapshot:创建目录快照。
    示例:hdfs dfs -createSnapshot /hdfs/dir snapshot1
  • hdfs dfs -expunge:清空回收站(HDFS删除的文件先进入回收站,默认保存期为有限时间)。

集群维护命令

集群状态查看

  • hdfs dfsadmin -report:显示集群整体状态,包括节点数量、磁盘使用情况等。
  • hdfs dfsadmin -fsck:检查文件完整性。
    示例:hdfs dfsadmin -fsck /hdfs/file.txt
  • hdfs dfsadmin -safemode:管理安全模式(集群启动时处于安全模式,禁止写入)。
    示例:hdfs dfsadmin -safemode leave(退出安全模式)。

数据块与节点管理

  • hdfs fsck -locations:显示文件块所在的DataNode节点。
  • hdfs dfsadmin -refreshNodes:刷新节点列表(用于新增或退役节点)。

常用命令操作示例表格

命令分类 命令格式 功能说明 示例
文件上传 hdfs dfs -put <local> <hdfs> 本地文件上传到HDFS hdfs dfs -put data.txt /input/
文件下载 hdfs dfs -get <hdfs> <local> HDFS文件下载到本地 hdfs dfs -get /input/data.txt ./
目录创建 hdfs dfs -mkdir -p <hdfs_dir> 创建多级目录 hdfs dfs -mkdir -p /user/hadoop/output
文件删除 hdfs dfs -rm -r <hdfs_path> 递归删除文件或目录 hdfs dfs -rm -r /tmp/old_data
权限修改 hdfs dfs -chmod <mode> <path> 修改文件/目录权限 hdfs dfs -chmod 644 /file.txt
副本数设置 hadoop fs -setrep <N> <path> 设置文件副本数 hadoop fs -setrep 2 /file.txt
集群状态 hdfs dfsadmin -report 查看集群节点和磁盘使用情况 hdfs dfsadmin -report

相关问答FAQs

Q1: 如何解决HDFS文件上传失败的问题?
A: 首先检查本地文件路径是否存在,HDFS目标目录是否有写入权限,以及网络连接是否正常,可通过hdfs dfs -ls验证目录权限,或使用hdfs dfsadmin -report检查集群状态,若因文件过大导致失败,可尝试分块上传或调整HDFS配置(如dfs.blocksize)。

Q2: HDFS删除文件后如何彻底释放磁盘空间?
A: HDFS删除文件后,文件会被移动到回收站(.Trash目录),等待超时(默认为6小时)后才会被彻底删除,若需立即释放空间,可执行hdfs dfs -expunge清空回收站,或直接删除回收站文件(hdfs dfs -rm -r /user/username/.Trash)。

HDFS操作命令有哪些常用场景及语法?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇