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到本地。

你可能感兴趣的:(kylin,大数据开发)