http://mp.weixin.qq.com/s?__biz=MjM5NTc2MTg3Mw==&mid=201641685&idx=1&sn=1b75be3d774bb3f26b6714674dbefc64&scene=2&from=timeline&isappinstalled=0#rd

1.2居然真的在12月份发布了,我表示略感意外,我一直以为稍微跳个票要到明年一月初才能发的。这次更新有172个开发者参与,并且有1000多个commits。这真是一个了不起的数字。本次版本给我们带来了很多新特性,并且也有不少的性能优化点。我说几个比较重要的吧。

Spark Core:

1、在传大量数据的情况下,communication manager终于换成netty-based的实现了。之前的实现慢的要死是因为每次都要从磁盘读到内核,再到用户态,再回到内核态进入网卡,现在用zerocopy来实现了。(想起来没,Kafka也是用的这个)。

2、shuffle manager换成sort based了,在shuffle数据比较大的时候,性能会有提升。不过也有不少人认为这个Hadoop的sort是一样的,微博上也有人提出了这一点,本想回复解释时,发现连城已经回复了。其实目前Spark的sort只是按照Partition key排序,Partition内部目前是不排序的,不过就算内部要排序,也是比较容易实现的。而Hadoop是按照每个Partition内的每个KV排序的。

Spark Streaming :

终于“号称”支持fully H/A模式了。以前当driver挂掉的时候,可能会丢失掉一小部分数据。现在加上一层WAL(write ahead log),好多地方都在用这玩意儿,还记得HBase的write path吗?每次写到memstore之前都会写到一个叫HLog的地方,以防止数据丢失。回到这个问题,每次receiver收到数据后都会存在hdfs上,这样即使driver挂掉,当它重启起来后,还是可以接着处理。当然WAL的实现也还是那样子,到driver重启后,要recover data,并且也要clean掉那些过时的数据。

当然,我还要特别提醒下 unreliable receivers和reliable receivers这两个事情,有兴趣的自己去看下什么个情况吧。

MLlib:

这里最重大的改变应该是Pipeline了,很多从事机器学习的朋友肯定会有兴趣的。MLlib的老大祥瑞在北京已经谈过这个了,这里不展开,需要指出的是,目前MLlib是用SchemaRDD来代表数据集的。也就是说,打通了Spark SQL与MLlib间的通道。话说在一起吃饭时我揪着祥瑞谈了一些DataBricks Cloud的事情,没问MLlib的事情,就知道他回来度个假,PR已经急剧增加了。

GraphX:

国内这块用的比较多的要数淘宝明风他们团队了。更多详情,请咨询淘宝技术部,哈哈,开玩笑的。这一版本最引人注意的应该是给出了stable api,这意味着你们不用担心现在写的代码以后还要由于API的变化而改动了。插播广告,下周杭州Spark Meetup,会有GraphX的一个精彩主题。

Spark SQL:

把这块放最后的原因是,Spark SQL真是太火了,所以你们要提PR就赶快提,赶快响应,赶快merge,不然保不准在短时间内就给你来个conflict。这版本最重要的特性毫无疑问应该属于external data source吧,套用连城PPT上的一句话,push predicates to datasource, 什么意思呢,譬如你要从HBase取数据后做一些筛选,一般我们需要把数据从HBase全取出来后在Spark引擎中筛选,现在呢,你可以把这个步骤推到Data Source端,让你在取数据的时候就可以筛选。当然,这块肯定还会有很大的改动。

另一点必须要指出,我以前在很多场合都提醒大家,Spark SQL中缓存表一定要用cacheTable(“tableName”)这种形式,否则无法享受到列式存储带来的一系列好处,但是很多朋友仍然采用rdd.cache这种原生的方式来缓存,社区也意识到这样不行,所以现在无论是cacheTable还是直接cache,都是表达相同的语义,都能享受到列式存储带来的好处。

就写到这里,本版本改动较大,希望大家尽早升级。

Spark1.2新特性概述的更多相关文章

  1. Servlet 3.0 新特性概述

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  2. IBM Developer:Java 9 新特性概述

    Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/ ...

  3. 11g新特性-概述 (转)

    一.新特性提纲 1.数据库管理部分 ◆数据库重演(Database Replay) 这一特性可以捕捉整个数据的负载,并且传递到一个从备份或者standby数据库中创建的测试数据库上,然后重演负责以测试 ...

  4. Java 8 新特性概述

    Oracle 在 2014 年 3 月发布了 Java 8 正式版,该版本是一个有重大改变的版本,对 JAVA 带来了诸多新特性.其中主要的新特性涵盖:函数式接口.Lambda 表达式.集合的流式操作 ...

  5. SQL Server2012新特性概述

    公司最近要升级数据库,SQL Server 2008R2-->2012.再开始升级之前先找了点资料分析一下2012的新特性和功能,提前预热一下. 2012中主要关注一下三个领域: 性能:改进的核 ...

  6. jdk7jdk8新特性概述

    在oracle停止对jdk6更新,jdk8发布之后,公司终于要把生产环境更新到jdk7,下面列一下jdk7,8的可能需要关注的新特性. jdk7 G1垃圾回收 fork-join框架 二进制变量 Sw ...

  7. Springboot2新特性概述

    官方说明: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes 起码 JDK 8 和支持 ...

  8. ES6新特性概述

    http://es6.ruanyifeng.com/#README https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference ...

  9. Spark1.0新特性-->Spark SQL

    Spark1.0出来了,变化还是挺大的,文档比以前齐全了,RDD支持的操作比以前多了一些,Spark on yarn功能我居然跑通了.但是最最重要的就是多了一个Spark SQL的功能,它能对RDD进 ...

随机推荐

  1. 【Java基础】Java网络编程基础知识

    什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的 ...

  2. POJ1503: Integer Inquiry(连续多个大整数加法运算)

    #include<iostream> #include<cstring> using namespace std; string sum; ; string tool(stri ...

  3. hdu5792--World is Exploding

    题意:给一个数列,求四个各不相同的数,一个逆序对,一个正序对,求多少组这样的四个数. 题解:辣鸡如我,还是上官方题解了. rg(i)就是i右边比i大的数的个数,rs(i)就是i右边比i小的数的个数. ...

  4. Python解释器

    当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的 ...

  5. Qt on_pushButton_clicked()的用法【worldsing笔记】

    在Qt里按钮控件默认对应一个on_pushButton_clicked()成员,如果想用点击信号,在代码中实现on_pushButton_clicked()成员即可. 最近看了一段代码,里面并没有co ...

  6. uml 在需求分析阶段的应用

    上一篇博客写了uml在软件开发过程中的应用,这以篇要详细介绍一下UML在需求分析过程中的应用. 以机房收费系统为例进行讲解,先介绍一个该系统. 首先该系统的用户分为三个等级,一般用户,操作员,管理员, ...

  7. LINUX下的简单线程池

    前言 任何一种设计方式的引入都会带来额外的开支,是否使用,取决于能带来多大的好处和能带来多大的坏处,好处与坏处包括程序的性能.代码的可读性.代码的可维护性.程序的开发效率等. 线程池适用场合:任务比较 ...

  8. jquery 延迟加载代码

    <!--引入以下两个js文件--> <script type="text/javascript" src="./js/jquery.min.js&quo ...

  9. MySQL中UNION和UNION ALL的使用

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...

  10. android驱动[置顶] 我的DIY Android之旅--驱动并控制你的Android开发板蜂鸣器

    改章节个人在深圳游玩的时候突然想到的...这几周就有想写几篇关于android驱动的博客,所以回家到之后就奋笔疾书的写出来发布了 这些天一直在想Android驱动框架层的实现,本文借助老罗教师的博客和 ...