- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JobTracker 内部剖析
JobTracker 主要有两种功能:资源管理,作业控制。
JobTracker 的作业控制模块:负责作业的分解,状态的监控
状态监控包括:TaskTracker 状态监控,作业状态监控,任务状态监控。其主要作用有两个:
容错和为任务调度提供决策依据。
一方面通过状态监控可以及时发现存在异常或者故障的 TaskTracker,作业,任务,从而启动
相应的容错机制进行处理
另一方面 JobTracker 保存了作业和任务近似的实时运行信息,可以用于任务调度时的决策依
据。
资源管理模块:通过一定的策略将各个节点的计算资源分配给集群的任务。
JobTracker 启动之后会一直监听并接受来自各个 TaskTracker 的心跳信息,包含节点资源的使
用情况,任务运行情况等信息。
为了方便查找和定位各种对象(TaskTrackter 任务 作业等),JobTrackter 将其相关信息封装
成各种对象之后,以 key/value的形式保存在数据结构 Map中。
比如,为了能够根据作业 ID 找到对应的 JobInProgress对象,JobTracker 将所有运行作业的 ID
和 JobInProgress的对应关心保存在 Map数据结构 jobs中;为了
找到每一个 TaskTrackter 上当前运行的 Task,JobTracker 将 trackterID 与 Task ID 集合的映射关
系保存到 Map数据结构的 trackterToTaskMap中。JobTracker
的各种操作,比如监控,更新等,都是修改这些数据结构的映射关系。
除了状态监控,JobTracker 的另外一个重要功能是资源管理。JobTracker 不断的接收各个
TaskTracker 周期性的发送过来的资源量和任务状态等信息,并综
合考虑 TaskTracker 的数据分布,资源剩余量,作业优先级,作业提交时间等因素,为
TaskTracker 分配最合适的任务。
函数 offerServer 会启动 JobTracker 内部几个比较重要的后台服务线程。
exprieTrackersThread线程:
该线程主要用于发现和清理死掉的 TaskTracker。如果某个 TaskTracker在 10分钟内未汇报心
跳,则 JobTracker 认为它已经死掉,并将它的相关信息从数据
结构中删除。
retireJobsThread线程:
该线程用于清理长时间驻留在内存在的已经运行完成的作业信息。JobTracker 会将已经完成
的作业信息存放到内存中,以便外部查询,但随着作业越来越
多,势必会占用 JobTracker 的大量内存,为此 JobTracker 通过该线程清理驻留在内存中较长
时间的已经运行完成的作业信息。
exprieLaughingTaskThread线程:
该线程用于发现已经被分配给某个 TaskTracker 但一直未汇报信息的任务。当 JobTracker 将任
务分配给 TaskTracker 后,如果该任务在 10分钟内未汇报进度,
则 JobTracker 认为该任务分配失败,并修改其状态。
completedJobsStoreThread线程:
该线程将已经运行完成的作业运行信息保存到 HDFS中,并提供一套提取这些信息的 API。
该线程可以解决两个问题:无法获取很久以前的作业运行信息;JobTracker 重启后作业信息
消失。
作业恢复:
在 MapReduce中,JobTracker 存在单点故障的问题。如果它因异常退出重启,那么所有正在
运行的作业运行时信息将丢失,如果不采用适当的作业恢复机制
对作业信息进行恢复,那么作业就需要重新提交,已经计算完的任务需要重新计算,势必浪
费资源。
作业从提交到运行结束整个过程,JobTracker 会为一些关键事件记录日志(JobHostory 类完
成),当 JobTracker 重启后(TaskTracker 扔活着),JobTracker
会检查是否存在需要恢复的运行状态的作业,如果有,则通过日志恢复,并重新调度那些未
完成的任务。
心跳实际上是一个 RPC函数,TaskTracker 周期性的调度这个函数汇报结点和任务状态信息。
hadoop心跳主要有三个功能:
判断 TaskTracker 是否存活,及时让 JobTracker 获取各个节点上的资源使用情况和任务运行状
态,为 TaskTracker 分配任务
JobTracker 主要是通过心跳应答形式为各个 TaskTracker 分配任务
TaskTracker 周期性
您可能关注的文档
最近下载
- 公文规范与写作.ppt
- 二零二四年度大型音乐节主办方与演出乐队演出合同协议范本3篇.docx VIP
- 河南省驻马店市平舆县2022年人教版小升初考试数学试卷(原卷版+解析).docx VIP
- 2023年新高考数学大一轮复习(新高考)40抛物线及其性质(解析版).pdf VIP
- ISO 27002 2022 信息安全、网络安全与个人隐私保护-信息安全控制.pdf VIP
- 江浙沪皖自驾路线合集(2024.1.7更新)(3).pdf VIP
- 人教版五年级语文(上册)写字表课文同步正楷练字帖.pdf VIP
- 《肖申克的救赎》完整中英文对照剧本.docx VIP
- 《水浒传》章回概括100回本-重点归纳.pdf VIP
- 17中医养生学第十六章因人养生.pptx VIP
文档评论(0)