HDFS常用操作命令详解

HDFS常用操作命令详解

HDFS(Hadoop Distributed File System)提供了丰富的Shell命令来管理分布式文件系统。这些命令与Linux Shell命令风格相似,非常易于上手。

下面我将分类介绍最常用和最重要的HDFS操作命令。

一、核心命令语法格式

几乎所有HDFS Shell命令都遵循以下格式:

hadoop fs -<command> [<args>]
# 或者(新版本中更推荐)
hdfs dfs -<command> [<args>]

hadoop fs 是一个通用接口,可以操作多种文件系统,而 hdfs dfs 是专门针对HDFS的。在纯HDFS环境中,两者可以互换,但通常使用 hdfs dfs


二、常用操作命令详解

1. 文件管理(上传、下载、复制、移动、删除)
操作命令示例说明
上传文件 (本地 -> HDFS)-put-copyFromLocalhdfs dfs -put localfile.txt /user/hadoop/将本地文件上传到HDFS指定目录
上传并验证-put -fhdfs dfs -put -f localfile.txt /user/hadoop/-f 选项表示如果目标文件已存在则覆盖
下载文件 (HDFS -> 本地)-get-copyToLocalhdfs dfs -get /user/hadoop/hdfsfile.txt .将HDFS文件下载到本地当前目录
合并下载-getmergehdfs dfs -getmerge /user/hadoop/logs/* merged-log.txt将HDFS上一个目录下的所有文件合并后下载到本地一个文件中
查看文件内容-cathdfs dfs -cat /user/hadoop/file.txt查看HDFS上文件的内容(适合小文件)
逐页查看-texthdfs dfs -text /user/hadoop/file.txt | more查看文件内容(支持压缩格式),并用more分页
复制 (HDFS内部)-cphdfs dfs -cp /path/source /path/dest在HDFS内部复制文件或目录
移动/重命名-mvhdfs dfs -mv /path/oldname /path/newname在HDFS内部移动文件或目录,也可用于重命名
删除文件-rmhdfs dfs -rm /user/hadoop/file.txt删除文件
递归删除目录-rm -rhdfs dfs -rm -r /user/hadoop/old_dir/递归删除目录及目录下的所有文件,非常常用
安全删除 (到垃圾箱)-rm -r -skipTrashhdfs dfs -rm -r -skipTrash /tmp/to_delete默认会移到垃圾箱(.Trash目录),-skipTrash会直接跳过垃圾箱永久删除,慎用!
2. 目录与列表操作
操作命令示例说明
列出目录内容-lshdfs dfs -ls /user/hadoop列出指定目录下的文件和子目录
递归列出-ls -Rhdfs dfs -ls -R /user/hadoop递归列出目录及其所有子目录的内容
创建目录-mkdirhdfs dfs -mkdir /user/hadoop/new_dir创建目录
递归创建父目录-mkdir -phdfs dfs -mkdir -p /user/hadoop/parent/child连同父目录一起创建,如果不存在的话
删除空目录-rmdirhdfs dfs -rmdir /user/hadoop/empty_dir只能删除空目录
3. 文件系统管理与信息查看
操作命令示例说明
查看磁盘使用情况-duhdfs dfs -du -h /user/hadoop查看目录/文件的大小,-h 选项以人类可读格式(K, M, G)显示
查看总空间-df -hhdfs dfs -df -h查看HDFS文件系统的总容量和剩余空间,类似于Linux的df命令
统计文件/目录数量-counthdfs dfs -count /user/hadoop输出:目录数量文件数量总大小(字节)路径
查看文件尾部-tailhdfs dfs -tail -f /user/hadoop/log.txt查看文件末尾1KB的内容,-f 选项可以动态追踪文件末尾(类似tail -f
修改副本数-setrephdfs dfs -setrep -w 3 /user/hadoop/file.txt修改文件的副本数量(例如改为3个),-w选项会等待副本数调整完成
4. 权限与所有者管理
操作命令示例说明
修改所属组-chgrphdfs dfs -chgrp hadoop /user/hadoop/file.txt修改文件/目录的所属组
修改权限-chmodhdfs dfs -chmod 755 /user/hadoop/file.txt修改文件/目录的权限(755代表rwxr-xr-x)
修改所有者-chownhdfs dfs -chown hdfs:hadoop /user/hadoop/file.txt修改文件/目录的所有者和组(格式:user:group

三、实用命令组合与技巧

  1. 管道操作:HDFS命令可以和Linux命令结合使用。

    # 查找HDFS上最近一天修改过的文件
    hdfs dfs -ls -R /data/logs | grep "^d" | awk '{print $6" "$7" "$8}' | while read line; do if [ $(date -d "$line" +%s) -gt $(date -d "1 day ago" +%s) ]; then echo "$line"; fi; done
    
    # 统计HDFS上某个目录下各文件的大小并排序
    hdfs dfs -du /data/logs | sort -n -r
    
  2. 通配符:支持 *? 等通配符。

    # 列出所有以.log结尾的文件
    hdfs dfs -ls /data/*.log
    
    # 下载2023年所有日志文件(假设文件名包含日期)
    hdfs dfs -get /data/logs/*2023* ./
    

四、注意事项

  • 路径格式:HDFS路径是绝对路径,以 / 开头。
  • 权限:操作HDFS需要相应的权限,很多操作(如创建目录)可能在默认的 /user/$USER 目录下才有权限。
  • 数据平衡:如果上传了大量数据,集群数据可能不均衡,可以使用 hdfs balancer 命令来平衡数据分布(通常由管理员执行)。
  • Web UI:除了命令行,还可以通过HDFS的Web界面(通常是http://<namenode-host>:9870)来直观地浏览文件系统、查看节点状态等。

掌握以上命令,你就能完成HDFS中90%的日常文件操作任务了。对于更高级的管理任务,如快照、配额等,则需要查阅更详细的官方文档。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值