手机版
你好,游客 登录 注册
背景:
阅读新闻

Hadoop-0.20.2 作业内存控制策略分析

[日期:2012-06-19] 来源:dongxicheng.org  作者:dongxicheng [字体: ]

3. JobTracker作业内存使用控制

3.1 JobTracker控制task内存使用方法

JobTracker:如果: mapred.job.map.memory.mb > mapred.cluster.max.map.memory.mb,则直接跑出异常,告诉client提交作业的内存不合法

3.2 JobTracker上相关类方法

initializeTaskMemoryRelatedConfig:初始化内存相关的配置变量

checkMemoryRequirements:判断某个作业内存使用量是否超出限制

4. Capacity Scheduler

Capacity Scheduler较其他Hadoop Scheduler,如FIFO或者Fair Scheduler,最大的好处之一是可以根据作业的内存需求量进行调度。核心思想是:用户提交作业时,指定作业的每个task预期使用内存量,然后根据该内存量计算出对应的slot数,这当该作业的某个task在某个TaskTracker执行时,一次性占用多个slot。

该调度器解决了Hadoop本身设计的一个缺陷,即:作业调度完全按照slot数来,如果有20个slot,则会同时有20个task执行。一般而言,slot对应CPU数,也就是说,调度器完全按照cpu资源调度,并没有考虑到内存,网络IO等资源。

5. 相关的Hadoop patch

Hadoop与task内存等资源控制相关的patch有三个:

(1) MAPREDUCE-1218:TaskTracker通过Heartbeat向jobtracker汇报自己可用的内存和cpu使用率。

(2) MAPREDUCE-220:TaskTracker收集自身每个task的内存和cpu使用量,并通过hearteat汇报给JobTracker

(3) MAPREDUCE-2037:TaskTracker收集自身的内存和cpu负载,并通过HeatBeat告诉JobTracker

另外,其他资源的收集,如网络IO和磁盘IO的收集的必要性和可行性,见:https://issues.apache.org/jira/browse/MAPREDUCE-220

linux
相关资讯       Hadoop部署 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款