1、袁尤军SmartNews 基于 Flink 的实时数仓建设Flink 在 SmartNews:历史与现状#1实时数仓的发展背景和策略#2一个具体例子#3未来的规划和挑战#4Q&A#5#1Flink 在 SmartNews:历史与现状关于 SmartNews201220142019东京纽约/旧金山/帕托上海/北京Flink 在 SmartNews 的发展历史2020Q2实时平台立项Flink当之无愧为最佳选项2020Q4第一版上线 多租户 多版本 易用兼顾灵活 基于YARN2021Q4上K8S 统一资源 磁盘隔离 2021Q2Kafka平台上线 Flink 平台架构简介YARNScaler,Sc
2、hedulercontainercontainercontainercontainercontainercontainercontainerZookeeperObject Store(checkpoint,savepoint)RDS(metadata)Cluster(within AZ)Cross AZScaler:作业提交时按需扩容集群Scheduler:成本最低调度,节点数最小化Fault Tolerance:作业级别,集群级别,AZ级别Isolation:内存,CPU#2实时数仓的发展背景和策略实时数仓背景AirflowAzkabanHiveSparkPrestoFlink报表分析ML在
3、线业务用户需求:#1 降低延迟-一早看到昨天的数据延迟级别:秒#2 降低延迟-我要小时级别数据#3 降低延迟-我的作业经常失败策略#1 由粗及细先日表,再小时表,再分钟级自上而下 从源头开始改造,上游的数据快了,下游的数据才可能快弃批从流 利用流处理引擎持续的处理特性,更早的完成计算#2#3#3一个具体的例子问题fluentd agentdate=2021-12-05/hh=17/001.json.gz 002.json.gz 003.json.gzdate=2021-12-05/action=act1/001.rc 002.rc action=act2/001.rctable actions
4、 partitioned by (date,action)Object StoreObject Store每30s上传300多种action 数据倾斜 RCFile格式hive metaETL痛点:ETL慢(2.5hrs),影响下游Airflow+Hive目标:1.延迟20m 2.用户无感(功能&性能)PrestoSparkHiveOnline serverRCFile为Bulk Format,随chk输出用户无感145632输入目录巨大,list操作超时流式文件源两级分区,airflow如何感知日分区与 Airflow 集成数据严重倾斜下,如何提高chk效率延迟Exactly Once,以及
5、验证质量保证保证高压缩率文件大小挑战用户无感date=2021-12-05/hh=17/001.json.gz 002.json.gz 003.json.gzdate=2021-12-05/action=act1/001.json 002.json action=act2/001.jsondate=2021-12-05/action=act1/001.rc 002.rc action=act2/001.rcFlink Job 1Flink Job 2RollingPolicy.builder().withRolloverInterval(rolloverInterval).withInacti
6、vityInterval(inactivityInterval).withMaxPartSize(fileSize)hive metastoreload schemacommit partitionIntermediate Folder以row format输出合适大小的json文件,通过RollingPolicy配置目标文件大小,实现跨checkpoint文件的合并,避免小文件1.将json文件转成目标格式,一一对应 2.待partition内所有文件处理完成后提交hive partitionDestination Folder流式文件源date=20