Spark Streaming实时流处理-1.初识实时流处理
2018-09-09 本文已影响0人
Peacenloves
目录
- 业务现状分析
- 实时流处理产生背景
- 实时流处理概述
- 离线计算与实时计算对比
- 实时流处理框架对比
- 实时流处理架构与技术选型
- 实时流处理在企业中的应用
1. 业务现状分析
需求:统计主站每个(指定)课程访问的客户端、地域信息分布。
- 地域:IP转换
- 客户端:useragent获取
实现步骤:
- 拿到课程编号,IP信息,UserAgent
- 进行相应的统计分析操作:MapReduce/Spark
项目架构:基于Hadoop的实现方案
- 日志收集:Flume
- 离线分析:MapReduce/Spark
- 统计结果图形化展示
问题:
- 小时级别统计没问题
- 10分钟,也可能处理过来
- 如果是5分钟呢?1分钟呢?
如何解决呢?使用实时流处理。
2. 实时流处理产生背景
- 时效性高:业务对时效性要求比较高
- 数据量大:业务数据量比较大,但是数据有效密度比较低
3. 实时流处理概述
- 实时计算:响应时间比较短。
- 流式计算:数据不断的进入,不停顿。
- 实时流式计算:在不断产生的数据流上,进行实时计算。
4. 离线计算与实时计算对比
- 数据来源
- 离线:HDFS历史数据,数据量比较大。
- 实时:消息队列(Kafka),实时新增/修改记录实时过来的某一笔数据。
- 处理过程
- 离线:Map + Reduce
- 实时:Spark(DStream/SS)
- 处理速度
- 离线:速度慢
- 实时:快速拿到结果
- 进程角度
- 离线:启动 + 销毁进程
- 实时: 7 * 24小时进行统计,线程不停止
5. 实时流处理框架对比
- Apache Storm:Apache顶级项目,完全的实时流处理框架。
- Apache Spark Streaming:基于Spark API进行扩展,并不是完全实时的,是按照时间间隔拆成小的批处理。严格并不是实时流处理框架,而是小的批处理框架。
- IBM Stream:用的比较少。
- Yahoo! S4
- LinkedIn Kafka:不止消息队列,也包括了实时流处理。
- Flink:既可以做流式也可以做批处理。
6. 实时流处理架构与技术选型
spark-streaming1.png- Flume实时收集WebServer产生日志
- 添加Kafka消息队列,进行流量消峰,防止Spark/Storm崩掉
- 处理完数据,持久化到RDBMS/NoSQL
- 最后进行可视化展示
7. 实时流处理在企业中的应用
- 电信行业:推荐流量包一类
- 电商行业:大屏啊,推荐算法