What’s new in Spark 1.2.0

27 篇文章 5 订阅
25 篇文章 606 订阅

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,或许就是这个适合大家的架构。

 

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

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值