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时作一些微小的改变,详细能够參考文档。如:
class Split extends FlatMapFunction<String, String> {
  public Iterable<String> call(String s) {
    return Arrays.asList(s.split(" "));
  }
);
JavaRDD<String> words = lines.flatMap(new Split());

使用Java 8的话:

JavaRDD<String> words = lines.flatMap(s -> Arrays.asList(s.split(" ")));

C:增强的Python

  • Spark1.0.0对Python API进行了扩展,以支持一些新的功能,也对Python API稳定性方面作了一些改进,特别是对于大型数据集。
D:使用spark-submit之后不再须要在代码中指定master
conf = new SparkConf().setAppName(“My App”)
sc = new SparkContext(conf)

3:运维方面

A:应用提交工具spark-submit

  • Spark1.0.0简化了应用程序的提交方式,通过一个统一的提交工具spark-submit,用户能够将应用程序提交给Spark集群,如Standalone、YARN、Mesos,也能够指定是以client方式执行还是cluster方式执行。详细使用參见Spark1.0.0
    应用程序部署工具spark-submit
/bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  ... # other options
  <application-jar> \
  [application-arguments]
B:JobServer
Spark1.0.0提供了JobServer对任务进行调度。以后写专题博客进行讨论。

C:支持YARN安全机制

  • 现有的Hadoop版本号已经有了自己的安全机制,在YARN中执行应用的时候,Spark1.0.0支持YARN的安全机制。
  • 在YARN环境中支持Kerberos authentication:

spark.authenticate = true
  • 在UI上支持ACL:
spark.ui.acls.enable = true
spark.ui.view.acls = user1, user2

D:UI监控的增强

  • 能够在UI监控中取消job
  • 显示shuffle时的GC信息

E:History Server

  • 通过配置能够查看已完毕job的历史记录
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://XX
  • 在Standalone模式下,History Server内嵌在master上;在YARN/Mesos模式下,能够守护模式执行History Server。

F:PySpark如今支持在YARN上执行。


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

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


Spark1.0.0新特性的更多相关文章

  1. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  2. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  3. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

  4. 相比于python2.6,python3.0的新特性。

    这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...

  5. MySQL 8.0 InnoDB新特性

    MySQL 8.0 InnoDB新特性 1.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe,metadata管理更完善 2.快速在线加新列(腾讯互娱DBA团队贡献) 3. ...

  6. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性

    Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...

  7. [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性

    从PHP 5.6.x 移植到 PHP 7.0.x 新特性: 1.标量类型声明 字符串(string), 整数 (int), 浮点数 (float), 布尔值 (bool),callable,array ...

  8. servlet3.0 的新特性之二注解代替了web.xml配置文件

    servlet3.0 的新特性: 注解代替了 web.xml 文件 支持了对异步的处理 对上传文件的支持 1.注解代替了配置文件 1.删除了web.xml 文件 2. 在Servlet类上添加@Web ...

  9. C# 6.0/7.0 的新特性

    转眼C#语言都已经迭代到7.0版本了,很多小伙伴都已经把C# 7.0 的新特性应用到代码中了,想想自己连6.0的新特性都还很少使用,今天特意搜集了一下6.0和7.0的一些新特性,记录一下,方便查阅. ...

  10. C#6.0的新特性之内插字符串

    https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interpolated-strings C# 6 ...

随机推荐

  1. UVa 11729 Commando War 突击战

    你有 n 个部下,每个部下需要完成一个任务.第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地.无间断地执行 Ji 分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最 ...

  2. poj 1787 Charlie's Change

    // 题意 给定一个数p,要求用四种币值为1,5,10,25的硬币拼成p,并且硬币数要最多,如果无解输出"Charlie cannot buy coffee.",1<=p&l ...

  3. Zend Framework 入门(4)—页面布局

    Zend Framework 的页面布局模块——Zend_Layout——既可以跟 MVC 一起使用,也可以单独使用.本文只讨论与 MVC 一起使用的情况. 1. 布局脚本 在 application ...

  4. Pacman主题下给Hexo增加简历类型

    原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/ 背景 虽然暂时不找工作,但是想着简历 ...

  5. Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset

    原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTab ...

  6. C++指针的引用

    [1]指针的引用,必须加上头文件<iomanip>因为调用类setw() 对一个数据可以使用“引用”(reference)这是C++           对C的一个重要扩充,引用是一种新的 ...

  7. <转>亲手缔造DNS体系,创建DNS私有根:DNS系列之六

    打造DNS私有根 我们现在已经从前面的博文中了解到了很多DNS的相关知识,今天我们用一个综合性的实验把前面的内容都串起来复习一下,这个有趣的实验就是DNS的私有根.私有根顾名思义是由个人或企业自行创建 ...

  8. 双nginx(主备、主主)反向代理tomcat实现web端负载均衡

    经过以前做完的产品,受前公司几位前辈技术大拿指点,来自己动手实现并总结一下web端的负载解决方法,高手请略过,个人认知有限,请各位指正错误. 下面是结构图: 我的系统环境是Fedora22(适用rea ...

  9. 【和我一起学python吧】python的数据类型

    python的元组.列表.字典数据类型是很python(there python is a adjective )的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的 ...

  10. ThinkPHP中U方法与url的四种访问模式

     ThinkPHP中U方法的用处主要是完成对url地址的组装,在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码.在模板中的调用格式需 ...