What’s new in Spark 1.2.0

原创 2014年12月23日 07:42:40

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

1.2.0 was released on 12/18, 2014 在2014年5月30日发布了Spark 1.0 和9月11日发布了Spark1.1.后,Spark 1.2 终于在12月18日发布...

What’s New in Xcode 6

  • 2015-09-22 16:39
  • 6.93MB
  • 下载

WWDC 2017 Session笔记 - Session 708 推送消息新功能和最佳实践(Best Practices and What’s New in User Notifications)

本地和推送通知使您的应用程序能够通过显示消息并接受用户的操作,播放独特的声音或更新应用程序图标上的徽章,使用户及时了解相关内容。服务扩展功能使您的应用程序能够在显示之前解密并扩充推送通知内容。了解什么...

What’s New In Rails 2.1

  • 2008-06-12 19:45
  • 1.80MB
  • 下载

What’s New in Swift 3.1?

原文:What’s New in Swift 3.1? 作者:Cosmin Pupaza 译者:kmyhy 重要消息:Xcode 8.3 以及 Swift 3.1 现在推出了 B...
  • kmyhy
  • kmyhy
  • 2017-06-05 13:58
  • 551

What_s_New_in_Flex_4.pdf

  • 2011-01-07 16:32
  • 8.46MB
  • 下载

What’s new in Cassandra 1.1: Flexible data file placement

Apache Cassandra is designed from the ground up to work well on spinning disks, but it can also leve...

What’s New In Python 3.0

What’s New In Python 3.0¶ 比较python 3.x 和 2.x ,书上的代码是2.x,但学习环境是3.x的可以看一下了
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)