Hadoop 相同任务/不同数据的MapReduce

Hadoop 相同任务/不同数据的MapReduce,hadoop,mapreduce,Hadoop,Mapreduce,我们有一个由多个PostgreSQL数据库组成的系统。每个数据库都有相同的表,即模式,但只携带一部分数据(而不是全部数据!)。分发数据的原因是我们的客户运行的查询相当复杂,每行最多执行100次计算 通过将数据分发到多个数据库,我们希望减少每个数据库处理的工作量,并最终加快搜索速度。最后,我们结合每个数据库的结果来创建最终结果 我的一个朋友建议看一下MapReduce(Hadoop)。在我看来,map reduce只有在单个工作人员共享相同的数据但对其执行不同类型的工作时才有意义(对应于多条指令、

我们有一个由多个PostgreSQL数据库组成的系统。每个数据库都有相同的表,即模式,但只携带一部分数据(而不是全部数据!)。分发数据的原因是我们的客户运行的查询相当复杂,每行最多执行100次计算

通过将数据分发到多个数据库,我们希望减少每个数据库处理的工作量,并最终加快搜索速度。最后,我们结合每个数据库的结果来创建最终结果

我的一个朋友建议看一下MapReduce(Hadoop)。在我看来,map reduce只有在单个工作人员共享相同的数据但对其执行不同类型的工作时才有意义(对应于多条指令、单个数据)。
然而,在我们的例子中,工人应该执行相同的任务,但对不同的数据执行该任务(对应于单个指令、多个数据)

对于在不同数据上执行相同任务的范例,MapReduce(Hadoop)有意义吗?

MapReduce(Hadoop)对于在不同数据上执行相同任务的范例有意义吗


我认为你对Hadoop和MapReduce有误解。MapReduce作业确实可以处理相同类型的数据(即“相同的表”),但数据段不同。并行映射和Reduce任务在数据的不同部分上是相同的任务。根据您的定义,MapReduce绝对是“单指令、多数据”

Hadoop绝对不是SQL数据库的替代品。他们用不同的方式做不同的事情。以下是需要注意的其他事项:

请注意,MapReduce只会真正为您执行批处理分析。例如汇总、计数和聚合。您将无法使用MapReduce有效地检索或搜索。此外,在Hadoop中更新数据并不是您想要做事情的典型方式——您将事情视为更多的“仅附加”。对于其中的任何一个,您都可能想看看HBase

Hadoop的文件系统为您分割数据。从文件系统的角度来看,它看起来像文件夹中包含CSV(或其他文件格式)的文件。文件被分割成块,然后可以使用映射任务单独操作这些块。您不必像现在这样手动分割数据

看看蜂巢。它是MapReduce之上的一个抽象层,它将SQL的轻版本解释为MapReduce。它应该允许您更轻松地转换一些逻辑