map reduce是否适用于小尺寸的非结构化资源?

Is map reduce applicable to unstructured sources of small size?

我做了一些研究,并努力找出 Hadoop 的典型用例。到目前为止我所了解的是,它应该是批处理的最佳方法,当数据大小至少为 TB 量级时,源也是非结构化的并且算法是顺序的,就像计算许多单词的出现次数一样文件... 在高层次上,我的理解是关键点是将代码移向数据节点,而不是相反的传统方法。

但是

1) 我仍然不明白 - 以一种简单的方式 - 为什么其他经典并行编程实现不应该达到类似的性能并且

2) 我想知道 Hadoop map reduce 范式是否适用于数据大小较小的用例(即使源也是非结构化的)或者在这种情况下更合适的技术是什么?

你的问题很有道理。我已经深入研究了 MapReduce 和其他大数据生态系统并行框架,所以希望我能提供一些背景信息。出于本次对话的目的,让我们将 hadoop 的定义视为由 HDFS 和 MapReduce 组成的环境(忘记 Hive、Pig 等)。

1) 其他并行编程框架可以达到(甚至超过)Hadoop 的性能。 Hadoop 相对于大多数其他模型的优势在于容错性,以及许多低级细节都从应用程序开发人员那里抽象出来的事实,因此您无需成为专家系统程序员即可完成数 PB 的工作规模。

2) MapReduce 基本上可以在任何规模上运行(例如,参见 Apache 的字数统计示例 here,它很小)。话虽这么说,它在操作方面有相当大的开销,例如确定将文件写入何处和在计算端分块工作(所有这些都由 hadoop 为您处理)。在小范围内,您最好使用传统的 map() 和 reduce() 函数处理数据。概念完全相同,但执行方式不同。