hadoop - 跨映射器共享内存数据中的公共(public)查找 : Hadoop

标签 hadoop mapreduce hbase lookup in-memory

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

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

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

请就此常见问题提出任何解决方案?

最佳答案

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

您可以使用的另一个技巧(如果您正在使用 JVM 重用和小型集群)是在您的映射器中使查找映射静态化,然后在您的集合中执行非空检查,因此仅计算该任务跟踪器的第一个 map 实例中的数据。

关于hadoop - 跨映射器共享内存数据中的公共(public)查找 : Hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11034227/

相关文章:

java - 通过使用下面提到的以下命令来编译Java代码

hadoop - 切换一个包含cloudera hadoop/hdfs/hbase数据的磁盘

hadoop - Apache 星火RDD

java - Q : Converting Avro to Parquet in Memory

javascript - 如何在 MapReduce 中使用变量?

hadoop - 如何设置Hbase表列族的列族大小?

java - Hbase-1.1.x 版本中的 Map reduce

java - hadoop java : how to know that end of reducer input is reached?

hadoop - 使用 Teradata Hadoop 连接器时出现连接拒绝异常

java - 两个相等的组合键不会到达同一个 reducer