hadoop - 当输入数据未存储时,Hadoop/MapReduce 如何扩展?

标签 hadoop mapreduce distributed-computing

当输入数据为 distributed 时,Hadoop 的预期用途似乎是(HDFS) 并且在映射过程中已经存储在节点本地。

假设我们有不需要存储的数据;数据可以在运行时生成。例如,映射过程的输入是每个可能的 IP 地址。 Hadoop 是否能够有效地跨节点分配 Mapper 工作?您是否需要明确定义如何将输入数据(即 IP 地址空间)拆分到不同的节点,或者 Hadoop 是否自动处理?

最佳答案

首先让我澄清一下您的评论。 Hadoop 旨在支持跨潜在大量节点的潜在大规模并行计算,而不管数据来自何处或去往何处。 Hadoop 设计在必要时更倾向于可扩展性而不是性能。确实,聪明地了解数据从哪里开始以及数据的分布方式可以对 hadoop 作业的运行速度/速度产生重大影响。

对于您的问题和示例,如果您要生成输入数据,您可以选择在第一个作业运行之前生成它,也可以在第一个映射器中生成它。如果您在映射器中生成它,那么您可以找出映射器在哪个节点上运行,然后只生成将在该分区中减少的数据(使用分区器在映射器和缩减器之间引导数据)

这将是任何分布式平台都会遇到的问题。例如,Storm 让您可以决定哪个 bolt 实例将处理每个元组。术语可能不同,但您将在 Storm 中实现与 Hadoop 大致相同的洗牌算法。

关于hadoop - 当输入数据未存储时,Hadoop/MapReduce 如何扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780181/

相关文章:

hadoop - 为什么hadoop丢失节点

hadoop - Flume每个文件批处理十行

hadoop - Hadoop集群中关键文件分布

hadoop - 为 mapreduce 洗牌和排序

architecture - 分布式网络和去中心化网络之间的区别

distributed-computing - 分布式系统是什么意思?

hadoop - hadoop如何存储数据和使用MapReduce?

hadoop - 混淆 hadoop、giraph 和 twister

hadoop - 控制映射器处理的记录数

python - 将(特定)celery 结果对象保留在 NoSQL 后端以供独立使用