2

我有 30 多个映射器,每个映射器都使用内存中映射的通用查找数据。在每个映射器中,我必须在设置函数中加载此查找数据。我通过在 Hbase 表和/或某些 rdbms 数据库上查询和计算来计算此查找数据。当我从每个映射器做同样的事情时,上述常见任务在每个映射器中执行 30 次。

无论如何我可以在提交mapReduce作业之前计算查找数据并设置某个位置,以便我可以从mappes直接获取该值(在内存结构中)。存储在配置中的某个地方等...查找生成是一项繁重的任务,这需要很多时间。

如果它是一个查找文件,我会使用分布式缓存,但它是动态计算而不是存储在文件中。

请提出任何解决这个常见问题的方法?

4

1 回答 1

1

您不能生成数据然后存储在与分布式缓存链接的 HDFS 中吗?

您可以使用的另一个技巧(如果您使用 JVM 重用和小型集群)是在映射器中使查找映射静态,然后在您的集合中执行非空检查,从而仅计算数据在该 tasktracker 的第一个地图实例中。

于 2012-06-14T14:00:01.307 回答