Hadoop HDFS-常用运维命令

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

1. 系统管理命令

1.1 服务状态管理

# 启动/停止 HDFS 服务
start-dfs.sh        # 启动集群
stop-dfs.sh         # 停止集群

# 单独启停组件
hadoop-daemon.sh start|stop namenode   # NameNode
hadoop-daemon.sh start|stop datanode   # DataNode
hadoop-daemon.sh start|stop journalnode # JournalNode

1.2 安全模式操作

#只读不写 
hdfs dfsadmin -safemode get      # 查看安全模式状态
hdfs dfsadmin -safemode enter    # 进入安全模式
hdfs dfsadmin -safemode leave    # 退出安全模式

2. 存储空间管理

2.1 空间监控​​​​​​​

hdfs dfsadmin -report          # 查看集群存储报告
hdfs dfs -df -h /              # 查看文件系统空间使用
hdfs dfs -du -h /path          # 查看目录大小

2.2 配额管理​​​​​​​

hdfs dfsadmin -setQuota 1000 /dir  # 设置目录文件数配额
hdfs dfsadmin -clrQuota /dir       # 清除配额
hdfs dfs -count -q /dir            # 查看配额使用情况

3. 数据管理命令

3.1 文件操作​​​​​​​

hdfs dfs -ls /path            # 列出目录
hdfs dfs -mkdir -p /path      # 创建目录
hdfs dfs -put local /hdfs     # 上传文件
hdfs dfs -get /hdfs local     # 下载文件
hdfs dfs -rm -r /path         # 递归删除
hdfs dfs -cp /src /dest       # 复制文件
hdfs dfs -mv /src /dest       # 移动文件

3.2 数据平衡​​​​​​​

#触发数据迁移的磁盘空间使用率差异阈值
hdfs balancer                 # 启动数据平衡
hdfs balancer -threshold 10   # 设置平衡阈值(10%)

4. 块管理命令

4.1 块操作​​​​​​​

hdfs fsck / -files -blocks    # 检查块健康状况
hdfs dfsadmin -metasave filename  # 保存块元数据到文件
hdfs debug recoverLease -path /file -retries 3  # 恢复租约

4.2 副本管理​​​​​​​

hdfs dfs -setrep -w 2 /file   # 修改副本数(同步等待)
hdfs dfsadmin -fetchImage fsimage_backup  # 备份fsimage

5. 高可用管理

5.1 NameNode HA​​​​​​​

hdfs haadmin -getServiceState nn1   # 查看NN状态
hdfs haadmin -transitionToActive --forcemanual nn1  # 手动切换主备

5.2 JournalNode

hdfs dfs -ls journalnode://cluster1/  # 查看编辑日志

6. 安全相关命令

6.1 Kerberos 管理​​​​​​​

klist                         # 查看票据
kinit -kt keytab user@REALM   # 使用keytab认证
hdfs dfs -Ddfs.namenode.kerberos.principal=nn/_HOST@REALM -ls /  # 指定principal

6.2 ACL 管理​​​​​​​

#突破用户,组,其他
hdfs dfs -getfacl /path       # 查看ACL
hdfs dfs -setfacl -m user:alice:rwx /path  # 设置ACL

7. 运维监控命令

7.1 日志检查

​​​​​​​
# 查看NameNode日志
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log


# 查看DataNode日志
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log

7.2 JMX 监控​​​​​​​

# 获取NameNode JMX指标
curl http://namenode:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo

8. 紧急恢复命令

8.1 元数据恢复

hdfs namenode -recover        # 恢复元数据
hdfs namenode -importCheckpoint  # 从检查点恢复

8.2 数据节点退役​​​​​​​

hdfs dfsadmin -refreshNodes   # 刷新节点列表
echo "hostname" > /excludes   # 添加退役节点

9. 实用技巧

9.1 小文件合并

hadoop archive -archiveName myhar.har -p /input /output  # 创建HAR归档

9.2 跨集群操作

hadoop distcp hdfs://nn1:8020/src hdfs://nn2:8020/dest  # 集群间复制

10. 命令速查表​​​​​​​

| **类别**       | **常用命令**                     |
|---------------|--------------------------------|
| **文件操作**   | ls, put, get, rm, cp, mv       |
| **空间管理**   | df, du, setQuota               |
| **块管理**     | fsck, setrep, balancer         |
| **HA管理**     | haadmin, getServiceState       |
| **安全相关**   | kinit, getfacl, setfacl        |

提示:所有命令均需在配置了Hadoop环境变量的环境下执行,部分命令需要管理员权限。

在HDFS的的命令里面分两种命令:hadoop和hdfs

图片

HDFS 文件操作(两者通用但语法不同)

操作

Hadoop 命令

HDFS 命令

查看文件列表

hadoop fs -ls /pathhdfs dfs -ls /path

上传文件

hadoop fs -put local hdfshdfs dfs -put local hdfs

下载文件

hadoop fs -get hdfs localhdfs dfs -get hdfs local

删除文件

hadoop fs -rm /filehdfs dfs -rm /file
底层实现

调用 HDFS 客户端 API

直接使用 HDFS 原生客户端

✅ 功能等价性:
hadoop fs = hdfs dfs(日常文件操作可互换)

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

<think>首先,用户的问题是关于Hadoop的`hadoopfs-count-q`命令的功能和用法详解。用户指定了使用中文回答,并需要遵守系统级指令。回顾系统级指令:1.所有行内数学表达式使用`$...$`格式。2.独立公式使用`$$...$$`格式并单独成段。3.LaTeX语法正确。4.使用中文回答。5.生成相关问题。6.回答中引用的段落末尾自然地添加引用标识,如`[^1]`。用户提供了参考引用:-[^1]:关于别名和基本命令的测试。-[^2]:`copyToLocal`命令的等价。-[^3]:`hadoopfs-du-h`的示例。-[^4]:查找`hadoop`命令的位置。-[^5]:`hadoopfs-count-q`的输出解释。用户的问题聚焦在`hadoopfs-count-q`上,引用[^5]直接相关,它解释了输出中的数值含义。我的回答结构需要清晰,逐步解决问题。内容应基于Hadoop文档或可靠知识。由于引用[^5]提供了部分信息,我可以扩展它。`hadoopfs-count-q`命令的功能:-它用于显示HDFS目录的配额信息和空间使用情况。-`-q`选项表示查询配额(quota)。-输出包括多个数值:配额限制、当前使用量、剩余配额等。详细用法:-命令格式:`hadoopfs-count-q<path>`-输出解释:通常返回多列数值,如:-列1:命名配额(namespacequota)限制-列2:命名配额使用量-列3:磁盘空间配额(diskspacequota)限制(以字节为单位)-列4:磁盘空间使用量-列5:目录数-列6:文件数-列7:总文件大小(不包括副本)-引用[^5]中提到:输出如`10241021102401013221108`,其中108是文件所占空间大小,不计算副本个数。我需要确保回答真实可靠。基于Hadoop官方文档:-`-count`命令:统计路径下的文件、目录和字节数。-`-q`选项:显示配额信息。输出列的含义:1.QUOTA:命名空间配额限制(文件+目录数量)2.REMAINING_QUOTA:剩余命名空间配额3.SPACE_QUOTA:磁盘空间配额限制4.REMAINING_SPACE_QUOTA:剩余磁盘空间配额5.DIR_COUNT:目录数量6.FILE_COUNT:文件数量7.CONTENT_SIZE:内容大小(字节,不包括副本)在引用[^5]中,输出是`10241021102401013221108`,对应:-1024:QUOTA-1021:REMAINING_QUOTA(可能计算错误?实际应为剩余,但1024-1021=3,表示已使用3个命名空间)-10240:SPACE_QUOTA-10132:REMAINING_SPACE_QUOTA-2:DIR_COUNT-1:FILE_COUNT-108:CONTENT_SIZE回答中需要自然地添加引用标识。例如,当引用[^5]时,添加`[^5]`。生成相关问题:在回答结束后,添加"§§相关问题§§"部分,列出相关问题。回答结构:1.介绍命令功能。2.详细解释用法和输出。3.提供示例。4.总结。5.添加相关问题。由于没有数学表达式,我不需要添加LaTeX,但如果有,我会遵守规则。最终回答用中文。</think>### Hadoop fs -count -q 命令详解 `hadoop fs -count -q` 是 Hadoop 分布式文件系统(HDFS)中用于查询目录配额(quota)信息和空间使用情况的命令。它提供关键指标,帮助管理员监控存储资源的分配和利用率。下面我将逐步解释其功能、用法和输出含义,确保内容真实可靠,基于 Hadoop 官方文档和社区实践。 #### 1. **命令功能** - **核心作用**:显示指定 HDFS 路径的配额限制、当前使用量及剩余配额。配额分为两类: - **命名空间配额(Namespace Quota)**:限制目录下文件(file)和子目录(directory)的总数量。 - **磁盘空间配额(Diskspace Quota)**:限制目录下所有内容占用的总字节大小(不包括副本因子)。 - **适用场景**:管理大型集群时,防止单个目录过度占用资源,确保存储公平性。例如,监控用户目录或项目空间的使用情况[^5]。 - **与普通 `-count` 的区别**:普通 `-count` 仅统计文件/目录数量和大小(如 `hadoop fs -count /path`),而 `-q` 选项增加了配额细节查询。 #### 2. **命令格式和参数** - **基本语法**: ```bash hadoop fs -count -q <HDFS路径> ``` - `<HDFS路径>`:目标目录的完整 HDFS 路径,如 `/user/hadoop/data`。 - **输出列说明**:命令返回 7 个数值列,每列含义如下: | 列序 | 名称 | 描述 | |------|---------------------------|----------------------------------------------------------------------| | 1 | QUOTA | 命名空间配额限制(最大允许的文件+目录数量) | | 2 | REMAINING_QUOTA | 剩余命名空间配额(还可创建的文件+目录数量) | | 3 | SPACE_QUOTA | 磁盘空间配额限制(字节为单位,如 10240 表示 10KB) | | 4 | REMAINING_SPACE_QUOTA | 剩余磁盘空间配额(字节为单位) | | 5 | DIR_COUNT | 目录数量(包括子目录) | | 6 | FILE_COUNT | 文件数量 | | 7 | CONTENT_SIZE | 内容总大小(字节,**不包括副本**,即实际数据大小)[^5] | - **关键注意事项**: - **磁盘空间计算**:`CONTENT_SIZE`(第 7 列)仅计算文件原始大小,不乘以副本因子(如副本数为 3 时,HDFS 实际占用空间为 `CONTENT_SIZE * 3`)[^5]。 - **配额单位**:空间配额以字节为单位,可使用 `-h` 选项(如 `-count -q -h`)转换为易读格式(KB/MB/GB)。 - **无配额情况**:如果路径未设置配额,输出中配额列显示 `none` 或 `inf`(无限)。 #### 3. **输出示例和解析** 假设执行命令: ```bash hadoop fs -count -q /user/hadoop/project ``` 输出: ``` 1024 1021 10240 10132 2 1 108 ``` - **详细解析**: - **命名空间配额**:限制为 1024 个文件/目录(第 1 列),剩余 1021 个(第 2 列),表示已使用 3 个(例如创建了 2 目录 + 1 文件)。 - **磁盘空间配额**:限制为 10240 字节(约 10KB,第 3 列),剩余 10132 字节(第 4 列),表示已使用 108 字节(10240 - 10132)。 - **目录和文件**:目录数 `DIR_COUNT=2`(第 5 列),文件数 `FILE_COUNT=1`(第 6 列)。 - **内容大小**:所有文件总大小为 108 字节(第 7 列),这是原始数据大小,不包括副本[^5]。 #### 4. **实际应用技巧** - **监控存储健康**:定期运行此命令检查配额余量,避免目录写满导致任务失败。 ```bash # 示例:监控 /data 目录,结合 -h 可读格式 hadoop fs -count -q -h /data ``` - **调试配额问题**:如果输出中 `REMAINING_QUOTA` 或 `REMAINING_SPACE_QUOTA` 接近 0,需清理数据或调整配额。 - **与其他命令对比**: - `hadoop fs -du -h`:显示目录大小(包括副本),但不含配额信息[^3]。 - `hadoop fsadmin -setQuota`:设置配额,需先通过 `-count -q` 验证效果。 #### 5. **常见问题解答** - **问:为什么 `CONTENT_SIZE` 小于 HDFS 实际占用空间?** 答:因为 `CONTENT_SIZE` 忽略副本因子。实际占用空间 = `CONTENT_SIZE × 副本数`(默认副本数为 3)。 - **问:路径不存在或权限不足时如何处理?** 答:命令返回错误信息,如 `Path does not exist`。需确保路径正确且用户有读权限。 - **问:如何设置配额?** 答:使用 `hdfs dfsadmin -setSpaceQuota` 或 `-setQuota` 命令,例如: ```bash hdfs dfsadmin -setSpaceQuota 1G /user/hadoop # 设置磁盘空间配额为 1GB ``` #### 总结 `hadoop fs -count -q` 是 HDFS 存储管理的核心工具,通过量化配额使用情况帮助优化资源分配。输出中的 7 列数据分别对应命名空间、磁盘空间的限制与剩余量,以及目录/文件统计,其中内容大小 (`CONTENT_SIZE`) 始终不包含副本[^5]。在实际运维中,建议结合 `-h` 选项提升可读性,并定期运行以预防存储溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值