在Hadoop工作节点上缓存数据



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

谢谢Yahia

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

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

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

最新更新