前言
今天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版本发布,布布扣,bubuko.com