reducehadoop中的java分布式缓存

um6iljoc  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(425)

我想在reducer1的内存中保存文件a,在reducer2的内存中保存文件b。在hadoop中使用分布式缓存技术是否可能?否则,还有别的办法吗?
谢谢

hzbexzde

hzbexzde1#

是的,如果文件非常小,您可以在分布式缓存中设置这些文件。点击此链接http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata. 它可能对你有用。
如果你考虑代码的这一部分,它取决于你想在哪个文件中使用哪个reducer。

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

看看有没有用

u3r8eeie

u3r8eeie2#

问题(这是hadoop的一个基本问题)是task tracker为每个任务启动新的jvm进程,这否定了内存缓存的任何好处。您可以配置TaskTracker在同一个vm中运行-但是许多hadoop内部使用system.exit()和太多的hadoop作业。。。使这种配置毫无意义。
您可以将gridgain集群与hadoop集群一起部署,并通过同一物理主机上的两个jvm(gridgain和hadoop的task tracker jvm)之间的快速环回连接将gridgain用于内存缓存—这是由我们的几个客户机完成的。

相关问题