Hadoop HDFS 原理与命令实战
管理员命令¶
管理员命令负责集群级运维:状态查看、安全模式、快照、配额。它们通常需要管理员/超级用户权限。准备测试文件
查看网络拓扑¶
副本放置与距离计算都依赖集群拓扑,dfsadmin -printTopology 直接打印实际机架结构。
[zhangsan@node0 ~]$ hdfs dfsadmin -printTopology
#Rack: /default-rack
# 192.168.179.101:50010 (node1)
# 192.168.179.102:50010 (node2)
# 192.168.179.103:50010 (node3)
集群基本信息¶
hdfs dfsadmin -report 汇总集群容量、各 DataNode 负载与块健康,是日常巡检第一命令。
https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#Administration_Commands
三个容量数字¶
Configured Capacity 是配置的磁盘总空间(26.46 GB,含非 HDFS 使用的部分);
Present Capacity 是 DataNode 实际能用的;
DFS Remaining 是 HDFS 还剩多少。
安全模式¶
安全模式下 HDFS 只接收 读 请求,拒绝修改/删除,常用于维护或异常恢复。
[zhangsan@node0 ~]$ hdfs dfsadmin -safemode <enter | leave | get | wait>
# enter 进入安全模式
# leave 强制退出安全模式
# get 查看当前状态
# wait 等待退出安全模式
触发阈值配置(对应 hdfs-site.xml):¶
| property | default | comment |
|---|---|---|
dfs.namenode.safemode.threshold-pct |
0.999f |
默认副本率 = 实际副本数/设置副本数 |
dfs.namenode.safemode.min.datanodes |
0 |
最少可用 DataNode 数 |
dfs.namenode.safemode.extension |
30000 |
离开安全模式的延迟(毫秒) |
安全模式使用示例¶
查询安全模式
进入安全模式
删除测试文件
退出安全模式
关键点:安全模式期间的删除请求被 直接拒绝而非排队执行,退出后文件完好无损、大小不变。所以维护操作时可以放心 enter,它是一道 "只读保险",不会积压破坏性操作。
快照¶
HDFS 快照是文件系统的 只读时间点副本,用于备份、防误删、灾难恢复。可快照目录不允许嵌套。
| 命令 | 作用 | 权限/前置说明 |
|---|---|---|
hdfs dfsadmin -allowSnapshot <path> |
将目录设为允许快照(snapshottable) | 需管理员权限;设置后方可创建快照 |
hdfs dfs -createSnapshot <path> [<name>] |
创建快照;不指定 name 时自动生成时间戳名称 |
需目录 owner 权限 |
hdfs dfs -renameSnapshot <path> <old> <new> |
重命名快照 | 需目录 owner 权限 |
hdfs dfs -deleteSnapshot <path> <name> |
删除指定快照 | 需目录 owner 权限 |
hdfs dfsadmin -disallowSnapshot <path> |
取消目录的快照能力 | 需管理员权限;须先删除该目录下所有快照 |
hdfs lsSnapshottableDir |
列出当前用户有权限创建快照的所有可快照目录 | — |
hdfs snapshotDiff <path> <from> <to> |
生成两个快照(或快照与当前状态 .)的差异报告 |
需对两个快照内所有文件/目录有读权限 |
符号含义(供差异报告配套说明):+ 新建、- 删除、M 修改、R 重命名/移动。
参考:https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html
快照使用示例¶
准备测试文件
[zhangsan@node0 ~]$ hdfs dfs -touchz /user/zhangsan/hdfs.txt
[zhangsan@node0 ~]$ hdfs dfs -touchz /user/zhangsan/yarn.txt
查询文件列表
允许 /user/zhangsan 快照并创建
列出可快照目录
创建快照
模拟误删操作
[zhangsan@node0 ~]$ hdfs dfs -rm /user/zhangsan/hdfs.txt
[zhangsan@node0 ~]$ hdfs dfs -rm /user/zhangsan/yarn.txt
查询文件列表
从快照恢复
查询文件列表
创建快照
快照差异报告
删除快照
删除快照
禁用快照
配额¶
配额限制目录可容纳的 文件/目录数量 与 磁盘空间(含副本),防止单目录吃满集群。
| 作用 | 命令 | 说明 |
|---|---|---|
| 数量限额 设置 | -setQuota <n> <dir>... |
最多放 n-1 个文件/目录 |
| 数量限额 清除 | -clrQuota <dir>... |
清除数量配额 |
| 大小限额 设置 | -setSpaceQuota <Size> <dir>... |
块的副本计入配额 |
| 大小限额 清除 | -clrSpaceQuota <dir>... |
清除大小配额 |
例如一个 1MB 的文件、副本因子为 3,在空间配额里要扣 3MB。
参考:https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsQuotaAdminGuide.html
配额使用示例¶
创建配额实验目录
数量配额设置¶
数量配额:限制为 3
依次创建文件 a,b
创建文件c
查看实验目录文件列表
清除数量配额
大小配额设置¶
大小配额:限制为128M
制作实验文件
上传到HDFS
查看实验目录文件列表
查询配额
QUOTA REMAINING_QUOTA SPACE_QUOTA REMAINING_SPACE_QUOTA DIR_COUNT FILE_COUNT CONTENT_SIZE
| 字段 (Field) | 值 (Value) | 中文说明 |
|---|---|---|
| QUOTA | none | 名称配额(文件/目录数量配额),none 表示未设置 |
| REMAINING_QUOTA | inf | 剩余名称配额,inf 表示无限(未受限) |
| SPACE_QUOTA | 200 M | 空间配额(存储容量上限),200 MB |
| REMAINING_SPACE_QUOTA | 72 M | 剩余空间配额,还可使用 72 MB |
| DIR_COUNT | 1 | 目录数量 |
| FILE_COUNT | 3 | 文件数量 |
| CONTENT_SIZE | 128 M | 当前已用内容大小,128 MB |
| 路径 (Path) | /quota | 该配额信息对应的 HDFS 目录 |
清除大小配额