hadoop heartbeat分析
来源:互联网 发布:平面美工设计 编辑:程序博客网 时间:2024/05/29 03:29
1. Data node -> name node heart beat
datanode 发起heart beat,周期性的向name node发送。heart beat间隔通过 dfs.heartbeat.interval 进行设置。
在data node中的主循环 offerService()发起heart beat: 主要包含以下信息:
DatanodeCommand[] cmds = namenode.sendHeartbeat(dnRegistration, // DatanodeRegistration
data.getCapacity(), // data node的容量
data.getDfsUsed(), // data node已用空间
data.getRemaining(), // data node剩余空间
xmitsInProgress, // 传输的block数
getXceiverCount()); // data node xceiver 的数目
DatanodeRegistration包括了namenode用来标识个验证data node的全部信息。
heart beat 通过rpc,调用 Namenode的同名方法。Namenode 类会调用FSNamesystem 中handleHeartbeat完成heart beat的处理工作。
在handleHeartbeat 中,处理过程主要有以下几步:
1. namenode 中维护了一个datanode -> block map.的映射关系(对应于数据结构为 StorageID -> DatanodeDescriptor), 当namenode收到一个heart beat request 后,在该map中查找对应data node是否存在,如果不存在,则返回data node command DatanodeCommand.REGISTER.
2. 检测 data node 是否应该被shut down, (即:如果该节点被置为 DECOMMISSIONED, 则其应该被shut down)。如果该data node应该被shut down,则namenode会通过rpc 将DisallowedDatanodeException 丢回给对应data node, data node收到该exception后,自杀。
3. 更新 StorageID -> DatanodeDescriptor 表 (datanodeMap) 中DatanodeDescriptor相关信息
4. 检查lease recovery
5. 检查处于pending 状态的 replication
6. 检查非法块
7. 检查是否需要升级
2. task tracker -> job tracker heart beat
同dn -> nn 的heartbeat相似。 tt -> jt的heartbeat是由tt发起的,由tt中offerService() 周期性的调用transmitHeartBeat (),向jt发送心跳包。heart beat主要包括以下信息:
HeartbeatResponse heartbeatResponse = jobClient.heartbeat(status, // TaskTrackerStatus
justStarted, // tt是否为刚启动
askForNewTask, // tt是否向jt要新的task
heartbeatResponseId); // 上次心跳response 的id
参数TaskTrackerStatus 包含了一个tt详细的信息,包括其上运行的全部task的状态(TaskTrackerStatus),host, tracker name,maxReduceTasks, maxMapTasks,ResourceStatus (tt的资源使用状况).
heart beat 通过InterTrackerProtocol 发送到jt, 由jt进行下面的工作。
1.检查tt是否为被允许节点(即:是否在slave列表中且不再exclude 列表中)
2. jt中维护这trackerID --> last sent HeartBeatResponse的映射关系,取该tt上次heart beat的response.
如果tt不是初始连接,如果jt中上次 heart beat resp为空,则表示 jt出现了严重的问题,现在的实现中,会记录一个warning,然后new一个新的resp。
3.调用processHeartbeat(), 即根据此次heart beat中所包含的tt 和 task的信息,更新jt中相应的数据结构
4.初始化 jt返回的response 对象
5.检测将在该 tasktracker上运行的新task
6.检测需要被kill的task
7.检测需要被kill或者cleanup的job
8.更新jt中的 trackerToHeartbeatResponseMap结构
9.处理完 hearbeat, 删除该tt上全部 'marked' tasks。
- hadoop heartbeat分析
- Hadoop mr heartbeat rpc代码分析
- heartbeat v2 模式分析
- Heartbeat V2 模块分析
- alluxio heartbeat分析
- ceph osd heartbeat 分析
- 消费者Heartbeat分析
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)整体结构
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)数据结构初始化
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)之BPServiceActor工作线程运行流程(上)
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)之BPServiceActor工作线程运行流程(下)
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)之DataNode端数据块增量汇报
- Hadoop DataNode启动之heartbeat
- Heartbeat 通信层结构分析
- Heartbeat 通信层结构分析
- Heartbeat 与Corosync对比分析
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)之NameNode端处理数据块增量汇报
- heartbeat
- Spring如何处理线程并发
- C++修改入口函数名Main的方法
- Hbase 性能优化
- FFMpeg框架代码阅读
- 用命令实现Win7远程桌面关机和重启
- hadoop heartbeat分析
- 通用css字体样式
- C#的委托,匿名方法和Lambda表达式
- [Python]生成器(generator)
- 对象序列化 BinaryFormatter、XmlSerializer、SoapFormatter
- List,Set,Map是否继承自Collection接口?
- 单例Singleton完美版本实现:double-check
- QX项目实战-17.同步业务逻辑说明
- JS读取文件,Javascript之文件操作 (IE)