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

To read from distributed cache or from HDFS output

我正在实施一种迭代算法,该算法在每次迭代中都会产生一些结果,并且该结果将用于下一次迭代的映射阶段。

我应该使用分布式缓存让 Mapper 可以使用该结果,还是应该从 HDFS 读取它?什么更有效率?

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

谢谢

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

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

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