第一课:通过案例对SparkStreaming透彻理解三板斧之一:解密SparkStreaming另类实验及SparkStreaming本质解析
本期导读:
- 1 Spark源码定制选择从SparkStreaming入手;
- 2 Spark Streaming另类在线实验;
- 3 瞬间理解SparkStreaming本质。
1. 从Spark Streaming入手开始Spark源码版本定制之路
1.1 从Spark Streaming入手Spark源码版本定制之路的理由
从今天起,我们将踏上了新的Spark学习旅途。寻龙点穴,从Spark Streaming入手,Spark Streaming就是大数据的龙脉。我们为什么要选择从SparkStreaming入手开始我们的Spark源码版本定制之路?有下面几个方面的理由:
1) Spark大背景
Spark最开始没有我们今天看到的Spark Streaming、GraphX、Machine Learning、Spark SQL和Spark R等相关子框架内容,最开始就只有很原始的Spark Core。我们要做Spark源码定制,做自己的发行版本,以Spark Streaming为切入点,Spark Streaming本身是 Spark Core上的一个子框架,所以我们透过一个子框架的彻底研究,肯定可以精通Spark力量的源泉和所有问题的解决之道;
2) 为什么不选SparkSQL?
我们知道,Spark有 很多子框架,现在除了基于Spark Core编程之外,用得最多的就是SparkSQL。Spark SQL由于涉及了太多的SQL语法细节的解析或者说优化,其实这些解析或优化,对于我们集中精力去研究Spark而言,它是一件重要的事情,但其实不是最重要的一件事情。由于它有太多的SQL语法解析,这个不是一个合适的子框架来让我们研究。
3) 为什么不选Spark R?
Spark R现在很不成熟,而且支持功能有限,这个也从我们的候选列表中删除掉。
4) 为什么不选SparkGraphX(图计算)?
如果大家关注了 Spark的演进或发展的话,Spark最近发布的几个版本,Spark图计算基本没有改进。如果按照这个趋势的话,Spark官方机构似乎在透露一个信号,图计算已经发展到尽头了。所以说,我们如果要研究的话,肯定不会去做一个看上去发展到尽头的东西。另外,至于图计算而言,它有很多数学级别的算法,而我们是要把Spark做到极致,这样的话,数学这件事情很重要,但对我们来说却不是最重要的。
5) 为什么不选SparkMLlib(机器学习)?
Spark机器学习在封装了Vector(向量)和Metrics基础之上,加上Spark的RDD,构建了它的众多的库。这个也由于涉及到了太多的数学的知识,所以我们选机器学习其实也不是一个太好的选择。
1.2 Spark Streaming魔力之所在
2016上半年,据StackOverflow开展的一项调查结果显示,50%以上的人认为,Spark中最吸引人的是Spark Streaming。总之,大家考虑用Spark,主要是因为Spark Streaming。 Spark Streaming到底有什么魔力?
1) 它是流式计算
这是一个流处理的时代,一切数据如果不是流式的处理或者跟流式的处理不相关的话,都是无效的数据。这句话会不断地被社会的发展所证实。
2) 流式处理才是真正的我们对大数据的初步印象
一方面,数据流进来,立即给我们一个反馈,这不是批处理或者数据挖掘能做到的。另一方面,Spark非常强大的地方在于它的流式处理可以在线的利用机器学习、图计算、SparkSQL或者Spark R的成果,这得益于Spark多元化、一体化的基础架构设计。也就是说,在Spark技术堆栈中,Spark Streaming可以调用任何的API接口,不需要做任何的设置。这是Spark无可匹敌之处,也是Spark Streaming必将一统天下的根源。这个时代的流处理单打独斗已经不行了,SparkStreaming必然会跟多个Spark子框架联合起来,称霸大数据领域。
3) 流式处理“魅力和复杂”的双重体
如果你精通 Spark Streaming,你就知道Spark Streaming以及它背后的兄弟框架,展示了Spark和大数据的无穷魅力。不过,在Spark的所有程序中,肯定是基于 Spark Streaming的应用程序最容易出问题。为什么?因为数据不断流进来,它要动态控制数据的流入,作业的切分还有数据的处理。这些都会带来极大的复杂性。
4) 与其他Spark子框架的巨大区别
如果你仔细观察,你会发现,SparkStreaming是基于Spark Core之上的一个应用程序。不像其他子框架,比如机器学习是把数学算法直接应用在Spark的RDD之上,SparkStreaming更像一般的应用程序那样,感知流进来的数据并进行相应的处理。所以如果要做Spark 的定制开发,Spark Streaming则提供了最好的参考,掌握了Spark Streaming也就容易开发任意其他的程序。当然想掌握SparkStreaming,但不去精通Spark Core的话,那是不可能的。Spark
Core加Spark Streaming更是双剑合璧,威力无穷。
我们选择SparkStreaming来入手,等于是找到了关键点。如果要寻龙点穴,那么Spark Streaming就是龙穴之所在。找到了穴位,我们就能一日千里。综上所述,我们筛选之下,Spark Streaming是我们唯一的选择!