namenode和datanode的启动过程及安全模式相关
Namenode
(1) 加载镜像文件,还原checkpoint时间节点前的元数据(包含目录结构,文件大小,块数据的大小和id),不包含快的存储位置
(2)加载edits文件,还原checkpoint时间节点到集群停止的元数据,不包含块的存储位置。(到这里namenode还原就缺少块的存储位置)
(3)blockreprot阶段,datanode启动,向namenode汇报自己所管理块及id,namenode根据块的id还原块的存储位置
(4)blockreport结束后,集群会判断datanode的启动数量(可设置,默认为0),失去的块占比(可设置,默认为0.999f)是否满足退出安装模式,如果满足,30秒后退出安全模式。在安全模式的namenode会删除多余的块(副本数为3,结果实际存储4个。ps:这种情况发生在datanode宕机,集群将宕机的datanode管理的块进行复制,而宕机的datanode又重新启动了 还会复制地域副本数的块)
namenode启动过程-hadoop集群第一次安装完后:
hadoop集群如果是第一次的启动的话 :需要格式化 目的是 创建fsimage edits 文件, ,第一次启动加载fsimage 把内存的元数据信息加载到fsimage文件中,edits 记录用户对文件系统的操作 例如 增加 修改 删除
第二次启动: 加载fsimage 和 edits 文件 合并成一个新的fsimage文件,在创建一个edits文件记录用户对HDFS的操作
Datanode
ps:一个数据块在 datanode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
datanode的心跳机制:心跳为每三秒一次,心跳返回的结果带有namenode给该datanode的命令比如复制块数据到另外一台节点上。如果超过十分钟没有收到datanode的心跳,则认为该节点不能用。
安全模式:
怎么进入安全模式:1.namenode启动是,会有30秒的安全模式
2.当块的数量低于阀值得时候,datanode的启动数量不够都会进入安全模式;
如何离开安全模式:
1.调低阀值:在hdfs.site.xml中
*dfs.namenode.safenode.threshold-pct*该条信息中设置为0.999f
2.强制离开:hdfs dfsadmin -safemode leave 3.重新格式化集群 4.修复损坏的块文件
注意点:重新格式化namenode,使用start-dfs.sh的话不能将datanode启动起来,因为格式化后clusterid改变,而datanode还保存的原来clusterid
阅读更多- 在搭建好Hadoop集群后,namenode与datanode两个过程不能起来,或者一个启动之后另一个自动关闭
- 浅谈hadoop中namenode启动过程分析以及datanode数据写入的过程
- 【hadoop】DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
- hadoop集群启动namenode成功,而datanode未启动!
- hadoop多次格式化namenode造成datanode无法启动问题解决
- hadoop 在搭建分布式时遇到DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
- hadoop多次格式化namenode造成datanode无法启动问题解决
- datanode启动后关闭错误“DataNode: Incompatible build versions: namenode”
- hadoop namenode多次格式化后,导致datanode启动不了
- 重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法
- hadoop学习笔记之start-all.sh 无法启动NameNode,DataNode
- 重复格式化namenode造成datanode无法正常启动的解决办法
- 使用hadoop过程中两次datanode无法启动问题
- 解决更改hadoop核心配置文件后会出现DataNode,或者NameNode无法启动的问题
- Hadoop源码分析之读文件时NameNode和DataNode的处理过程
- Hadoop的datanode,namenode无法启动
- hadoop 使用start-all.sh启动后,用jps找不到namenode和datanode
- 【hadoop】DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
- 端口被其他进程占用导致hadoop namenode,datanode,jobTracker,taskTracker,secondnamenode无法启动
- (hadoop2.5)namenode或datanode未启动