我有30多个映射器,每个映射器使用常见的查找数据,这是在内存中。 在每个映射器中,我必须在setup函数中加载此查找数据。我通过查询和计算Hbase表和/或某些rdbms数据库来计算此查找数据。当我从每个映射器做同样的事情时,上面的常见任务在每个映射器中执行30次。
无论如何,我可以在提交mapReduce作业之前计算查找数据并设置在某处,以便从mappes我可以直接获取该值(在内存结构中)。在配置等处存储...查找生成是一项繁重的任务,这需要很多时间。
如果它本来是一个查找文件,我会使用分布式缓存但它的动态计算而不是存储在文件中。
请建议解决这个常见问题?
答案 0 :(得分:1)
你不能生成数据,然后存储在与分布式缓存链接的HDFS中吗?
您可以使用的另一个技巧(如果您正在使用JVM重用,以及小型集群)是在映射器中使查找映射静态,然后在集合中执行非空检查,因此仅计算该任务跟踪器的第一个映射实例中的数据。