SparkStreaming项目实战系列——实时流概述
Spark官网关于Spark2.2.0需要以下条件:
maven3.3.9+
Java8+
Spark2.2.0
1.初识实时流处理
1.1业务现状分析
- 需求:统计主站每个(制定)课程访问的客户端、地域信息分布
- 地域:ip转换 SparkSQL项目实战
- 客户端:useragent获取 Hadoop基础课程
- 如上两个操作:采用离线操作(Map/Reduce操作)的方式进行统计
- 实现步骤
- 课程编号。ip信息,useragent
- 进行相应的统计分析操作:MapReduce、Spark
- 项目架构
- 日志收集:Flume
- 离线分析:MapReduce/Spark
- 图形化展示结果
- 问题
- 小时级别
- 10小时-秒级别,由于MR都是进程级别的,要产生和销毁,需要占用时间空间,不能实时处理
- 如何解决?即是实时流处理引入的目标。
1.2 实时流处理产生背景
- 时效性高
- 数据量大(必须以实时的方式处理原始的数据)
1.3 实时流处理概述
- 实时计算(响应时间比较短,离线批处理没有时间的限制)
- 流式计算(在不断产生的数据流上进行的计算)
- 实时流式计算
1.4 离线计算与实时计算对比
- 数据来源
- 离线:HDFS上的历史数据,数据量比较大
- 实时:消息队列(kafka),实时新增/修改记录过来的某一笔数据
- 处理过程
- 离线:MapReduce:map+reduce
- 实时:Spark(DStream/SS)
- 处理速度
- 离线:慢
- 实时:快速
- 进程
- 离线:启动+销毁
- 实时:7*24
1.5实时流处理框架对比
- Apache Storm
- Apache Spark Streaming(并不会像Storm每一次处理一条数据更新,而是按照时间间隔拆分为小的批处理,严格意义上是一个微小时间间隔的批处理)
- IBM Stream
- Yahoo S4
- LinkedIn Kafka (一个分布式的流平台)
- flink
1.6实时流处理架构与技术选型
Web:
app:
---------------------
WebServer:
/var/log/access.log
---------------------
Flume:日志收集
Kafka:加一层消息队列应付数据高峰期
Spark/Storm:
RDBMS/NoSQL:
可视化显示:
1.7实时流处理适用场景在企业的应用
- 电信行业
- 电商行业