Kylin 實時OLAP如何做CheckPoint

一、新建cube第一次消費的情況:

此種情況根據kylin.stream.consume.offsets.latest配置,true表示從最新的數據開始消費,false表示從最早的數據開始消費,默認爲true.

二、Disable cube再enable的情況

  • Disable cube時操作:
    詳情見CubeController.disableCube方法:

1、清空zk節點上此cube的數據
/kylin/KYLIN:kylin_metadata/stream/cubes/cubeName);
2、刪除此cube在 HDFS上的數據(/user/kylin/KYLIN_PROD-kylin_metadata/stream/cubeName);
3、刪除所有receiver節點上此cube的數據(通過http調用receiver的AdminController.unAssign停止消費此cube數據、刪除節點上此cube數==/home/hadoop/data/kylin_prod/inner/cubeName==)

  • Enable cube時操作:
    詳情見CubeController.enableCube方法:

1、在ZK上創建此cube的節點
/kylin/KYLIN:kylin_metadata/stream/cubes/cubeName);

2、計算此Cube的Assignment(分配到那幾個replicatset等);

3、調用分配給此Cube的所有Receiver進行數據消費
(通過HTTP調用receiver.AdminController.Assign方法):
3.1、確定kafka消費起始點:獲取本地checkpoint(由於本地數據之前disable的時候已經被刪除,所以爲空),獲取remote的checkpoint(最後一個ready 的segment的checkpoint),具體代碼參見(KafkaSource.setupConnectorFromCheckpoint方法);
3.2、確定會處理的最小時間minAcceptEventTime,latestRemoteSegment.getTSRange().end.v有值則此值作爲最小時間,否則根據配置的cube.getDescriptor().getPartitionDateStart()爲最小時間,否則爲0,參見代碼StreamServer.createNewConsumer方法;
3.3、啓動kafkaConsumer開始消費,參見StreamingConsumerChannel.start()方法:KafkaConnector.open方法設置消費起始點,綁定topic和要消費的此topic的partition、StreamingConsumerChannel.run()開始真正拉取數據並消費並保存checkpoint到本地。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章