《謝寅-雙劍合璧 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.51234567810111213141516171819Primary 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存儲計算分離異地容災云原生云原生