下面这个是一个单独的问题;我想说的是逻辑上hbase写挂导致failover的时候kafka应该会abort掉当前事务,但是反过来kafka写错的时候,hbase这边应该没有办法不写入的,如果按现在的默认实现的话。
------------------------------------------------------------------ Sender:Yun Gao<[email protected]> Date:2020/06/20 10:42:23 Recipient:[email protected]<[email protected]>; user-zh<[email protected]> Theme:Re: Re: Re: Flink 多Sink 数据一致性保证 hello~, 一个Sink的抛异常是不会影响另外一个Sink的写入的: 这个是指hbase的异常不会影响kafka的写入?hbase的异常有导致failover么?逻辑上如果出现整个作业的failover,kafka的sink也会开始走failover,然后把当前的事务failover掉,然后整个作业回退到上一个checkpoint开始执行。 不过还有一个问题是现在hbase的sink的写法是?因为hbase默认应该hbase sink function本身应该不是基于两阶段提交的。 此致 敬礼 ------------------Original Mail ------------------ Sender:[email protected] <[email protected]> Send Date:Sat Jun 20 09:54:59 2020 Recipients:user-zh <[email protected]> CC:yungao.gy <[email protected]> Subject:Re: Re: Flink 多Sink 数据一致性保证 Hello: 我手动试了一下,一个Sink的抛异常是不会影响另外一个Sink的写入的。 引用: 按二阶段提交的逻辑,这种情况下kafka这边的事务也会被abort掉,数据不会真正写入。 这个是需要手动开启吗? [email protected] 发件人: [email protected]>Gao 发送时间: 2020-06-19 15:21 收件人: [email protected]; user-zh 主题: Re: Flink 多Sink 数据一致性保证 Hello, 我理解多个sink的情况下,数据保证写入仍然发生在数据写入后的checkpoint完成,如果写入Hbase这边写入失败的时候会触发failover的话,按二阶段提交的逻辑,这种情况下kafka这边的事务也会被abort掉,数据不会真正写入。 ------------------Original Mail ------------------ Sender:[email protected] <[email protected]> Send Date:Thu Jun 18 19:39:46 2020 Recipients:user-zh <[email protected]> Subject:Flink 多Sink 数据一致性保证 如上图所示,目前通过把作业加入多个sink,这种场景下面当hbase写入的失败的时候,不影响kakfa的写入。期望hbase写入失败,kafka也不发送。 如何保证hbase和kafka的写入为原子性呢? 不知道flink是否有多sink的二阶段提交方案。 [email protected]
