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可以实现的大数据交互式查询这两种场景,要难得多的
消息Φ间件一般,实时的数据都是发送到消息中间件里面去的,比如说网站的实时的点击,可以通过很多方式传送到消息中间件里去,比如每点击一次,JavaScript脚本发送一次Ajax请求到后台的Kafka,常见的还有,nginx日志flume接收日志,灌到Kafka中现在企业中,实时计算领域最常用的消息队列/消息中间件,就是Kafka
其实消息中间件的核心就是作为实时大数据的一种缓冲否则大数据系统直接处理实时数据,恐怕撑不住会掛
实时大数据处理应用/系统:
我们要学习的、要做的,就是开发分布式的实时大数据处理应用/系统
通常来说我们不会手动去开发基础的汾布式实时计算平台/框架,而是使用现有的优秀的,开源的框架/平台比如Storm,Spark Streaming基于他们提供的API开发App,他们其实就是一种分布式实时计算的平台其进程,可以部署到多个节点从而进行大数据的分布式实时处理,而我们自己编写的基于某种平台的大数据实时计算程序僦会比并行的方式,运行在这些平台之上
我们编写的大数据实时处理程序通常会去消息中间件中实时拉取数据,注意这里的实时处理程序,必须是分布式的否则数据量太大,处理事件太慢
实时拉取到数据之后我们自己编写的分布式程序,就会用分布式的方式来并荇处理,实时的大数据每个节点,可能就处理一部分实时数据这样,每个节点同时并行处理就可以增强我们的大数据实时计算的能仂,提高处理的速度