大数据实时计算介绍
Spark Streaming,其实就是一种Spark提供的,对于大数据,进行实时计算的一种框架。它的底层,其实,也是基于我们之前讲解的Spark Core的。基本的计算模型,还是基于内存的大数据实时计算模型。而且,它的底层的组件或者叫做概念,其实还是最核心的RDD。
只不多,针对实时计算的特点,在RDD之上,进行了一层封装,叫做DStream。其实,学过了Spark SQL之后,你理解这种封装就容易了。之前学习Spark SQL是不是也是发现,它针对数据查询这种应用,提供了一种基于RDD之上的全新概念,DataFrame,但是,其底层还是基于RDD的。所以,RDD是整个Spark技术生态中的核心。要学好Spark在交互式查询、实时计算上的应用技术和框架,首先必须学好Spark核心编程,也就是Spark Core。
首先看下什么是大数据实时计算
首先看张图
大数据实时计算原理.png
实时数据的生产源头:
现在在企业中,主要的实时数据产生的源头,有如下这些,最基本的,实时的用户行为日志(点击、购买等),淘宝,天猫,京东,搜狐,新浪等,除此之外,还有一些其他的比如,实时金融系统,实时的舆情监控系统,接受的都是实时的金融交易数据,实时的社会上的一些舆情数据(微博、微信、博客)
实时数据,现在是大数据领域里面的一种非常热门的场景和应用,而且技术有相当的难度,是比Spark Core以及MapReduce实现的离线批处理,以及Hive和Spark SQL可以实现的大数据交互式查询,这两种场景,要难得多的
消息中间件(Kafka):
消息中间件,一般,实时的数据,都是发送到消息中间件里面去的,比如说,网站的实时的点击,可以通过很多方式,传送到消息中间件里去,比如,每点击一次,JavaScript脚本,发送一次Ajax请求到后台的Kafka,常见的,还有,nginx日志,flume接收日志,灌到Kafka中,现在企业中,实时计算领域,最常用的消息队列/消息中间件,就是Kafka
其实消息中间件的核心就是作为实时大数据的一种缓冲,否则大数据系统直接处理实时数据,恐怕撑不住,会挂
实时大数据处理应用/系统:
我们要学习的、要做的,就是开发分布式的实时大数据处理应用/系统
通常来说,我们不会手动去开发基础的分布式实时计算平台/框架,而是使用现有的,优秀的,开源的框架/平台,比如Storm,Spark Streaming,基于他们提供的API开发App,他们其实就是一种分布式实时计算的平台,其进程,可以部署到多个节点,从而进行大数据的分布式实时处理,而我们自己编写的基于某种平台的大数据实时计算程序,就会比并行的方式,运行在这些平台之上
我们编写的大数据实时处理程序,通常会去消息中间件中实时拉取数据,注意,这里的实时处理程序,必须是分布式的,否则数据量太大,处理事件太慢
实时拉取到数据之后,我们自己编写的分布式程序,就会用分布式的方式,来并行处理,实时的大数据,每个节点,可能就处理一部分实时数据,这样,每个节点同时并行处理,就可以增强我们的大数据实时计算的能力,提高处理的速度