在Hadoop工作节点上缓存数据

时间:2012-08-04 13:21:00

标签: caching hadoop amazon-s3 mapreduce ehcache

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

由于 亚希阿

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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