当前位置: 代码迷 >> 综合 >> 【总结】Amazon Kinesis实时数据分析最佳实践分享
  详细解决方案

【总结】Amazon Kinesis实时数据分析最佳实践分享

热度:16   发布时间:2023-12-15 13:56:22.0

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来弹性伸缩处理能力

图16

  • Kinesis实时数据流的应用场景
    • 对于广告平台:用户在互联网上的行为,能实时的影响广告推送内容,在用户下一次刷新页面时,就提供给用户新广告
    • 对于电商:用户的每一次收藏、点击、购买行为,都能被快速的归入他的个人模型中,立即修正商品推荐
    • 对于社交网络:用户社交图谱变更和发言行为,也能快速反映在他的好友推荐、热门话题提醒上

2.概述

2.1.AWS基于云的完整大数据服务

  • 采集:实时数据流采集处理(Kinesis)
  • 保存:大规模存储
    • DynonamoDB
    • S3
    • Glacier
  • 处理:大集群并行计算
    • EMR
    • EC2
    • Redshift–MPP数据库
    • Data Pipeline–ETL工具

图1

2.2.AWS的大数据客户

包括:药厂、互联网公司、大企业

图2

3.大数据分析处理

3.1.大数据处理的挑战

大数据的生命周期:收集→存储→分析→洞察

成功案例:SUPERCELL手游公司
- 收集:实时数据采集Kinesis
- 存储:4T存储/天→S3
- 长期归档Glacier
- 分析:数据挖掘Hadoop

图3

3.2.实时数据流处理使用案例

  • 对于广告平台:用户在互联网上的行为,能实时的影响广告推送内容,在用户下一次刷新页面时,就提供给用户新广告
  • 对于电商:用户的每一次收藏、点击、购买行为,都能被快速的归入他的个人模型中,立即修正商品推荐
  • 对于社交网络:用户社交图谱变更和发言行为,也能快速反映在他的好友推荐、热门话题提醒上

4.典型的实时动态数据流处理架构和工作流程

1)数据采集:负责从各个节点上实时采集处理数据,例如选用flume(cloudeara提供)来实现
2)数据接入:由于采集数据的速度和处理的速度不一定同步,因此添加一个消息中间件作为缓冲,例如apache的kafka(Linkedin提供)
3)流式计算:对采集到的数据进行实时分析,例如选用apache的storm(twitter提供)

图4

5.在AWS上进行处理(简单模式)

1)数据采集:在EC2服务器上搭建收集器(kafka,fluedtd,scribe和flume等)

2)载入数据—将数据存入S3
不推荐存储在本地磁盘,因为难以保证容量扩展性,难以保障持久性

图5

6.在AWS上进行处理(Kinesis模式)

实时数据处理–Amazon Kinesis

  • 实时数据采集,摄入,传输
  • 处理实时动态数据流
  • 并行写入与写出
  • 支持数据输出到不同存储目的地

图6

Amazon Kinesis的架构模型如下图

图7

操作流程

1)创建一个数据流(就是使用storm),制定shard(分片)
- shard:分片是Kinesis数据流的基本吞吐量单位
- 一个分片提供:1MB/秒数据输入(write)容量=1000TPS,2MB/秒数据读入(read)容量=5TPS

图8

2)设定单个数据片的容量(例如:twitter的每条记录为140字节),设定每秒钟同时写入量(例如5000个这样的分片)

图9

指定分片数量、单个数据片容量、同时写入量 之后,就会自动计算下列的吞吐量

图10

3) 后期在CW中可以监控运行情况

图11

客户案例《卡通农场》

  • 简单调用put命令动态摄入数据
  • 每个分片可摄入每秒1MB数据(高大1000TPS)
  • (突然玩家暴增之后)不停机状态下动态扩展 shard数量

图12

6.1.将数据输入Kinesis数据流

  • PutRecord API用于添加数据到Amazon Kinesis 数据流
  • 指定数据流的名称和分区键(partition key)
  • 分区键用于分配数据记录到不同的数据流分片

图13

6.2.实时数据流处理

  • 分布式处理多shards
  • 容错
  • 实时动态扩展workers
  • 专注数据处理逻辑

图14

6.3.处理来自Amazon Kinesis数据流的数据

Amazon Kinesis应用程序(workers)允许用户自己开发

  • 读取和处理来自数据流strom数据的使用者
  • 使用Kinesis客户端哭(KCL)构建应用程序执行分布式流处理的繁杂任务
  • 自动扩展组(AutoScaling)实时动态扩展

图15

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分析

图16

6.6.AWS上Kinesis的常见CDP架构

#1 点击流分析

图17

#2 支付

图18

7.总结

  • 实时收集并处理数据
  • 易于使用

    • 通过java、python、KCL轻松构建应用程序
    • 与S3、Redshift、DynamoDB其他服务工具集成
  • 并行处理

    • 聚合数据发送到S3存储对象中
    • 实时分析日志并在发生例外情况时触发警报
    • 实时分析网站点击流
  • 灵活应变

    • 动态调节Kinesis数据流的吞吐量
  • 可靠

    • 三个AZ同步复制数据,并保留24小时,防止应用故障后数据丢失