- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache SeaTunnel(Incubating)在游族网络数据接入平台的设计与实现 张晓栋
展开查看详情
1 .Seatunnel在游族网络数 据接入平台的设计与实现 数据接入平台设计与实现 张晓栋 2022年5月14日
2 . 01 背景介绍 02 引入Seatunnel CONTENT 03 数据接入平台 04 未来规划
3 .01 背景介绍
4 .数据分类 KPI数据 • 类型:注册、激活、 登录、退出、充值…… • 时效性:秒级 • 数据量:< 10GB/天/游戏 统一生态数据 • 类型:玩法、活动、公会资源、商店购买、任务、聊天…… • 时效性:T+1小时、T+1天 • 数据量:TB级别
5 .业务流程 数据源 • 数据源类型:File、MySql、Kafka、…… • 数据源分布:国内、海外 采集方式 • 时效性:秒级、T+1小时、T+1天 • 离线工具:DataX、Sqoop、Spark、自定义脚本 • 实时工具:Flume、Fluentd、Filebeat、Scribe、Flink 存储 • 存储引擎:Hive、HBase、StarRocks、Clickhouse、……
6 .业务流程 平台 • 平台:D-Query、数据开发、数据资产、统计报表、机器学习、…… • 接口:DataAPI、DBCloud 应用 • 游戏分析:活跃分析、付费分析、玩家留存、生命价值、运营商分析 • 用户分析:人群画像 • 其他:财务对账、聊天监控、广告分析、……
7 .游戏人群画像 • 业务描述:经过数仓计算好的人群标签宽表,在StarRocksDB中给BA平 台提供人群查询分析圈选功能 • 技术需求:Hive标签表数据定时调度导入StarRocks存储 • 技术选择: ① 自定义DataX插件 ② 自定义Spark任务 ③ 自定义Seatunnel插件
8 .StarRocks实时数仓 • 业务描述:基于StarRocksDB探索实时数仓 • 技术需求:消费Kafka数据,实时写入StarRocksDB • 技术选择: ① 自定义Flume插件 ② 自定义Flink任务 ③ 自定义Seatunnel插件
9 .方案选型 人群画像迁移 自定义DataX 自定义Spark 自定义Seatunnel 资源控制 单机 支持Yarn集群 支持Yarn集群 开发成本 较高 高 低 使用难度 较低 高 低 扩展能力 较高 低 高 社区热度 较低 高 高
10 .方案选型 实时数仓 自定义Flume 自定义Flink 自定义Seatunnel 资源控制 单机 支持Yarn集群 支持Yarn集群 开发成本 较高 高 低 使用难度 低 高 低 扩展能力 较高 低 高 社区热度 低 高 高
11 .02 引入Seatunnel
12 .基本介绍 • 开源的Apache项目,社区热度高,版本更新快 • 开箱即用、功能丰富、支持常见主流数据源和输出 • 分布式架构,性能出色 • 拥抱Spark和Flink,应用场景丰富 • 代码设计高度抽象,插件化和配置化的设计方式方便使用和功能扩展
13 .自定义插件 Seatunnel提供了一套完善的插件体系,支持自定义开发Spark/Flink的流模式和批模式下的Source、Transform、Sink插件。
14 .StarRocksSink 自定义StarRocksSink插件 • 继承SparkBatchSink抽象类 • 在output方法中定义具体的输出逻辑 • 封装StarRocks Stream Load导入方式 • 增加预操作、生成Label、支持json格式等功能
15 .封装启动脚本 • 自定义python启动脚本 • 封装官方启动脚本 • 对用户屏蔽conf配置文件 • 方便地动态传参 • 自动获取远程日志
16 .启动流程
17 .03 数据接入平台
18 .离线采集链路 • 时效性:T+1小时、T+1天 • 数据源:磁盘文件、MySql全量表 • 采集工具:自定义脚本 • 中转工具:FTP • 平台:DTS平台、调度系统
19 .实时采集链路 • 时效性:秒级、分钟级 • 数据源:磁盘文件、Kafka • 采集工具:Fluentd • 中转工具:Kafka • 平台:DTS平台、ETL平台
20 .痛点 • 链路:没有完整链路的概念,不方便问题排查和数据源追溯。 • 分散:数据接入通道涉及多个平台,链路监控、告警等功能分散,不方便维护和推广。 • 性能:Flume作为平台底层主要的ETL组件,不方便做数据处理、资源控制和功能迭代。 目标 • 链路:统一链路,管理链路中的所有组件 • 分散:整合平台,提供完整的监控管理服务 • 性能:引入Seatunnel,提升ETL性能,增强数据处理能力
21 .
22 .
23 . Seatunnel平台化难点 • 任务配置紧密依赖磁盘配置文件 • 任务启动依赖Spark和Flink的命令行工具 • 没有提供方便的监控管理任务的方式 Spark 修改前 修改后 Flink 命令行spark-submit SparkLauncher 启动方式 flink run RestClusterClient 插件配置方式 磁盘conf文件 Map
24 .
25 .ETL流程 SchemaCheckTransform WhiteListTransform • Schema检查插件 • 白名单插件 • 根据指定的Schema,检查数据行规范 • 定时加载MySql表,更新内存白名单 • 检查字段个数、字段类型等 • 根据白名单,针对指定字段过滤数据行
26 .
27 .
28 .
29 .