简短地说我需要一种方法来给Hadoop MapRedice API提示我想要根据其分区运行某些reducer的主机。有什么办法吗?
有点长的故事:
我有几个映射器任务,它们为某个HBase表生成(或从另一个源导入)记录。已发布的记录以ImmutableBytesWritable
为键。此作业的reducers数量与表区域的数量完全匹配,自定义分区器用于分配记录,以便每个区域的记录都可以到达适当的reducer。
Reducers旨在生成HFile
个图像,每个区域有一个图像,因此可以在其上使用批量加载。这里唯一严重的问题是我想减少器至少要在适当的区域服务器正在运行的相同主机上“尝试运行”。这是为了获得适当的HBase区域服务器生成的HFiles位置(就HDFS而言)的良好概率。
知道如何获得这种行为吗?
替代方案可能是如何“请求”HDFS文件“获取本地”。有了这个,我可以用映射器绑定到区域服务器(通过拆分)启动另一个MR作业,并请求相应的HFile
到get local
。
答案 0 :(得分:1)
没有开箱即用的方法可以做到这一点,没有编写自定义调度程序,这将是一个过度杀伤。
上游故障单会在https://issues.apache.org/jira/browse/MAPREDUCE-199跟踪此功能请求。