我们有一个由多个PostgreSQL数据库组成的系统。每个数据库都有相同的表,即模式,但只包含数据的一部分(而不是完整的数据!).The分发数据的原因是,我们的客户运行的查询非常复杂,每行最多执行100个计算。
通过将数据分发到多个数据库,我们希望减少每个数据库处理的工作量,并最终加快搜索速度。最后,我们结合每个数据库的结果来创建最终的结果。
我的一个朋友推荐看MapReduce (Hadoop)。在我看来,只有当单个员工共享相同的数据但对其执行不同类型的工作(对应于多个指令,单个数据)时,map-还原才有意义。
但是,在我们的示例中,工作人员应该执行相同的任务,但是对各种数据(对应于单个指令、多个数据)执行该任务。
MapReduce (Hadoop)对范例来说有意义吗?在不同的数据上执行的任务相同吗?
发布于 2013-11-13 14:05:15
MapReduce (Hadoop)对于在不同数据上执行的相同任务的范式有意义吗?
是。
我认为你对Hadoop和MapReduce有一个误解。MapReduce作业确实可以处理相同类型的数据(即“相同的表”),但是处理数据的不同部分。并行映射和约简任务是数据的不同部分上的相同任务。从您的定义来看,MapReduce绝对是“单指令、多数据”。
Hadoop绝不是SQL数据库的插入替代。他们以不同的方式做不同的事情。以下是一些需要注意的其他事情:
请注意,MapReduce实际上只会为您进行批处理分析。像卷起、计数和聚集之类的东西。您将无法有效地检索或使用MapReduce进行搜索。另外,在Hadoop中更新数据并不是您想要做的一种典型方式--您将事物更多地视为“仅附加”。对于其中的任何一个,您可能都想看看HBase。
Hadoop的文件系统为您分割数据。从文件系统的角度来看,它将类似于包含CSV (或其他文件格式)的文件夹中的文件。文件被分割成块,然后可以通过映射任务单独操作这些块。您不必像现在这样手动分割数据。
看看蜂巢。它是MapReduce之上的一个抽象层,它将SQL的轻量级版本解释为封面下的MapReduce。它应该允许您更容易地转换您的一些逻辑。
https://stackoverflow.com/questions/19951981
复制相似问题