《谢寅-双剑合璧 Flink+StarRocks.pdf》由会员分享,可在线阅读,更多相关《谢寅-双剑合璧 Flink+StarRocks.pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、谢寅/StarRocks双剑合璧双剑合璧:Flink+StarRocks:Flink+StarRocks构建实时数仓联合解决方案RealReal-Time DataTime Data WareHouseWareHouse#1What is What is StarRocksStarRocks#2Build on Build on FlinkFlink&StarRocksStarRocks#3The The GoodcaseGoodcase#4In the futureIn the future#5#1#1RealReal-Time Data WareHouseTime Data WareHou
2、se实时数仓概述小时/分钟时间窗口驱动离线/微批处理数据源单一表现力差代码编程开发成本高秒级数据事件驱动实时流式处理数据源丰富表现力强平台化SQL开发核心技术难点核心技术难点实时计算技术演进实时计算技术演进乱序数据处理多流合并技术挑战数据一致性问题业务开发效率端到端低延迟典型的逻辑分层Oracle业务数据日志数据ReportOLAPAd HocDWSADSDWDODSDWSDWDODSDWSADSDWDODSADSDIMDIMDIMDWSADSDWSDWDDWDDWDODSODSODS离线数据实时数据MySQL#2#2What is What is StarRocksStarRocksStar
3、Rocks架构ETLViewMVDupAggUniqPkSourceSMTODBCFor OperationsStarRocks-ManagerH5AppMysql QuerySR Migration ToolParserAnalyzerTransformerRewriterOptimizerCatalogBdbjeCBOBIJDBCAPIOSSExecutor(Worker)BEVectorized ExecutionShortKey,Bitmap,BloomIndicesExecutor(Coordinator)Vectorized ExecutionExecutor(Worker)BEV
4、ectorized ExecutionExecutor(Worker)Vectorized ExecutionFEBEModels擅长场景自助分析固定报表典型场景StarRocks在复杂查询、高并发、实时分析等OLAP场景下,提升分析效率,实现数据价值最大化。自助式BI系统自助指标平台数据探查实时分析Dashboard看板实时数仓实时风控监控分析大屏广告主报表运营分析报表供应链统计报表运单分析报表用户画像精准营销客群圈选AB测试风控系统实时摄入能力实时摄入能力 直接订阅Kafka数据 提供Flink-Connector,Flink直接写入,exactly-once 适配Flink-CDC捕获T
5、P数据更新,实时更新StarRocks 聚合表提供实时聚合的能力 强大的执行引擎、优化器保证了数据库实时数据建模 生产后的数据可以直接serving 实现实时、离线数据统一融合 delete-and-insert 读取时无主键merge开销 相比于merge-on-read(unique),性能提升3-15倍实时摄入实时数据分析实时数据建模实时更新flinkflink-connectorconnector-starrocksstarrocksSink tableSource tableMySQLStarRocksFlink-cdc-connectorStarRocks-migrate-tool
6、sFlink-connector-starrocksStarRocks-migrate-toolsFlink-job SMT工具映射Flink表和StarRocks表结构 利用Flink-CDC同步TP库binlog,实现upsert/delete 满足ODS业务库的数据重现TP库 CDC flink-connector-starrocks结合stream load接口提供StarRocks的通用sink能力 工程代码或FlinkSql开发均可 Flink计算进行逻辑分层后,导入StarRocks用于下游查询分析Sink 能力1.物化视图:提取某些维度、指标建立对用户透明的预聚合表sum、mi
7、n、maxCount-Distinct:HLL、Bitmap2.支持多种聚合算子支持灵活增加、删除支持schema change3.自动构建使用时只需指定原始表系统自动选择最优的物化视图、并保证查询结果一致性4.透明化使用dateidProvPv2014.01.011北京102014.01.012天津302014.01.021北京202014.01.021北京40datePv2014.01.01402014.01.0260idPv170230物化视图物化视图replace_if_not_nullreplace_if_not_nullcreate table t1_not_null(inc_da
8、te datetime,uid int,src string REPLACE_IF_NOT_NULL,v1 string REPLACE_IF_NOT_NULL,v2 int REPLACE_IF_NOT_NULL)AGGREGATE KEY(inc_date,uid)DISTRIBUTED BY HASH(uid)BUCKETS 3;mysql select*from t1_not_null;+-+-+-+-+-+|inc_date|uid|src|v1|v2|+-+-+-+-+-+|2021-06-22 00:00:00|101|kafka1|101-v2|1|+-+-+-+-+-+1 r
9、ow in set(0.00 sec)mysql insert into t1_not_null values(2021-06-22,101,null,101-v2-test-replace,2);效果效果1.多个数据流,写不同列2.部分列更新能力mysql select*from t1_not_null;+-+-+-+-+-+|inc_date|uid|src|v1|v2|+-+-+-+-+-+|2021-06-22 00:00:00|101|kafka2|101-v2-test-replace|2|+-+-+-+-+-+1 row in set(0.01 sec)mysql insert
10、into t1_not_null values(2021-06-22,101,kafka2,null,null);PrimaryKey ModelPrimaryKey Model场合场合1.数据有冷热特征2.大宽表,如画像表主键模型主键模型相比Unique模型通过牺牲微小的写入性能和内存占用,极大提升了查询性能更好地支持实时/频繁更新的功能HotColdWide#3#3Build on Flink&StarRocksBuild on Flink&StarRocks结合Flink+StarRocks构建实时数仓利用BroadcastStat缓存维度Flink状态广播145632flink流式jo
11、in外部存储hbase/redisFlink关联热存储用RichFlatMapFunction的open方法,加载全部数据到内存Flink预加载内存多主题消息写StarRocks表不同列Join on LoadFlink负责清洗和稳定sink,多表关联和复杂查询在StarRocks进行Join on StarRocksJoin on Load+Join on StarRocks,即:稀疏写入有限张表,表之间colocaiton join,上层逻辑view混合方案多流join更多想象空间 特点:计算逻辑在SR侧,适用于分钟级延迟,数据体量不大的场景双剑方案双剑方案1.1.微批调度微批调度Repo
12、rtOLAPAd HocINSERT INTO table_name PARTITION(p1,.)WITH LABEL labelSELECT select_list FROMsource_tableWHERE processing_time betweendate_add(now(),interval-1 minute)anddate_add(now(),interval-2 minute)mysql/Kafka业务数据日志数据埋入processing_time 明细/聚合/Primary Key模型Flink/Routine loadDIMDIMDIMDWSDWSDWSODSODSODS
13、ADSADSADSDWDDWDDWDStarRocks微批微批微批任务调度器StarRocksDIMDIMDIMDWSDWSDWSADSADSADSDWDDWDDWDStarRocksReportOLAPAd HocKafka业务数据日志数据Flink/SparkDWSDWSDWDDWDADSADSStarRocksKafkaFlink 特点:计算逻辑在Flink侧,适用于需要前导做较重ETL的场景,SR表直查,应对较高QPS查询负荷双剑方案双剑方案2.Flink2.Flink增量构建增量构建 特点:计算逻辑在SR侧(现场查询),涉及高频数据更新的场景,实体数据只在ODS/DWD存储(未来SR
14、提供多表MV,进一步提升查询并发能力)双剑方案双剑方案3.StarRocks View3.StarRocks View视图视图DIMDIMDIMDWSDWSDWSODSODSODSADSADSADSDWDDWDDWDStarRocksReportOLAPAd HocKafkaViewViewViewCREATE VIEW IF NOT EXISTSdb_name.view_name(column1,column2,.)AS query_stmtStarRocksmysql/Kafka业务数据日志数据埋入processing_time 明细/聚合/Primary Key模型Flink/Flink
15、-CDC#4#4The GoodcaseThe Goodcase结合Flink+StarRocks构建实时数仓案例案例1 1:汽车之家:汽车之家(1 1)痛点痛点使用Unique Key 模型不适合大量del,导致实时ETL结果比业务库实际结果多Unique模型比Duplicate查询慢Primary Key 模型StarRocks在Primary Key 模型上支持了删除op将原有作业目标表从Unique Key模型改为Primary Key模型后,数据结果与上游业务库完全一致PrimaryKey模型,查询效率高于Unique模型上图为6x 48c 256G,数据量3500W+,有持续写入下
16、,2并发,循环20轮查询,22个sql用例的平均响应时间TopicSqlServerTIDBMySQLcdccdcbinlogStarRocksConnector数据接入Flink SQLTopicTopic0.014 0.074 0.055 0.135 0.026 0.222 0.058 0.195 0.014 0.025 0.036 0.028 0.656 0.025 0.025 0.022 2.917 3.811 0.1250.2180.2180.2730.3250.7310.2080.3650.2250.2960.3040.2750.8780.2610.3340.3342.9933.8
17、970.00.51.01.52.02.53.03.54.04.5171819Primary Key 模型vs Unique Key 模型 查询性能pk平均耗时(秒)unique平均耗时(秒)实时平台Prometheus+Grafana集群查询统计报表实时平台直接集成flinkflink-connectorconnector-starrocksstarrocks监控案例案例1 1:汽车之家:汽车之家(2 2)案例2:顺丰科技计算FlinkSourceKafkaSinkKafka存储StarRocks数据加工字段补充数据表重新组织异构的多个业务系统数据对
18、接通过Kafka进行业务系统和计算系统的解耦计算和存储解耦Exactly Once语义数据存储和更新报表需求数据导出需求基于相同的数据分布做local Join查询条件字段通过布隆过滤器对=、in提速动态分区&按照分区日期进行数据淘汰不变字段加到Key列,明细检索提速通过分区提高检索聚合字段通过预聚合、建立物化视图提速运单公共信息表:保存不变的信息部分字段更新需求运单私有表:保存本业务变化的信息案例案例2 2:顺丰科技:顺丰科技-Join on LoadJoin on Load 30台+(80c 256G 12T)4个StarRocks集群 引擎种类减少50%引擎收敛 开发效率提高30%简化链
19、路案例案例3 3:多点:多点DMALLDMALLBatch LayerSpeed LayerUpsert业务mq、binlogkafka(ODS)Flink ETLkafka(DWD)Flink AGGkafka(DWS)Hbase(DIM)Cockpit Bus(JAVA)Kudu/mysql(ADS)Batch LayerSpeed Layer业务mq、binlogkafka(ODS)Flink ETLkafka(DWD)Hbase(DIM)StarRocks(ADS)RoutineLoad案例案例4 4:某车联网业务:某车联网业务FusionFusion数仓数仓Flink SQL实时落盘实时数据StarRocks离线数仓实时数仓明细数据统计指标Hive明细数据/统计指标接口封装离线数据#5#5In the futureIn the futureIn the future部分列更新PK模型支持BF、Bitmap索引PKPK模型模型自适应mem/cpu分配多租户资源隔离资源隔离资源隔离Flink-connector-sourceCDC适配Oralce/PGApache Apache FlinkFlink存储计算分离异地容灾云原生云原生