简而言之我需要一种方法来提供Hadoop MapRedice API提示什么主机上我想运行某个reducer基于其分区。有什么办法吗?有没有什么办法可以在Hadoop MapReduce框架中控制哪个节点减速器启动?
略长的故事:
我有一定的HBase的表,生成几个映射任务(或从其他来源进口)的记录。发出的记录具有ImmutableBytesWritable
作为键。此作业的缩减器数量与表区域的数量完全匹配,并使用自定义分区程序分发记录,以便每个区域的记录都可以到达适当的缩减器。
减速器旨在生成HFile
图像,每个区域一个图像,以便稍后可以使用批量加载。这里唯一严重的问题是我希望reducer至少在运行相同主机的区域服务器上“尝试运行”。这是为了适当的HBase区域服务器获得生成的HFile局部性(以HDFS而言)的可能性。
任何想法如何得到这种行为?
替代可能是如何“请求” HDFS文件,以“获得当地”。有了这个我可以启动另一个MR作业,通过绑定到区域服务器的映射器(通过分割)并请求相应的HFile
到get local
。
它有像'进行中'的状态。好,接受最好的帮助。 –