【已解决】Flink Doris Connector Checkpoint 超时问题

Viewed 102

环境介绍:

Apache Doris 2.1.2-rc04 , Flink 1.18.1 ,flink-doris-connector 1.5.2

问题描述:

flink消费kafka 写入doris , on yarn ,Application 模式提交,sink 端 writer 算子反压现象明显,Checkpoint 频繁超时。之前在flink 1.16 standalone 集群 ,apache doris 2.0.4 ,flink-doris-connector 1.3.0 ,同样的数据量Checkpoint interval 10s ,根本不存在反压现象,入doris速度相当快。

问题1 :

我看了flink-doris-connector 1.5.2 这个版本源码, 官网写道TwoPhaseCommit 两阶段提交默认为true开启,但实际上如下"TwoPhaseCommit": "false" 是关闭状态。我手动设置TwoPhaseCommit 为true ,TM日志显示提交成功,且TwoPhaseCommit参数为true , 但是doris 中的数据不可见,查不到,请问是不是bug?

Result {
    "TxnId": 5539110,
    "Label": "kafka2doris-vehicle-label-_ODS_ODS_LW_VEHICLE_PASS_INFO_37_484_f794ccb2-5394-4fe7-a86b-4209b36f1c41",
    "Comment": "",
    "TwoPhaseCommit": "false",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 763,
    "NumberLoadedRows": 761,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 2,
    "LoadBytes": 802179,
    "LoadTimeMs": 27687,
    "BeginTxnTimeMs": 0,
    "StreamLoadPutTimeMs": 60,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 27568,
    "CommitAndPublishTimeMs": 56
}

问题2:

反压的问题,我排查了JM、TM 的JVM,没问题 , flink ckp方式也在AC和UC之间调整了不少参数,效果不明显,和之前1.3.0版本写入结果对比(之前盲测这个数据量写入性能也不错),大概率是1.5.2 这个版本有问题,请帮忙确认下是不是bug ? 如果是我该升级到哪个版本?

1 Answers

1. 当开启2pc时,stream load显示成功之后,此时数据已经存到了Doris,但是数据此时是处于预提交状态,对用户不可见。之后,connector 端会进行一个commit提交,此时数据才对用户可见。如下:

curl -X PUT --location-trusted -u user:passwd  -H "txn_id:18036" -H "txn_operation:commit"  http://fe_host:http_port/api/{db}/{table}/_stream_load_2pc
{
    "status": "Success",
    "msg": "transaction [18036] commit successfully."
}

2. 图片中反压,应该是写入慢了。700多条数据写了27s,有点慢。查看一下集群的负载情况,例如:网络,cup,io。当前更建议connector为1.6.1。

3. 你这边checkpoint设置时间是? 如果是unique表,可以考虑换成batch模式,不依赖checkpoint.