|
Hadoop和Spark的选择是非常难的,Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。
通过Hadoop的工作流程,可以发现Hadoop存在以下缺点,具体如下:
1.表达能力有限,计算都必须要转化成Map和Reduce两个操作,但这并不适合所有的情况,难以描述复杂的数据处理过程。
2.磁盘IO开销大,每次执行时都需要从磁盘读取数据,并且在计算完成后需要将中间结果写入到磁盘中,IO开销较大。
3.延迟高,一次计算可能需要分解成一系列顺序执行的MapReduce任务,任务之间的衔接由于涉及到IO开销,会产生较高延迟。而且,在前一个任务执行完成之前,其他任务无法开始,因此难以胜任复杂,多阶段的计算任务。
Spark在借鉴 Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。相比于MapReduce,Spark主要有以下优点。
1.Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活。
2.Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率。
3.Spark基于DAG的任务调度执行机制,要优于Mapreduce的迭代执行机制。
Hadoop与Spark的执行流程经过对比,可以看到,Spark最大的特点就是将计算数据、中间结果都储存在内存中,大大减少了IO开销,因而Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。
尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型
|
|