从分布式缓存或HDFS输出读取

时间:2015-01-29 11:59:04

标签: hadoop mapreduce distributed-caching

我实现了一个迭代算法,该算法在每次迭代中产生一些结果,并且该结果用于下一次迭代的地图阶段。

我是否应该使用分布式缓存为Mapper提供该结果,还是应该从HDFS中读取它?什么更有效?

那个文件不应该那么大。这个想法只是在设置阶段读取它并将其保存在mapper的内存中。

由于

1 个答案:

答案 0 :(得分:0)

如果文件不大并且将在映射器的设置中读取,则DistributedCache是​​前进的方法。当然,如果您没有在第二份工作中阅读任何其他内容,那么就会出现关于您为何使用MapReduce工作的问题。

从HDFS读取(即通过InputFormat将文件流式传输到映射器)并使用DistributedCache有两个完全不同的用例。 DistributedCache设计用于可以放入内存的小文件,而使用InputFormat读入映射器则是为只能使用分布式进程处理的大型分布式数据集而设计的。

如果您的数据集足够小,可以在DistributedCache中使用,那么您只需使用Java作业来处理它,并避免MapReduce的大量开销。