我需要在 MR 中处理一些数据,并将其加载到与我的 MR 节点位于同一物理机器上的外部系统中。现在,我运行作业并从HDFS读取输出,并将单个记录重新路由回所需的节点。
是否可以定义一些映射,以便具有键 X 的记录始终直接转到所需的节点 Y?简而言之,我想控制 hadoop 路由排序后的分区组的位置。
不容易。 我知道影响数据块物理位置的唯一方法是实现自定义BlockPlacementPolicy
。 我只是为您的用例抛出一些想法。
- 自定义
BlockPlacementPolicy
可以根据文件名路由块 - 分区的文件名可以使用MapReduce中的
MultipleOutputs
进行修改 - 可以使用自定义
Partitioner
将密钥路由到特定分区
看起来你可以得到你想要的结果,但它不会很漂亮。