0

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

谢谢雅希亚

4

3 回答 3

0

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

于 2012-08-04T15:52:01.907 回答
0

看看SHARK 它应该不需要太多时间来配置。另一种选择是 memcached 。

于 2013-03-07T00:23:24.153 回答
0

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

于 2012-08-04T17:06:32.243 回答