2012-08-04 48 views
0

我的Map/Reduce程序正在从S3频繁地请求文件。在Reducer中,我非常频繁地从Amazon S3请求文件,并且我可能会多次请求相同的文件(每个文件大约10 K个文件在1 MB到12 MB之间)。使用Hadoop分布式缓存效率不高,因为它会将所有这些文件复制到所有工作节点(据我所知),但我不想在缩减阶段执行这些操作,我只能从10 K个文件请求1000个文件。此外,如果在文件之前请求减速器,如果减速器再次需要它,我不想再次请求它。我问是否有人在工作节点上实施了像ehcache或oscache这样的缓存框架?或者有什么方法只缓存工人机器磁盘上的请求文件?在Hadoop工作节点上缓存数据

感谢 叶海亚

回答

0

看一看SHARK 应该不会花太多的时间来配置。另一个选项是memcached。

0

您可能需要使用分区缓存支持成熟的内存数据网格。 GridGain就是其中之一。看一看www.gridgain.com

0

我会建议使用HDFS作为缓存。 S3通常比本地磁盘慢得多,所以HDFS可以被认为是本地缓存。
我不知道全自动解决方案,但我相信distcp会有所帮助。 (http://hadoop.apache.org/common/docs/r0.19.2/distcp.html)它有“更新”选项,因此它不会复制尺寸不变的文件

相关问题