若说大数据处理框架当中的强劲对手,Spark和Hadoop一定名列其中。Hadoop框架发行得早,系统稳定可靠,Spark发行得相对晚一些,但是在计算性能上,有极大的提升。这两者各有优势,因此常常被拿来做对比。今天我们来聊聊Spark和Hadoop工作流程有何不同。
Hadoop可以说是大数据领域资格“最老”的平台框架了,到今年,已经有了十来年的发展历史了,一提到大数据,必提到Hadoop,Hadoop已经俨然成为大数据的代名词之一了。
Hadoop当中负责计算的是MapReduce框架,在Hadoop系统框架当中,所有的计算任务,都需要转换成Map和Reduce两个操作,这就导致MapReduce在面对一些复杂的数据处理任务时,表达能力有限。
其次MapReduce基于磁盘进行计算,要求每个步骤间的数据序列化到磁盘,所以I/O成本很高,导致交互分析和迭代算法开销很大,因此对交互分析和机器学习方面的场景,Hadoop不具备任何的优势。
总体来说,apReduce存在的延迟过高,无法胜任实时、快速计算需求的问题,使得需要进行多路计算和迭代算法的用例的作业过程并非十分高效。
所以,后来的Spark框架,针对Hadoop MapReduce的缺陷,做了明显的优化。
Spark基于内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。并且,通过支持有向无环图(DAG)的分布式并行计算的编程框架,Spark减少了迭代过程中数据需要写入磁盘的需求,提高了处理效率。
另外,Spark的计算模式也属于MapReduce类型,但提供的操作不仅包括Map和Reduce,还提供了包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join等多种转换操作,以及Count、Collect、Reduce、Lookup、Save等行为操作。
Spark和Hadoop的核心思想都是分布式并行计算,但是各自的执行操作不同,在计算性能上的表现也就有了差异。