1.邱洋总结
- AWS的服务全部采用SOA架构可以需要时相互调用
- 关于大数据的实时流处理,AWS提供了传统方案和完全host方案
- 传统方案是EC2上面部署flume (采集)、kafka(数据转存)、storam(流处理)
- 完全host方案是Kinesis
- 使用Kinesis还是需要用户通过API来将手机、网站点击、IoT、传感器等各类数据源的数据接入
- 允许用户编写Kinesis的Worker来处理自定义的数据处理逻辑(扩展性)
- Kinesis处理之后的数据,AWS建议存储S3或redshift等存储中,后续使用
- Kinesis的典型用法是:前端数据源→kinesis流处理→S3保存临时数据→EMR数据处理→redshift做BI分析。整体使用CW来做运行监控,并且可以出发AutoScaling来弹性伸缩处理能力
- Kinesis实时数据流的应用场景
- 对于广告平台:用户在互联网上的行为,能实时的影响广告推送内容,在用户下一次刷新页面时,就提供给用户新广告
- 对于电商:用户的每一次收藏、点击、购买行为,都能被快速的归入他的个人模型中,立即修正商品推荐
- 对于社交网络:用户社交图谱变更和发言行为,也能快速反映在他的好友推荐、热门话题提醒上
2.概述
2.1.AWS基于云的完整大数据服务
- 采集:实时数据流采集处理(Kinesis)
- 保存:大规模存储
- DynonamoDB
- S3
- Glacier
- 处理:大集群并行计算
- EMR
- EC2
- Redshift–MPP数据库
- Data Pipeline–ETL工具
2.2.AWS的大数据客户
包括:药厂、互联网公司、大企业
3.大数据分析处理
3.1.大数据处理的挑战
大数据的生命周期:收集→存储→分析→洞察
成功案例:SUPERCELL手游公司
- 收集:实时数据采集Kinesis
- 存储:4T存储/天→S3
- 长期归档Glacier
- 分析:数据挖掘Hadoop
3.2.实时数据流处理使用案例
- 对于广告平台:用户在互联网上的行为,能实时的影响广告推送内容,在用户下一次刷新页面时,就提供给用户新广告
- 对于电商:用户的每一次收藏、点击、购买行为,都能被快速的归入他的个人模型中,立即修正商品推荐
- 对于社交网络:用户社交图谱变更和发言行为,也能快速反映在他的好友推荐、热门话题提醒上
4.典型的实时动态数据流处理架构和工作流程
1)数据采集:负责从各个节点上实时采集处理数据,例如选用flume(cloudeara提供)来实现
2)数据接入:由于采集数据的速度和处理的速度不一定同步,因此添加一个消息中间件作为缓冲,例如apache的kafka(Linkedin提供)
3)流式计算:对采集到的数据进行实时分析,例如选用apache的storm(twitter提供)
5.在AWS上进行处理(简单模式)
1)数据采集:在EC2服务器上搭建收集器(kafka,fluedtd,scribe和flume等)
2)载入数据—将数据存入S3
不推荐存储在本地磁盘,因为难以保证容量扩展性,难以保障持久性
6.在AWS上进行处理(Kinesis模式)
实时数据处理–Amazon Kinesis
- 实时数据采集,摄入,传输
- 处理实时动态数据流
- 并行写入与写出
- 支持数据输出到不同存储目的地
Amazon Kinesis的架构模型如下图
操作流程
1)创建一个数据流(就是使用storm),制定shard(分片)
- shard:分片是Kinesis数据流的基本吞吐量单位
- 一个分片提供:1MB/秒数据输入(write)容量=1000TPS,2MB/秒数据读入(read)容量=5TPS
2)设定单个数据片的容量(例如:twitter的每条记录为140字节),设定每秒钟同时写入量(例如5000个这样的分片)
指定分片数量、单个数据片容量、同时写入量 之后,就会自动计算下列的吞吐量
3) 后期在CW中可以监控运行情况
客户案例《卡通农场》
- 简单调用put命令动态摄入数据
- 每个分片可摄入每秒1MB数据(高大1000TPS)
- (突然玩家暴增之后)不停机状态下动态扩展 shard数量
6.1.将数据输入Kinesis数据流
- PutRecord API用于添加数据到Amazon Kinesis 数据流
- 指定数据流的名称和分区键(partition key)
- 分区键用于分配数据记录到不同的数据流分片
6.2.实时数据流处理
- 分布式处理多shards
- 容错
- 实时动态扩展workers
- 专注数据处理逻辑
6.3.处理来自Amazon Kinesis数据流的数据
Amazon Kinesis应用程序(workers)允许用户自己开发
- 读取和处理来自数据流strom数据的使用者
- 使用Kinesis客户端哭(KCL)构建应用程序执行分布式流处理的繁杂任务
- 自动扩展组(AutoScaling)实时动态扩展
6.4.Amazon Kinesis 对比 Storm
- Storm
- 部署采集工具,例如flume
- 部署数据接入工具,例如kafka
- 部署实时分析工具,例如storm
- Kinesis
- 自动配置采集、接入、分析工具
- 自动扩展、容错
- 与AWS其他服务融合,例如s3、redshift、dynamoDB
6.5.实时数据流处理&海量数据存储案例
- supercell的用户点击屏幕的实时数据流,写入kinesis
- worker应用程序负责处理这些数据
- 聚合数据预处理写入S3
- 实时趋势分析表制作(例如玩家数量、虚拟道具使用情况等)
- Glacier可以做归档
- hadoop可以做数据挖掘(EMR从S3中获取数据)
- 将hadoop处理完毕后的数据,放入redshift进行BI分析
6.6.AWS上Kinesis的常见CDP架构
#1 点击流分析
#2 支付
7.总结
- 实时收集并处理数据
易于使用
- 通过java、python、KCL轻松构建应用程序
- 与S3、Redshift、DynamoDB其他服务工具集成
并行处理
- 聚合数据发送到S3存储对象中
- 实时分析日志并在发生例外情况时触发警报
- 实时分析网站点击流
灵活应变
- 动态调节Kinesis数据流的吞吐量
可靠
- 三个AZ同步复制数据,并保留24小时,防止应用故障后数据丢失