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,也许就是这个适合大家的架构。
后记:尽管没有几个小时间,我发现实力完全死。你还需要锻炼。练习啊。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
What’s new in Spark 1.2.0的更多相关文章
- Spark快速入门 - Spark 1.6.0
Spark快速入门 - Spark 1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 快速入门(Quick Start) 本文简单介绍了Spark的使用方式.首 ...
- 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.1 ...
- Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN
Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ...
- Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN
Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- Apache Spark 2.2.0 中文文档 - SparkR (R on Spark) | ApacheCN
SparkR (R on Spark) 概述 SparkDataFrame 启动: SparkSession 从 RStudio 来启动 创建 SparkDataFrames 从本地的 data fr ...
- [Spark性能调优] 第三章 : Spark 2.1.0 中 Sort-Based Shuffle 产生的内幕
本課主題 Sorted-Based Shuffle 的诞生和介绍 Shuffle 中六大令人费解的问题 Sorted-Based Shuffle 的排序和源码鉴赏 Shuffle 在运行时的内存管理 ...
- Apache Spark 2.2.0新特性介绍(转载)
这个版本是 Structured Streaming 的一个重要里程碑,因为其终于可以正式在生产环境中使用,实验标签(experimental tag)已经被移除.在流系统中支持对任意状态进行操作:A ...
随机推荐
- 字符串匹配算法(KMP)
字符串匹配运用很广泛,举个简单例子,我们每天登QQ时输入账号和密码,大家有没有想过账号和密码是怎样匹配的呢?登录需要多长时间和匹配算法的效率有直接的关系. 首先理解一下前缀和后缀的概念: 给出一个问题 ...
- 杭电ACM 汉字统计
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- [置顶] 程序员必知(二):位图(bitmap)
位图是什么? 位图就是数组,一般来说是bit型的数组,具有快速定位某个值的功能,这种思想有很广泛的应用,比如下边两题: 1 找出一个不在5TB个整数中存在的数 假设整数是32位的,总共有4GB个数,我 ...
- Python——str(字符串)内部功能介绍
str内部功能详解: class str(object): """ str(object='') -> str str(bytes_or_buffer[, enco ...
- 转: seajs手册与文档之 -- 模块标识
目录 模块标识 相对标识 顶级标识 普通路径 文件后缀的提示 模块标识 模块标识是一个字符串,用来标识模块.在 require. require.async 等加载函数中,第一个参数都是模块标识.de ...
- 关于sql 中 group by 和 having
今天看到园里一篇文章(http://www.cnblogs.com/sheldon-lou/p/4881230.html)中面试中有关sql 查询方面的问题, 想想自己从上大学就学习数据库,到后来自己 ...
- 绫致时装讲述O2O细节:野心在“私人定制” - 移动购物 - 亿邦动力网
绫致时装讲述O2O细节:野心在"私人定制" - 移动购物 - 亿邦动力网 绫致时装讲述O2O细节:野心在"私人定制" 作者: 亿邦动力网来源: 亿邦动力网201 ...
- 浅谈独立使用NDK编译库文件(Android)
阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...
- Handler总结
一.整体工程图 二.activity_handler.xml <?xml version="1.0" encoding="utf-8"?> < ...
- 【数据库摘要】5_Sql_IN
IN 操作符 IN 操作符同意您在 WHERE 子句中查找多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...