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-11-01 02:36:19

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

Spark 1.5.0 远程调试

Spark 1.5.0 远程调试 作者:摇摆少年梦 微信号:zhouzhihubeyond 先决条件 已安装好Spark集群,本例子中使用的是spark-1.5.0. 安装方法参见:http://blog.csdn.net/lovehuangjiaju/article/details/48494737 已经安装好Intellij IDEA,本例中使用的是Intellij IDEA 14.1.4,具体安装方法参见:http://blog.csdn.net/lovehuangjiaju/articl

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

浅谈Spark几种不同的任务提交相关脚本(以Spark 1.5.0为例)

本节主要内容 spark-shell spark-submit spark-sql spark-class 总结 1. spark-shell spark-shell脚本文件内容如下: #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed

Spark Release 2.0.0发版概序

Spark2.0在2016年7月26日发布,因为工作中经常用到,所以对它关注比较多,正好今天"提前"下班,所以抽空翻译一下spark2.0发版概述,简单的介绍一下spark2.0的新特性和新变化.好吧,现在就让村长带领大家一起走进spark2.0的神秘殿堂.同时也希望更多的人参入进来,知识因为共享才变的有意义和价值. 译者注:因为由于时间原因,导致翻译不及时,信息有一定的滞后,在此村长深表歉意.同时也希望更多优秀人才参入进来,让最新最优秀的文章第一时间与有梦想的人分享,一起进步,共同成

将Spark部署到Hadoop 2.2.0上

本文介绍的是如何将http://www.aliyun.com/zixun/aggregation/14417.html">Apache Spark部署到Hadoop 2.2.0上,如果你们的Hadoop是其他版本,比如CDH4,可直接参考官方说明操作. 需要注意两点:(1)使用的Hadoop必须是2.0系列,比如0.23.x,2.0.x,2.x.x或CDH4.CDH5等,将Spark运行在 Hadoop上,本质上是将Spark运行在Hadoop YARN上,因为Spark自身只提供了作业管

Spark配置参数

以下是整理的Spark中的一些配置参数,官方文档请参考Spark Configuration. Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh脚本设置.例如IP地址.端口等信息 日志配置:可以通过log4j.properties配置 Spark属性 Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它.这些属性可以直接在Spark

『 Spark 』5. 这些年,你不能错过的 spark 学习资源

原文链接:『 Spark 』5. 这些年,你不能错过的 spark 学习资源 写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来.写这样一个系列仅仅是为了梳理个人学习spark的笔记记录,所以一切以能够理解为主,没有必要的细节就不会记录了,而且文中有时候会出现英文原版文档,只要不影响理解,都不翻译了.若想深入了解,最好阅读参考文章和官方文档. 其次,本系列是基于目前最新的 spark 1.6.0 系列开始的,spa

Spark本地模式运行

Spark的安装分为几种模式,其中一种是本地运行模式,只需要在单节点上解压即可运行,这种模式不需要依赖Hadoop 环境.在本地运行模式中,master和worker都运行在一个jvm进程中,通过该模式,可以快速的测试Spark的功能. 下载 Spark 下载地址为http://spark.apache.org/downloads.html,根据页面提示选择一个合适的版本下载,这里我下载的是 spark-1.3.0-bin-cdh4.tgz.下载之后解压: cd ~ wget http://mi

《深入理解SPARK:核心思想与源码分析》(第1章)

       自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售,欢迎感兴趣的同学购买.我开始研究源码时的Spark版本是1.2.0,经过7个多月的研究和出版社近4个月的流程,Spark自身的版本迭代也很快,如今最新已经是1.6.0.目前市面上另外2本源码研究的Spark书籍的版本分别是0.9.0版本和1.2.0版本,看来这些书的作者都与我一样,遇到了这种问