前言
今天Spark最终跨出了里程碑的一步,1.0.0版本号的公布标志着Spark已经进入1.0时代。1.0.0版本号不仅增加了非常多新特性,而且提供了更好的API支持。Spark SQL作为一个新的组件增加,支持在Spark上存储和操作结构化的数据。已有的标准库比方ML、Streaming和GraphX也得到了非常大程度上的增强,对Spark和Python的接口也变得更稳定。下面是几个基本的改进点:
融合YARN的安全机制
Hadoop有着自己的安全机制,包含认证和授权。Spark如今能够和Hadoop/YARN的安全模型并存,也就是说Spark能够对任务提交(job submission)进行认证,能够使用HDFS的认证机制进行数据的安全传输,各组件之间也添加了互相认证。
改善了任务提交的流程
这个版本号在非常大程度上增强了Spark应用的提交。Spark启用新的任务提交工具spark-submit tool以便可以通过一个普通进程向任一Spark集群提交应用程序。Spark的UI界面中也添加了历史任务的记录,方便了用户查看已经结束了任务执行情况。
Spark SQL的增加
Spark SQL作为一个新组建添加到1.0.0版本号中,它能够利用Spark进行结构化数据的存储和操作,结构化数据既能够赖在外部结构化数据源(当前支持Hive和Parquet),也能够通过向已有RDD添加schema的方式得到。
Spark SQL提供了方便的调用接口,用户能够通过SQL语句来与Spark代码交互。当前Spark SQL使用Catalyst优化器来对SQL语句进行优化从而得到更有效的运行方案,而且能够将结果存储到Parquet格式中,在将来Spark SQL还会兼容其它的存储系统。
MLib的改进
这个版本号的MLib添加了对Scala、Java、Python中稀疏特征向量的支持,其主要利用了线性方法、k-means和朴素贝叶斯在存储和计算上的稀疏性。1.0.0的MLib还添加了几个新的算法,包含为分类和回归添加了可扩展的决策树、矩阵算法的分布式实现(包含SVD和PCA)、模型评估函数以及L-BFGS算法。
GraphX和Streaming的改进
GraphX在图载入、边反转和邻接计算方面对通信的要求更低,产生的RDD图更简单,从而在性能方面得到了非常大提升。
Spark Streaming提供了对Flume的支持,在状态流转换方面进行了很多优化,而且可以对长时间执行任务的状态进行自己主动清理。
另外,Spark还对调用接口提供了更好的支持,包含对Java 1.8的支持,对Python很多其它版本号的兼容,使用对外内存进行RDD的cache,对小文件的更好支持等。
后记
非常荣幸从0.7.3版本号就開始熟悉、使用Spark,也非常开心自己介入了Spark开源项目的贡献,1.0.0的release note中已经有了自己的身影。尽管做了仅仅是非常小的贡献,可是还是感到一点点的满足感,未来会继续关注开源社区。
近期会增强对Spark的使用,并開始从架构上源代码级别的分析Spark。
參考:http://spark.apache.org/releases/spark-release-1-0-0.html
声明:
本文为原创,禁止用于不论什么商业用途,转载请注明出处:http://blog.csdn.net/asongoficeandfire/article/details/27725401
Spark 1.0.0版本号公布