简而言之,我需要一种方法来向 Hadoop MapRedice API 提示我想根据其分区运行某个 reducer 的主机。有什么办法吗?
更长的故事:
我很少有映射器任务为某些 HBase 表生成(或从另一个源导入)记录。发出的记录ImmutableBytesWritable
作为键。此作业的reducer 数量与表区域的数量完全匹配,并且自定义分区器用于分发记录,因此每个区域的记录都可以到达适当的reducer。
Reducers 旨在生成HFile
图像,每个区域一个图像,以便以后可以在它们上使用批量加载。这里唯一严重的问题是我希望减速器至少在适当的区域服务器正在运行的同一主机上“尝试运行”。这是为了获得为适当的 HBase 区域服务器生成 HFiles 局部性(就 HDFS 而言)的良好概率。
知道如何获得这种行为吗?
替代方法可能是如何“请求” HDFS 文件以“获取本地”。有了这个,我可以开始另一个 MR 作业,映射器绑定到区域服务器(通过拆分)并请求对应HFile
于get local
.