我想在reducer1的内存中保存文件a,在reducer2的内存中保存文件b。在hadoop中使用分布式缓存技术是否可能?否则,还有别的办法吗?谢谢
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; } }
看看有没有用
u3r8eeie2#
问题(这是hadoop的一个基本问题)是task tracker为每个任务启动新的jvm进程,这否定了内存缓存的任何好处。您可以配置TaskTracker在同一个vm中运行-但是许多hadoop内部使用system.exit()和太多的hadoop作业。。。使这种配置毫无意义。您可以将gridgain集群与hadoop集群一起部署,并通过同一物理主机上的两个jvm(gridgain和hadoop的task tracker jvm)之间的快速环回连接将gridgain用于内存缓存—这是由我们的几个客户机完成的。
2条答案
按热度按时间hzbexzde1#
是的,如果文件非常小,您可以在分布式缓存中设置这些文件。点击此链接http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata. 它可能对你有用。
如果你考虑代码的这一部分,它取决于你想在哪个文件中使用哪个reducer。
看看有没有用
u3r8eeie2#
问题(这是hadoop的一个基本问题)是task tracker为每个任务启动新的jvm进程,这否定了内存缓存的任何好处。您可以配置TaskTracker在同一个vm中运行-但是许多hadoop内部使用system.exit()和太多的hadoop作业。。。使这种配置毫无意义。
您可以将gridgain集群与hadoop集群一起部署,并通过同一物理主机上的两个jvm(gridgain和hadoop的task tracker jvm)之间的快速环回连接将gridgain用于内存缓存—这是由我们的几个客户机完成的。