首页 理论教育 MapReduce的问题与解决方法

MapReduce的问题与解决方法

时间:2023-06-24 理论教育 版权反馈
【摘要】:MapReduce是一个非常流行的大数据处理方式,然而MapReduce还存在一些问题:没有对高层次语言的支持,必须使用编程语言来写Map和Reduce函数。MapReduce没有内存缓存机制,这对于中间结果会被再次使用的情形效率很低。在这些系统中,高层次的语言将被转变为低层次的MapReduce操作。Apache Spark就是一个类似于MapReduce但是可以将常用数据存在内存节点中,且具备容错机制的系统。它和MapReduce相比大约能快10到100倍的速度。

MapReduce的问题与解决方法

MapReduce是一个非常流行的大数据处理方式,然而MapReduce还存在一些问题:

(1)没有对高层次语言(例如SQL)的支持,必须使用编程语言(例如Java, Python)来写Map和Reduce函数。许多不是计算机领域的用户,例如科学家,并不擅长使用低层次语言。

(2)不适用于某些并行处理任务。例如,MapReduce不支持实时计算,因为它启动很慢(通常要超过1 min)。 MapReduce还不适用于很多图挖掘任务,因为图挖掘通常需要多次MapReduce过程(每轮迭代一次),但MapReduce的启动代价太高。MapReduce没有内存缓存机制,这对于中间结果会被再次使用的情形效率很低。例如,在我们之前k-means聚类的例子中,数据点和簇中心会在计算中一次又一次地使用,所以在内存中进行缓存会很有作用。

下面我们对以上问题现有的一些解决方法进行讨论。

(1)对高层次语言(例如SQL)的支持。现在已经存在一些基于MapReduce但是支持高层次语言的系统了,例如HIVE(Apache的一个项目)就支持类SQL语言。PIG( Apache的一个项目)支持被称为Pig Latin的数据流语言(数据流语言指定了数据每一步如何处理)。在这些系统中,高层次的语言将被转变为低层次的MapReduce操作。(www.xing528.com)

(2)增加对实时处理的支持。可以在Hadoop之上直接构建一个支持实时处理的系统,MapReduce仍然能被用来创建实时处理要用的数据结构。例如,可以在Hadoop上建立一个在大规模文档内进行关键词搜索的信息检索系统,该检索系统的索引结构可以通过MapReduce离线建立。

(3)特定的图挖掘系统。现在已经有一些特定的图挖掘工具,例如Pregel( Google)[3]和Graphlab[4]

(4)增加内存缓存机制。Apache Spark就是一个类似于MapReduce但是可以将常用数据存在内存节点中,且具备容错机制的系统。它和MapReduce相比大约能快10到100倍的速度。例如,在k-means聚类的例子中,可以在Spark中使用相同的Map和Reduce函数,但通过增加几行代码将所有的数据点和聚类中心缓存在内存中,这对原始的MapReduce可以有显著的速度提升。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈