分享

分片split和资源容器container之间的关系

cowboy2014 发表于 2016-1-26 10:45:42 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 10 38685
请教个问题,谢谢知道的兄弟指点一下。

我知道了split的数量是如何计算的,也知道container的资源协商是如何进行的,在数据处理的过程中,那split是如何交给container执行的呢?是一对一的关系吗?设置JVM重用,实际上也就是container重用,对吗?
问题总结为:默认一个split是对应一个container吗?JVM重用指的是不是就是这个container可以处理多少个split?
有知道的兄弟不妨交流一下,谢谢!!



补充内容 (2016-1-26 22:37):
前面问题我可能没有描述清楚,关于container数量是基于datanode的CPU和内存,以及resourcemanager中的调度器设置确定【这点我清楚】。换个角度描述:一个map作业若多个mapper,若所有map同时执行需要多少containe...

补充内容 (2016-1-26 22:42):
我的比较详细一点的理解可以看一下在“板凳”中的回复,这个理解没有很直接的文档,大家可以看下是否有问题。问题一句话总结:如何从待处理数据的文件(大小、数量)的角度,评估需要的container系统资源?

已有(10)人评论

跳转到指定楼层
when30 发表于 2016-1-26 12:27:49
这里我们首先需要明白Container是什么?


Container之前,大家应先了解YARN的基本架构、工作流程。
比如,大家应该了解一个应用程序的运行过程如下:

步骤1:用户将应用程序提交到ResourceManager上;
步骤2:ResourceManager为应用程序ApplicationMaster申请资源,并与某个NodeManager通信,以启动ApplicationMaster;
步骤3:ApplicationMaster与ResourceManager通信,为内部要执行的任务申请资源,一旦得到资源后,将于NodeManager通信,以启动对应的任务。
步骤4:所有任务运行完成后,ApplicationMaster向ResourceManager注销,整个应用程序运行结束。
上述步骤中,步骤2~3涉及到资源申请与使用,而这正是Container出现的地方。
###############################################
更多:
hadoop2中YARN Container相关问题及Container介绍
http://www.aboutyun.com/thread-7275-1-1.html


###############################################

split是如何交给container执行,container执行的是任务, 而split只是一个分片而已。
split与container没有必然的联系,也就是二者数量关系不大



回复

使用道具 举报

cowboy2014 发表于 2016-1-26 22:06:21
本帖最后由 cowboy2014 于 2016-1-26 22:22 编辑
when30 发表于 2016-1-26 12:27
这里我们首先需要明白Container是什么?

首先,谢谢兄弟的回答,container相关生成规则、申请流程,我是比较清楚的。
那么,container处理的是任务确实没有问题,数据处理的过程中是按照分片,生成若干个mapper子任务去执行的,一个split被作为一个mapper任务去执行。这些mapper任务是如何分配给container执行的?
我的理解是假如container有限,则mapper任务就是排队在有限的container中运行。【猜想的验证:经过查看一个map作业,有5400个mapper,50个container,单个mapper任务处理的数据是150mb,JVM处理150Mb数据性能花费时间1.2min。验证: 5400/50*1.2=130min,因部分文件较小,实际处理时间会少一点,正好与系统完成作业的时间比较吻合。】
其实,我想做的事情就是,假设所有的子mapper任务同时开始执行,则分配的最佳container个数该如何确定【假设container个数充足】?
或者说,有没有参考的根据待处理文件(考虑数量、大小)来评估需要的系统性能的方法?

回复

使用道具 举报

wscl1213 发表于 2016-1-26 22:22:14
cowboy2014 发表于 2016-1-26 22:06
首先,谢谢兄弟的回答,container相关生成规则我是比较清楚的。
那么,container处理的是任务确实没有问 ...

container其实这里官方也有些模糊,它包括内存,网络等资源。
如果运行job,首先需要申请资源,也就是container,申请下来之后然后运行任务。而这个任务可能是map,也可能是reduce
回复

使用道具 举报

xuanxufeng 发表于 2016-1-26 22:22:59

container就是“一组资源”,现在是“内存+CPU”,未来还有可能把网络带宽之类的也包含进去。当有一个Application(在MRV1里叫Job),第一个container就用来跑ApplicationMaster,然后ApplicationMaster再申请一些container来跑Mapper,之后再申请一些container来跑Reducer。container既可以跑Mapper也可以跑Reducer,就不像MRV1里的map slot只能跑map、reduce slot只能跑reduce。

回复

使用道具 举报

cowboy2014 发表于 2016-1-26 22:24:59
wscl1213 发表于 2016-1-26 22:22
container其实这里官方也有些模糊,它包括内存,网络等资源。
如果运行job,首先需要申请资源,也就是co ...

你好,我在外文网站上找到了关于container的个数的详细确定规则,我可以分享给大家:1、How are containers created based on vcores and memory in MapReduce2?
http://stackoverflow.com/questions/33099601/how-are-containers-created-based-on-vcores-and-memory-in-mapreduce2
2、What is the relation between 'mapreduce.map.memory.mb' and 'mapred.map.child.java.opts' in Apache Hadoop YARN?

回复

使用道具 举报

cowboy2014 发表于 2016-1-26 22:29:28
xuanxufeng 发表于 2016-1-26 22:22
container就是“一组资源”,现在是“内存+CPU”,未来还有可能把网络带宽之类的也包含进去。当有一个App ...

谢谢回复,关于container,自然有map类型和reduce类型,其个数确定规则以下两篇文章讲的比较透彻,这一块我是理解的。1、How are containers created based on vcores and memory in MapReduce2?
http://stackoverflow.com/questions/33099601/how-are-containers-created-based-on-vcores-and-memory-in-mapreduce2
2、What is the relation between 'mapreduce.map.memory.mb' and 'mapred.map.child.java.opts' in Apache Hadoop YARN?

我问题的关键是mapper是如何在container中进行的,因为了解了这个过程,才能从要处理的数据量(大小、文件数量)角度,去评估我需要多少资源

回复

使用道具 举报

cranberries8 发表于 2016-1-27 10:51:43
1.container 和split 的关系(map 阶段)是一一对应的 ,也就是一个split 的map 运行一个container ,(在mapreduce1 的时候就是一个split 对应一个 maptask  )这个map task完了 container就 销毁咯,reduce的时候就是有多少个 reduce task 就需要多少个container ;注:(我知道 mapreduce1 可以设置 jvm 重用,好像container 不支持jvm重用哦 )
补充内容1回答: 所有map 要同时运行就必须要同map的数相同的container 个数,但是有个问题存在 ,就是我们知道在map task 过程中 ,就会reduce task 在不停的拉去先完成的map task 的数据,所以,显然和 map数相同的container 不是最佳的性能设置 应该考虑到reduce task 所需的container
补充问题2回答:总结的 就是假设有 n 个 split 将运行 n 个map task ,运行m 个reduce task ,那个所需的container 数将是  1个applicationmaster + n  个map task  + m 个reduce task 。(我记得是container 不能设置 jvm 重用 )
回复

使用道具 举报

cowboy2014 发表于 2016-1-27 11:02:46
cranberries8 发表于 2016-1-27 10:51
1.container 和split 的关系(map 阶段)是一一对应的 ,也就是一个split 的map 运行一个container ,(在m ...

嗯嗯,非常感谢,这正是我想要的回答。我的疑惑解开了,谢谢你!对,我在外文网站也见到说YARN不支持container重用。嗯嗯,问题中没有提到reduce container是方便阐述,实际资源使用的时候确实会进行抢占。
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条