FlinkX在数据入湖中的应用

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. FlinkX在数据入湖中的应用 中移(苏州)软件技术有限公司 2021年11月
2. 1 FlinkX简介 CONTENT 2 功能及原理 3 云上入湖改造 4 展望
3. CONTENT 1 FlinkX简介
4. 为什么有这么多数据源? Oracle: 我们需要企业级数据库。 MySQL: Oracle不开源。 PostgreSQL: MySQL的功能不够多。 SQLite: 你可以把我嵌入到任何地方。 MongoDB: 为什么我们要用join和模式(schema)? CouchDB: 为什么我们要有集合(collection)? Redis: 为什么我们要面向文档? Memcached: 为什么我们要用硬盘? Neo4j: SQL缺乏足够的关系。 Bigtable: MongoDB的对web的扩展性不管好。 HBase: Bigtable不开源。 Cassandra: Bigtable不是Facebook开发的。 Riak: Cassandra不是用Erlang语言编写的。 OrientDB: 让我们把所有东西都放到同一个数据库里。 ElasticSearch:你们全文检索都不行。 ... HDFS,S3:大数据时代,我不是针对谁→_→
5. 企业数据使用现状 实际情况:业务库多数是MySQL、Oracle等传统RDB,不方便进行大数据量的开发计算,通常都需要将RDB数据同步到开发平 台或者云端,利用分布式的存储计算能力。
6. 技术选型 功能 Sqoop DataX FlinkX 运行模式 MR 单进程多线程 分布式 插件丰富度 ★ ★★ ★★☆ 断点续传 × × √ 增量同步 × × √ 新增插件开发难度 ★★ ★ ★ 消息队列 × × √ SQL提交任务 × × √(V1.12) 速度控制 × √ √ 监控统计 × √ √ 社区 ★★↓ ★★→ ★↑ Sqoop:2021-06 This project has retired. For details please refer to its Attic page.
7. 什么是FlinkX FlinkX是一款基于Flink的分布式离线/实时数据同步插件,可实现多种异构数据源高效的数据同步。
8. 已支持的数据源 批同步 Reader 流式同步 Reader Writer Writer MySQL √ √ ODPS √ √ Oracle √ √ HBase √ √ √ √ Reader Writer Kafka √ √ pulsar √ √ EMQX √ √ RestApi √ √ SqlServer √ √ MongoDB PostgreSQL √ √ Kudu √ √ DB2 √ √ ElasticSearch √ √ GBase √ √ FTP √ √ ClickHouse √ √ HDFS √ √ MongoDB Oplog √ PolarDB √ √ Carbondata √ √ PostgreSQL WAL √ SAP Hana √ √ Stream √ √ Oracle LogMiner √ Teradata √ √ Redis √ Sqlserver CDC √ Phoenix √ √ Hive √ 达梦 √ √ S3 √ Greenplum √ √ Hudi √ KingBase √ √ Iceberg(V1.12) √ MySQL Binlog √
9. CONTENT 2 功能及原理
10. 断点续传 Kafka、Pulsar等消息队列天然支持断点续传,传统数据同步工具多数不支持断点续传。FlinkX依靠Flink的 CheckPoint机制,对RDB的读取增加了断点续传的功能。 断点续传的前提: 1.关系数据库 2.包含升序字段 3.支持数据过滤 4.目标数据源支持事务
11. 指标监控 1. Flink dashboard查看job状态
12. 指标监控 2. Flink REST接口获取监控指标
13. 错误统计&速率限制 基于Flink的累加器实现脏数据的错误管理,当错误量达到配置时,置任务失败。 基于Guava的RateLimit做的限流,支持record、percentage两种方式触发任务失败。
14. 插件式开发 FlinkX采用了一种插件式的架构,用户可以根据需要开 发新插件: l 不同的源数据库被抽象成不同的Reader 插件; l 不同的目标数据库被抽象成不同的Writer 插件; 整个数据同步任务共有的处理逻辑被抽象在Template 模 块中,该模块根据数据同步任务配置加载对应的Reader 和Writer插件,组装Flink任务,并提交到Flink集群执行;
15. 插件式开发 } Source } Sink
16. CONTENT 3 云上入湖改造
17. On K8s改造 社区V1.11支持Local、Standalone、Yarn Session、Yarn Perjob。我们把依赖的Flink升级到1.12,原生支持On K8s运行。 支持分布式运行和弹性扩缩容,入湖任务级别资源隔离,入湖任务之间相互没有影响
18. On K8s改造 1.通过Quartz调度任务。 调用Flink k8s客户端,创建出 Service、 Master 和 ConfigMap 这几个资源。 2.Flink Master Deployment 里面带了一个 用户FlinkX Jar,这个时候 Cluster Entrypoint 就会从FlinkX Jar 里面去运行main函数,然后 产生 JobGraph。再提交到 Dispatcher,由 Dispatcher 去产生 Master,然后再向 ResourceManager 申请资源。Dispatcher 会产 生一个 JobMaster。 3.JobMaster 会向 K8s RM 申请资源。RM 会发现现在没有任何可用的资源,它就会继 续向 K8s 的 Master 去请求资源,请求资源之 后将其发送回去,起新的 TM。TM起来之后, 再注册回来,此时的 RM 再向它去申请 slot 提供给 JobMaster,最后由 JobMaster 将相应 的 FlinkX Task 部署到 TaskManager 上。这样 整个Flink集群的拉起,到用户提交Jar完成了。
19. 增加Hudi写入 Hudi目前被业内描述为围绕数据库内核构建的流式数据湖平台,能够基于HDFS、对象存储等底层存储,拥有良好的 Upsert 能 力。
20. 增加Hudi写入
21. 基于EFK日志收集与监控 EFK收集K8s日志,Fluentd收集pod的日志,对业务无侵入无感知。日志解析到ElasticSearch中,可以采集到pod的一些元数据 信息如:NameSpace、podName、nodeSelector等数据,方便进行更细致的查询
22. 基于EFK日志收集与监控
23. CONTENT 4 展望
24. 升级版本 V1.12 特性 1、FlinkX与FlinkStreamSQL融合 2、FlinkX增加transformer算子,支持SQL转换 3、FlinkX插件Connector化,与原生FlinkConnector互相调用 4、FlinkX数据结构优化 5、FlinkX支持二阶段提交 6、FlinkX支持数据湖 Iceberg 7、FlinkX支持提交kubernetes
25. 拥抱Flink SQL Lambda Kappa
26. Thank you!

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-27 11:27
浙ICP备14020137号-1 $访客地图$