What’s new in Spark 1.2.0

What’s new in Spark 1.2.0

1.2.0 was released on 12/18, 2014

在2014年5月30日发布了Spark 1.0 和9月11日发布了Spark1.1.后,Spark 1.2 终于在12月18日发布。作为1.X时代的第三个release,它有什么重要更新呢?

1.    Spark Core:性能和易用性的改进

对于超大规模的Shuffle,Spark Core在性能和稳定性方面做了两个重要的更新:

一)     Communication Manager使用Netty实现

在1.1 之前,对于Shuffle的结果回传,有两种方式,对于较小的结果,直接使用akka的消息传递机制;对于较大的结果,则采用BlockManager。采用BlockManager是不错的设计,可以避免Driver占用过多的内存而OOM并且减少了GC的风险。但是,BlockManger的处理是低效的:它先从Disk中将结果读取到kernel的buffer,然后到用户空间的buffer,然后又到了kernel的send buffer,这期间有多次的内存拷贝和kernel space到user space的切换代价。着不单单是占用了JVM的不必要的内存,而且还增加了GC的频率。不过,使用FileChannel.transferTo,可以做到zero copy。具体可见http://www.ibm.com/developerworks/library/j-zerocopy/

其中一种实现就是Netty,1.2中,使用Netty 重写了Communication Manager。实际上,在org.apache.spark.network.netty中已经实现了netty得网络模块,但是由于不完善而这个选项默认是没有打开的。

而且,使用Netty已经是默认的了。spark.shuffle.blockTransferService 已经从1.1的nio变成1.2 中新增的netty了。关于这个PR的详情可见 https://issues.apache.org/jira/browse/SPARK-2468

二)     Shuffle的默认机制从hashbased 转化为sort based

MapReduce被人诟病之一就是不管sort是否必要,都需要排序。Spark在1.1之前,都是hash based Shuffle。但是hash based会占用大量的内存,当然了在内存不够用时,也会spill到disk,然后最后再做一次merge。对于比较大的数据集,因为有disk IO,因此性能也会有所下降。Shuffle的性能的好坏可以说直接影响整个job的性能也不为过。在1.1的时候,引入了sort based shuffle。在1.2的时候,这个已经能够成熟并且成为默认的选项:

spark.shuffle.manager 从hash 变为sort。

并且从作者Reynold Xin的测试来看,sort 在速度和内存使用方面优于hash:“sort-based shuffle has lower memory usage and seems to outperformhash-based in almost all of our testing.”

2.    MLlib: 扩充了Python API

3.    Spark Streaming:实现了基于WriteAhead Log(WAL)的HA,避免因为Driver异常退出导致的数据丢失

4.    GraphX: 性能和API的改进(alpha)

Spark 1.2 是来自60多家企业,学校等研究机构的172位贡献者的一次重要发布。从Contributor的数量看,Spark社区依然是最活跃的开源社区之一。

从Spark的历次更新都可以看出,快速迭代是互联网的王道。Spark发展到现在,虽然依然有这样的那样的问题,但是依靠不断的迭代,各大厂商的支持和各位contributor的不断付出,相信社区会持续快速发展。虽然商业软件可能几年前就已经解决了这些问题,商业软件可能在某个应用场景已经有了最佳的实现。但是互联网的禀赋就在于不求最优,只求合适。而且对于各个中小型的互联网公司来说,场景不断在变,需要一个自己可以掌控的架构,随着自身的发展不断的在这个架构上做快速的迭代。而Spark,或许就是这个适合大家的架构。

后记:虽然没有几个小时,发现体力完全不行了。以后还是需要锻炼身体,锻炼身体啊。

时间: 2024-10-12 13:29:13

What’s new in Spark 1.2.0的相关文章

Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 操作系统环境准备 Hadoop 2.4.1集群搭建 Spark 1.5.0 集群部署 注:在利用CentOS 6.5操作系统安装spark 1.5集群过程中,本人发现Hadoop 2.4.1集群可以顺利搭建,但在Spark 1.5.0集群启动时出现了问题(可能原因是64位操作系统原因,源码需要重新编译,但本人没经过测试),经本人测试在ubuntu 10.04 操作系统上可以顺利成功搭建.大家可以利用CentOS

Apache Spark 1.5.0正式发布

Spark 1.5.0是1.x线上的第6个发行版.这个版本共处理了来自230+contributors和80+机构的1400+个patches.Spark 1.5的许多改变都是围绕在提升Spark的性能.可用性以及操作稳定性.Spark 1.5.0焦点在Tungsten项目,它主要是通过对低层次的组建进行优化从而提升Spark的性能.Spark 1.5版本为Streaming增加了operational特性,比如支持backpressure.另外比较重要的更新就是新增加了一些机器学习算法和工具,

Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Input DStreams 和 Receivers(接收器) DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久性 Checkpointing Accumulators, Broadcas

Apache Spark 2.2.0 中文文档 - SparkR (R on Spark) | ApacheCN

SparkR (R on Spark) 概述 SparkDataFrame 启动: SparkSession 从 RStudio 来启动 创建 SparkDataFrames 从本地的 data frames 来创建 SparkDataFrames 从 Data Sources(数据源)创建 SparkDataFrame 从 Hive tables 来创建 SparkDataFrame SparkDataFrame 操作 Selecting rows(行), columns(列) Groupin

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio

Spark 1.1.0 编译(为了支持hbase 0.98.6)

为了支持hbase0.98.6,需要重新编译spark 1. 下载spark 1.1.0源代码,以及 scala-2.10.4的bin包. 将环境变量 SCALA_HOME 设置为 scala-2.10.4 的目录位置. 2. 下载较新的pom.xml (https://github.com/tedyu/spark) 将该repository中的 spark/pom.xml和spark/examples/pom.xml下载下来,覆盖至用于编译的spark源代码中. 3. 进入源代码目录编译 ex

Apache Spark 2.2.0新特性介绍(转载)

这个版本是 Structured Streaming 的一个重要里程碑,因为其终于可以正式在生产环境中使用,实验标签(experimental tag)已经被移除.在流系统中支持对任意状态进行操作:Apache Kafka 0.10 的 streaming 和 batch API支持读和写操作.除了在 SparkR, MLlib 和 GraphX 里面添加新功能外,该版本更多的工作在系统的可用性(usability).稳定性(stability)以及代码的润色(polish)并解决了超过 110

Spark学习笔记0

自学Spark已经有一段时间,之前遇到了很多阻力,从Scala语法,基本概念,源码编译,环境部署,开发环境只能自己慢慢尝试,几乎是一步一个跟头.当还在痛苦的读着源码时候,发现spark的版本还在不断的升级,新的东西越来越多,让人应接不暇.偶然间发现51CTO的相关资源,希望共享给同时Spark的学习者们,避免他们再走我走过的弯路.也希望开始将自己学习Spark的过程记录下来. 王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员! 您可以通过王家林老师的微信号1861008685

【Spark学习】Spark 1.1.0 with CDH5.2 安装部署

[时间]2014年11月18日 [平台]Centos 6.5 [工具]scp [软件]jdk-7u67-linux-x64.rpm spark-worker-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.noarch.rpm spark-core-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.noarch.rpm spark-history-server-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.