问:hadoopv.1.2.1或v.2(yarn)是否提供了一种方法来确定单个作业中不同map任务的核心关联性?换句话说,我可以用与linux类似的方式将特定的map任务固定到特定的内核吗 taskset
,还是它超出了hadoop的控制,由linux调度器决定?
我对MapReduce编程比较陌生,我的项目涉及到研究不同参数(特定于机器或网络)改变时的性能。到目前为止,我已经通过了它的官方文档(v.1.2.1)和许多在线和堆栈交换的线程。
下面我将提供两个不同的案例,以更好地说明我的问题,以及我迄今为止的研究。
示例#1:假设我有以下配置:
输入:2 gib
hdfs块大小:64 mib
数据节点:2节点x 32核(处理器)
不需要减少任务。
根据块大小,将调用2 gib/64 mib=32 map任务。如果 mapred.tasktracker.map.tasks.maximum
设置为 16
然后在节点1上运行16个map任务,在节点2上运行16个map任务,每个节点有16个内核可用(链接:#1,#2)
据我所知,除了“机架感知”(link)之外,没有办法直接控制“节点”关联性,即如何将“Map任务”Map到特定节点(link)。但是,在一个特定的节点中,我可以。。。
问题1:“…”把每个Map任务钉在一个特定的核心上?问题2:。。。保证每个Map任务都会停留在它开始的核心上?或者是它脱离了hadoop的控制,依赖于linux调度器?
示例#2:假设示例#1的配置,但输入大小为8 gib,导致128个Map任务。
问题1:不管 mapred.tasktracker.map.tasks.maximum
,是否同时调用128个map任务?因为我总共有64个Map槽(超过2个节点),所以每个节点平均每个核心处理2个Map任务,这是正确的吗?
问题#2:如果问题#1是正确的,我是否可以控制(在一个节点内)一个map任务在一个内核上停留的“时间”以及它是否会被重新分配到同一个内核,或者它是否超出了hadoop的控制并由linux调度器决定?
关于reduce任务,我假设相关的答案也成立,也就是说,核心亲和性也可能成立(或者不成立)。
1条答案
按热度按时间tp5buhyn1#
本文提供了一些关于任务-核心关联的见解-关于hadoop的核心关联和文件上传性能
本文提到posix标准定义了
sched_setaffnity()
系统调用来决定进程(或在本例中的任务)在用户级别的核心关联。但我希望能有一个更简单的方法来定义任务核心相关性。