对于大数据来说,hadoop与spark无疑是两大重要的组成架构。中培教育《大数据平台搭建与高性能计算最佳实践》培训专家钟老师指出,hadoop与spark作为大数据的两大架构系统,二者有着竞争与承前启后的关系。对于二者之间的区别以及后期的发展趋势,钟老师给出了自己的看法。
首先,spark对于海量数据计算,尤其是迭代运算,图计算运算速度相比与hadoop有着量级上的增长。spark计算的时候将原始数据及中间结果都存储在内存中,而hadoop每轮迭代都要讲原始数据读入,中间结果写出到硬盘上。这样一来由于spark省去了IO的时间,所以相比于hadoop,其运算速率有这量级上的增长。
其次,spark的容错性很好,spark将海量数据抽象成RDD这种数据结构,并且其存在两种算子,一种叫transformation,主要是用于对RDD进行数据转换,一种叫action,是要将转换好的RDD再转换成原始数据。
spark运算是一种懒惰运算,其程序执行逻辑是,对于一系列transformation算子,在遇到action算子之前,这些transformation是不会执行的,而会生成一个运算逻辑图,当遇到一个action算子的时候,才根据前面的运算逻辑图执行程序。这样如果有台机器宕机了之后,只需要根据逻辑图将宕机中的RDD进行重新计算就可以了(窄依赖的情况下,宽依赖的情况下计算代价要更高。)
同时,spark与HDFS、Yarn/Mesos以及pregel有着很好的兼容性。但是毕竟spark起步晚,在性能、稳定性方面还有待提高;同时spark不能很好的处理细粒度、异步的数据。
Hadoop,性质和Spark并不一样,它不仅仅是一个框架,而致力于发展成一个分布式计算的平台。所以,现在的Spark是可以运行在YARNYet another Resource Negotiator)上的,而其他的一些框架也可以运行在这个平台上,达到资源共享的目的。
spark相对hadoop编程模型简单,能进行迭代操作,利用内存(甚至是堆外内存)缓存数据,能进行流水线优化,上层封装了sql、streaming、mlib、graphx等或成熟或不成熟的框架,明显有取hadoop而代之的倾向。
1. 相同的算法,Spark比Hadoop快数倍,如果是一些迭代或者要对数据反复读取的算法,Spark比Hadoop快数十倍至上百倍
2. Spark对于数据的操作种类更多,对于一些比较特殊的计算需求,比如求两个集合的交集并集,Spark都有函数直接计算,而Hadoop实现这样的计算无比繁琐
3. Spark的开发效率比Hadoop高很多
最后,钟老师对二者的发展趋势进行了展望,他认为虽然Spark目前还不够成熟,但其无疑代表着未来。