关于为什么Spark的发展速度比Hadoop更快的原因和趋势
原因
1. Spark非常容易使用。Spark Notebook,Spark与Java/Scala/Python/R的互操作性都做得非常好。而Hadoop的早期用户和社区的主要贡献者都来自于大公司,服务于资深用户。资深用户更关注功能是否完善、系统是否稳定,而易用性就不是主要的考虑因素。
2. Spark是为交互式使用设计的。这体现在聚焦于规模较小的数据处理应用,因而使用内存来加速变得非常重要。这也体现在剔除很多不必要的开销,例如JVM启动时间、polling/heartbeat interval、用来防止出现Self-DDOS的sleep/wait。而Hadoop社区的决定者很多都是大公司。在那里,超大规模的数据计算是最重要的,而几秒钟的启动时间和等待都是无关紧要的。
3. Spark的Committer非常注重发展外部的代码贡献者。一开始,辅导外部的代码贡献者来提交patch可能比Committer自己写code提交patch更慢,但是辅导外部的代码贡献者是一个很好的投资,可以有长期的回报。显然,这个策略在Spark身上非常奏效。
相对来说,Spark的技术比较新,所以运维稳定性、调试等方面不及Hadoop的相关技术。今年Berkeley AMPLAB就专门在USENIX NSDI 2015上发表了一篇文章 Making Sense ofPerformance in Data Analytics Frameworks 来讲述如何调试Spark的性能问题。
趋势1. Hadoop技术进一步的成熟。Hadoop最近的比较大的进步都是在运维稳定性和性能上的,例如HA(High Availablility)for YARN ResourceManager,Rolling Upgrades,Erasure Coding Support inside HDFS 等等。 相对来说,用户可用的新功能较少。
2. Spark在Machine Learning和Data Science/Statistics用户中的普及非常快。Spark Notebook,MLLib,SparkR 是Spark的几个杀手级的产品。SparkSQL中的DataFrame也是一个非常有效的功能,但SparkSQL在Data Warehouse领域(如ETL,BI等)的前景还有待进一步的观察,因为SparkSQL毕竟是后来者。
3. Spark和Hadoop的生态系统在融合。这点可以参见Hadoop & Spark,Perfect Together。Hadoop和Spark各自都有很多子项目。对于一个大数据的高级用户来说,他/她所做的决定一定不是”我到底用Hadoop还是Spark“,而是"我到底用Hadoop的哪些组件和Spark的哪些组件"。所以,对Hadoop和Spark的各个子项目的了解变得非常重要。CDA大数据分析师3月脱产班12月25日开课了 http://cda.pinggu.org/bigdata-jy.html