一、hdfs的namenode结构
- Version是hdfs的版本信息
- edits开头的是操作日志文件
- fsimage开头的是数据镜像文件
- .lock结尾的是锁文件,防止两个namenode共同操作数据文件
二、主namenode和辅助namenode的工作流程
三、hdfs的datanode结构
- blk开头的是一个hdfs数据块的原始字节数
- blk开头,.meta结尾的是该块的元数据信息
- 注意,当数据块存储一定数量时,会在该目录创建一个新的文件夹再次存放数据块,可以有效管理各个目录的数据文件
四、安全模式
相关的操作命令
Hadoop提供脚本用于对安全模式进行操作,主要命令为:
hdfs dfsadmin -safemode
command的可用取值如下:
command 功能 备注
get 查看当前状态
enter 进入安全模式
leave 强制离开安全模式
wait 一直等待直到安全模式结束
五、数据块检查
hdfs fsck <文件或者目录>
六、委任新datanode节点
- 将新节点的网络地址添加到include文件中(dfs.hosts和yarn.resourcemanager.nodes.include-path)
- 更新hdfs节点信息
- hdfs dfsadmin -refreshNodes
- 更新yarn节点信息
- yarn rmadmin -refreshNodes
- 更新slaves文件和hosts文件
- 启动新的datanode和节点管理器
- 运行./start-balancer.sh,使各节点数据均衡
七、解除旧节点
- 将需要解除的节点添加到exclude文件中(dfs.hosts.exclude和yarn.resourcemanager.nodes.exclude-path)
- 更新hdfs节点信息
- hdfs dfsadmin -refreshNodes
- 更新yarn节点信息
- yarn rmadmin -refreshNodes
- 到网页界面查看datanode是否是Decommissioned状态(已解除)
- 从include文件中(dfs.hosts和yarn.resourcemanager.nodes.include-path)删除
- 从slaves和hosts文件中删除节点
八、升级hdfs版本
- 升级之前,确保上一版本已经升级完成
- 备份namenode元数据信息并手动备份比较重要的数据文件
- ./hdfs dfsadmin -fetchImage fsimage
- 关闭yarn和hdfs守护进程
- ./stop-dfs.sh 和 ./stop-yarn.sh
- 在新版本的命令中使用-upgrade启动hdfs
- $NEW_HADOOP/start-dfs.sh -upgrade 升级
- $NEW_HADOOP/hdfs dfsadmin -upgradeProgress status 查看升级状态
- 回滚/定妥升级
- (1)如果无法使用,则回滚到上一版本
- $NEW_HADOOP/stop-dfs.sh 停止新的守护进程
-
$OLD_HADOOP/start-dfs.sh -rollback 回滚
- (2)如果满意升级并可能往下一步升级,则选择定妥升级
-
$NEW_HADOOP/hdfs dfsadmin -finalizeUpgrade 定妥升级