Spark 1.2 新特性概述

在 2014 年,Spark 开源生态系统得到了大幅增长,已成为大数据领域最活跃的开源项目之一,当下已活跃在 Hortonworks、IBM、Cloudera、MapR 和 Pivotal 等众多知名大数据公司,更拥有 Spark SQL、Spark Streaming、MLlib、GraphX 等多个相关项目。那么如此多的关注下,Spark 又会有什么样的变化,下面我们一起看 Spark Contributor、Spark 布道者陈超总结的 Spark 1.2 版本新特性:

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,都是表达相同的语义,都能享受到列式存储带来的好处。

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

refer:
Spark1.2新特性概述

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

验证码已失效,请刷新验证码