您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何基于Flink+ClickHouse 構(gòu)建實時數(shù)據(jù)分析平臺,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
一、業(yè)務(wù)場景與現(xiàn)狀分析
二、Flink-to-Hive 小時級場景
1.小時級實現(xiàn)架構(gòu)圖
2.實現(xiàn)原理
第一, forBulkFormat 支持 avro、parquet 格式,即列式存儲格式。
第二, withBucketAssigner 自定義按數(shù)據(jù)時間分桶,此處會定義一個EventtimeBucket,既按數(shù)據(jù)時間進行數(shù)據(jù)落地到離線中。
第三, OnCheckPointRollingPolicy,根據(jù) CheckPoint 時間進行數(shù)據(jù)落地,在一定的 CheckPoint 時間內(nèi)數(shù)據(jù)落地并回穩(wěn)。按照 CheckPoint 落地還有其它策略,如按照數(shù)據(jù)大小。
第四, StreamingFileSink 是 Exactly-Once 語義實現(xiàn)。
initializeState
invoke
snapshotState
notifyCheckpointComplete
3.跨集群多 nameservices
4.多用戶寫入權(quán)限
三、Flink-to-ClickHouse 秒級場景
1.秒級實現(xiàn)架構(gòu)圖
2.Why Flink+ClickHouse
指標實現(xiàn) sql 化描述:分析師提出的指標基本都以 SQL 進行描述。
指標的上下線互不影響:一個 Flink 任務(wù)消費 Topic,如果還需要其它指標,可以保證指標的上下線互不影響。
數(shù)據(jù)可回溯,方便異常排查:當(dāng)日活下降,需要回溯排查是哪些指標口徑的邏輯問題,比如是報的數(shù)據(jù)差異或是數(shù)據(jù)流 Kafka 掉了,或者是因為用戶沒有上報某個指標導(dǎo)致日活下降,而 Flink 則無法進行回溯。
計算快,一個周期內(nèi)完成所有指標計算:需要在五分鐘內(nèi)將成百上千的所有維度的指標全部計算完成。
支持實時流,分布式部署,運維簡單:支持 Kafka 數(shù)據(jù)實時流。
3.Why ClickHouse so Fast
Merge Tree:如下圖所示。第一層為實時數(shù)據(jù)寫入。后臺進行每一層級數(shù)據(jù)的merge。merge 時會進行數(shù)據(jù)排序,做 Index 索引。
ClickHouse Connector:ClickHouse 有兩個概念,Local table 和Distributed table。一般是寫 Local table ,讀 Distributed table。ClickHouse 一般以 5~10w一個批次進行數(shù)據(jù)寫入,5s一個周期。趣頭條還實現(xiàn)了 RoundRobinClickHouseDataSource。
BalancedClickHouseDataSource :MySQL 中配置一個 IP 和端口號就可以寫入數(shù)據(jù),而 BalancedClickHouseDataSource 需要寫 Local 表,因此必須要知道該集群有多少個 Local 表,每一個 Local 表的 IP 和端口號。如有一百臺機器,需要將一百臺機器的 IP 和端口號全部配置好,再進行寫入。BalancedClickHouseDataSource 有兩個 schedule。scheduleActualization和 scheduleConnectionsCleaning 。配置一百臺機器的 IP 和端口號,會出現(xiàn)某些機器不連接或者服務(wù)不響應(yīng)問題,scheduleActualization 會定期發(fā)現(xiàn)機器無法連接的問題,觸發(fā)下線或刪除 IP 等動作。scheduleConnectionsCleaning 會定期清理 ClickHouse 中無用的 http 請求。
RoundRobinClickHouseDataSource:趣頭條對BalancedClickHouseDataSource 進行加強的結(jié)果,實現(xiàn)了三個語義。testOnBorrow 設(shè)置為 true,嘗試 ping 看能否獲取連接。用 ClickHouse 寫入時是一個 batch,再將 testOnReturn 設(shè)置為 false,testWhileIdel 設(shè)置為true,填入官方 scheduleActualization 和 scheduleConnectionsCleaning 的功能。ClickHouse 后臺不斷進行 merge,如果 insert 過快使后臺 merge 速度變慢,跟不上 insert,出現(xiàn)報錯。因此需要盡量不斷往下寫,等寫完當(dāng)前機器,再寫下一個機器,以5s間隔進行寫入,使 merge 速度能夠盡量與 insert 速度保持一致。
4.Backfill
未來發(fā)展與思考
1.Connector SQL 化
2.Delta lake
看完上述內(nèi)容,你們對如何基于Flink+ClickHouse 構(gòu)建實時數(shù)據(jù)分析平臺有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。