设为首页 收藏本站
查看: 1807|回复: 0

[经验分享] hadoop heartbeat分析

[复制链接]

尚未签到

发表于 2015-11-21 08:33:47 | 显示全部楼层 |阅读模式
  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。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141692-1-1.html 上篇帖子: solaris 编译linux HA heartbeat 遇到的问题 下篇帖子: Apache+heartbeat HA方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表