Reducer Hadoop中的分布式缓存

时间:2012-09-23 19:05:48

标签: java hadoop mapreduce distributed-cache

我想在reducer2的内存中保存文件A,在reducer2的内存中保存文件B.这是否可以在hadoop中使用分布式缓存技术?或者,还有其他方法来实现这个目标吗?

由于

2 个答案:

答案 0 :(得分:1)

是的,如果文件非常小,您可以在分布式缓存中设置这些文件。 请点击此链接http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata。它可能对你有用。

如果你考虑代码的这一部分取决于你想在哪个文件中使用哪个文件。

Path [] cacheFiles = DistributedCache.getLocalCacheFiles(conf);
      if (null != cacheFiles && cacheFiles.length > 0) {
        for (Path cachePath : cacheFiles) {
          if (cachePath.getName().equals(stopwordCacheName)) {
            loadStopWords(cachePath);
            break;
          }
        }

看看是否有帮助

答案 1 :(得分:0)

问题(这是Hadoop的一个基本问题)是任务跟踪器为每个任务启动新的JVM进程 - 否定了内存缓存的任何好处。您可以将任务跟踪器配置为在同一个VM中运行 - 但许多Hadoop内部也使用System.exit()以及许多Hadoop作业......这样的配置毫无意义。

您可以与Hadoop集群共同部署GridGain集群,并通过同一物理主机上的两个JVM之间的快速环回连接使用GridGain进行内存缓存(GridGain和Hadoop的任务跟踪器JVM) - 这是由我们的几个客户。