在Hadoop MapReduce框架中,是否有任何方法可以控制将在哪个节点上启动reducer




简短地说我需要一种方法来提示Hadoop MapRedice API,我希望基于某个reducer的分区运行哪个主机。有办法吗?

稍长的故事:
我有一些映射器任务可以为某个HBase表生成(或从另一个源导入)记录。发出的记录将ImmutableBytesWritable作为密钥。此作业的还原器数量与表区域的数量完全匹配,并且使用自定义分区器来分发记录,以便每个区域的记录都能到达适当的还原器。

Reducer旨在生成HFile图像,每个区域一个图像,以便以后可以对其使用批量加载。这里唯一严重的问题是,我希望减速器至少在相应区域服务器正在运行的主机上"尝试运行"。这是为了为适当的HBase区域服务器获得生成的HFiles位置(根据HDFS)的良好概率。

知道如何得到这种行为吗?

另一种选择可能是如何"请求"HDFS文件以"获取本地"。有了这个,我可以用绑定到区域服务器的映射器(通过拆分)启动另一个MR作业,并请求相应的HFileget local

除了编写自定义调度程序之外,还没有现成的方法可以做到这一点,这将是一种过度的做法。

上游票证确实在跟踪此功能请求https://issues.apache.org/jira/browse/MAPREDUCE-199.

相关内容

  • 没有找到相关文章

最新更新