分享

Spark1.0.0 的新特性

本帖最后由 pig2 于 2014-7-10 23:33 编辑
问题导读:
1、Spark的最新版本是什么?
2、Spark的内核组件增加的是什么?
3、其他杂项功能是什么?






前言
Spark1.0.0 release于2014-05-30日正式发布,标志Spark正式进入1.X的时代。Spark1.0.0带来了各种新的特性,并提供了更好的API支持;Spark1.0.0增加了Spark SQL这一个新的重要组件,用于加载和操作Spark的结构化数据;Spark1.0.0增强了现有的标准库(ML,streaming,GraphX),同时还增强了Java和Python语言的支持;最后,Spark1.0.0在运维上做了很大的改进,包括支持Hadoop/YARN安全机制、使用统一应用提交工具spark-submit、UI监控的增强等等。下面让我们看看Spark1.0.0的一些新特性:


1:内核方面
A:新增的组件Spark SQL
Spark1.0.0引入了Spark SQL作为一个新的alpha项目。Spark SQL提供了装载和操作结构化数据,这些结构化数据可以来自外部结构化数据源,如hive、Parquet File,也可以来自结构化的RDD。
Spark SQL的API可以和RDD数据模型进行互操作,使用户可以交错使用Spark代码与SQL语句。
Spark SQL使用Catalyst优化器来选择一个高效的执行计划,并能自动将断言保存到类似Parquet之类的存储格式中。在未来的版本中,Spark SQL也将提供一个通用的API,以支持其他存储系统。

B:Spark Steaming
Spark1.0.0 Streaming针对状态流转换方面进行了性能优化,改进了对Flume支持,以及增加了长时间运行任务的状态进行自动清理。

C:MLlib
Spark1.0.0 MLlib增加了Scala,Java和Python的稀疏特征向量支持,其利用了线性方法,K-means和朴素贝叶斯在存储和计算上稀疏性优势。
此外,增加了一些新的算法,如可扩展的决策树进行分类和回归,矩阵算法的分布式实现(包括SVD和PCA),模型评估函数以及和L-BFGS算法。

D:GraphX
Spark1.0.0 GraphX带来了图形负载,边缘逆转,和邻里计算方面性能的显著提升,因为这些操作现在需要更少的通信要求,产生RDD图更简单。


2:编程方面
A:更加稳定的API
对于非alpha版本的项目API会更稳定,而且会在1.X产品线上兼容下去。
在源代码上加以@DeveloperApi标注的API是指不稳定的内部API;以@Experimental标注的API是指面向用户的API,它以后可能稳定。

B:JAVA8的支持
Spark1.0.0增加了对Java8 lambda语法的支持, Java 8支持使用简洁的语法编写匿名函数,类似于在Scala和Python的闭包语法。这些变化在使用现有Java API时作一些微小的改变,具体可以参考文档。如:
  1. class Split extends FlatMapFunction<String, String> {
  2.   public Iterable<String> call(String s) {
  3.     return Arrays.asList(s.split(" "));
  4.   }
  5. );
  6. JavaRDD<String> words = lines.flatMap(new Split());
复制代码


使用Java 8的话:
  1. JavaRDD<String> words = lines.flatMap(s -> Arrays.asList(s.split(" ")));
复制代码


C:增强的Python
Spark1.0.0对Python API进行了扩展,以支持一些新的功能,也对Python API稳定性方面作了一些改进,特别是对于大型数据集。

D:使用spark-submit之后不再需要在代码中指定master
  1. conf = new SparkConf().setAppName(“My App”)
  2. sc = new SparkContext(conf)
复制代码



3:运维方面
A:应用提交工具spark-submit
Spark1.0.0简化了应用程序的提交方式,通过一个统一的提交工具spark-submit,用户可以将应用程序提交给Spark集群,如Standalone、YARN、Mesos,也可以指定是以client方式运行还是cluster方式运行。具体使用参见Spark1.0.0 应用程序部署工具spark-submit
  1. /bin/spark-submit \
  2.   --class <main-class>
  3.   --master <master-url> \
  4.   --deploy-mode <deploy-mode> \
  5.   ... # other options
  6.   <application-jar> \
  7.   [application-arguments]
复制代码


B:JobServer
Spark1.0.0提供了JobServer对任务进行调度。以后写专题博客进行讨论。

C:支持YARN安全机制
现有的Hadoop版本已经有了自己的安全机制,在YARN中运行应用的时候,Spark1.0.0支持YARN的安全机制。
在YARN环境中支持Kerberos authentication:
  1. spark.authenticate = true
复制代码


在UI上支持ACL:
  1. spark.ui.acls.enable = true
  2. spark.ui.view.acls = user1, user2
复制代码


D:UI监控的增强
可以在UI监控中取消job
显示shuffle时的GC信息

E:History Server
通过配置conf/spark-defaults.conf可以查看已完成job的历史记录
  1. spark.eventLog.enabled=true
  2. spark.eventLog.dir=hdfs://XX
复制代码


具体配置参见Spark1.0.0 history server 配置

F:PySpark现在支持在YARN上运行。


4:文档方面
A:编程指南描叙的更详细,涵盖所有支持的语言,更多地讨论开发生命周期的各种操作。
B:MLlib指南中每种算法增加了更多细节和例子。
C:配置指南中对YARN和Mesos的配置说明进行了改进。


5:杂项
A:使用DISK_ONLY进行数据集持久化时直接写入磁盘, 对于大数据集会显著提高内存的利用率。
B:新SparkContext.wholeTextFiles方法可以让小文本文件作为单个记录进行操作。
。。。




已有(1)人评论

跳转到指定楼层
admln 发表于 2015-1-12 10:14:17
不错,了解了一些功能历史
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条