flink1.10以后,task堆外内存什么时候使用?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

flink1.10以后,task堆外内存什么时候使用?

caozhen
如题,想问下大家task堆外内存设置规则(taskmanager.memory.task.off-heap.size)

1、是用户代码中指定了使用堆外内存吗?
2、还是flink框架中在某种情况下使用堆外内存?



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

请问一下,flink 1.11 的cdc历史数据问题

dixingxing85@163.com
Hi all:
Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
1.底层是使用了debezium来加载历史数据的吗?
2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?

希望能帮忙解答一下,谢谢。


Best,
Xingxing Di
Reply | Threaded
Open this post in threaded view
|

Re: 请问一下,flink 1.11 的cdc历史数据问题

china_tao
应该是。通过源码可以知道flink-json目前支持2种内置json格式的解析,一个是canal,一个是debezium。

具体可参考:
org.apache.flink.formats.json.canal.CanalJsonDeserializationSchema 和
org.apache.flink.formats.json.debezium.DebeziumJsonDeserializationSchema

在 2020/8/24 17:27, [hidden email] 写道:

> Hi all:
> Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> 1.底层是使用了debezium来加载历史数据的吗?
> 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
>
> 希望能帮忙解答一下,谢谢。
>
>
> Best,
> Xingxing Di

Reply | Threaded
Open this post in threaded view
|

Re: flink1.10以后,task堆外内存什么时候使用?

Xintong Song
In reply to this post by caozhen
应该是在用户代码使用堆外内存的时候指定

flink 框架的堆外内存是涵盖在 taskmanager.memory.framework.off-heap.size

Thank you~

Xintong Song



On Mon, Aug 24, 2020 at 4:27 PM caozhen <[hidden email]> wrote:

> 如题,想问下大家task堆外内存设置规则(taskmanager.memory.task.off-heap.size)
>
> 1、是用户代码中指定了使用堆外内存吗?
> 2、还是flink框架中在某种情况下使用堆外内存?
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 请问一下,flink 1.11 的cdc历史数据问题

Leonard Xu
In reply to this post by dixingxing85@163.com
Hello

> Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> 1.底层是使用了debezium来加载历史数据的吗?
Flink支持两种CDC格式,debezium json和 canal json, debezium 和 canal都是CDC系统,简单说他们可以把数据库表的binlog以对应的json写入到消息队列如Kafka,
作为下游系统的Flink 支持去消费对应的cdc数据,两个CDC工作都支持加载历史数据的。
另外Jark 在Veverica 开源了一个Flink CDC connector [1],支持利用debezuim直接读取数据库的cdc数据,不需要搭建CDC系统。

> 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset


Best
Leonard
[1] https://github.com/ververica/flink-cdc-connectors <https://github.com/ververica/flink-cdc-connectors>
Reply | Threaded
Open this post in threaded view
|

回复: Re: 请问一下,flink 1.11 的cdc历史数据问题

dixingxing85@163.com
Hi:
Leonard Xu 感谢回复
> 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
这里恰好是我的疑问,之前看debezium代码,没有找到使用jdbc加载全量历史数据的代码,debezium的snapshot看起来只是保存了表的schema变更记录,这样重新消费binlog时,可以为每条binlog数据找到正确schema,达到正确解析历史数据的目的。

我的疑问是,如果加载全量历史数据,只是指定binlog的offset,从头读取binlog,那么是不是有可能无法加载到全量的数据,因为通常binlog是有过期时间的,不会保存全量的binlog。如果我理解的没问题,那么目前flink1.11 的cdc是无法加载全量历史数据的。

我理解加载全量数据,无非两种方式:
1.jdbc从源表全量拉取数据
2.将原表数据初始化到一个kafka topic中(topic设置为compact模式),再消费binlog,往这个topic里写入增量数据,确保这个topic的数据和原表一致,然后flink作业启动时,从这个topic的earliest offset消费,得到全量的历史数据。

不知道我的理解是否正确,希望能帮忙解答



Best,
Xingxing Di
 
发件人: Leonard Xu
发送时间: 2020-08-25 10:03
收件人: user-zh
主题: Re: 请问一下,flink 1.11 的cdc历史数据问题
Hello
 
> Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> 1.底层是使用了debezium来加载历史数据的吗?
Flink支持两种CDC格式,debezium json和 canal json, debezium 和 canal都是CDC系统,简单说他们可以把数据库表的binlog以对应的json写入到消息队列如Kafka,
作为下游系统的Flink 支持去消费对应的cdc数据,两个CDC工作都支持加载历史数据的。
另外Jark 在Veverica 开源了一个Flink CDC connector [1],支持利用debezuim直接读取数据库的cdc数据,不需要搭建CDC系统。
 
> 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
 
 
Best
Leonard
[1] https://github.com/ververica/flink-cdc-connectors <https://github.com/ververica/flink-cdc-connectors>
Reply | Threaded
Open this post in threaded view
|

Re: Re: 请问一下,flink 1.11 的cdc历史数据问题

Jark
Administrator
Hi,

debezium 是支持全量加载的。debezium 的一个亮点就是能够加载完存量数据以后能够无缝切换到 binlog 模式。
全量加载可以看下 SnapshotReader。

另外,全量数据导入到 kafka ,然后从 kafka 加载全量再切换到 mysql
binlog,这里面主要一个问题是很难做到无缝切换,因为不知道确切的 mysql binlog 位点。

Best,
Jark

On Tue, 25 Aug 2020 at 12:47, [hidden email] <[hidden email]>
wrote:

> Hi:
> Leonard Xu 感谢回复
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> > 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
> 这里恰好是我的疑问,之前看debezium代码,没有找到使用jdbc加载全量历史数据的代码,debezium的snapshot看起来只是保存了表的schema变更记录,这样重新消费binlog时,可以为每条binlog数据找到正确schema,达到正确解析历史数据的目的。
>
> 我的疑问是,如果加载全量历史数据,只是指定binlog的offset,从头读取binlog,那么是不是有可能无法加载到全量的数据,因为通常binlog是有过期时间的,不会保存全量的binlog。如果我理解的没问题,那么目前flink1.11
> 的cdc是无法加载全量历史数据的。
>
> 我理解加载全量数据,无非两种方式:
> 1.jdbc从源表全量拉取数据
> 2.将原表数据初始化到一个kafka
> topic中(topic设置为compact模式),再消费binlog,往这个topic里写入增量数据,确保这个topic的数据和原表一致,然后flink作业启动时,从这个topic的earliest
> offset消费,得到全量的历史数据。
>
> 不知道我的理解是否正确,希望能帮忙解答
>
>
>
> Best,
> Xingxing Di
>
> 发件人: Leonard Xu
> 发送时间: 2020-08-25 10:03
> 收件人: user-zh
> 主题: Re: 请问一下,flink 1.11 的cdc历史数据问题
> Hello
>
> > Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> > 1.底层是使用了debezium来加载历史数据的吗?
> Flink支持两种CDC格式,debezium json和 canal json, debezium 和
> canal都是CDC系统,简单说他们可以把数据库表的binlog以对应的json写入到消息队列如Kafka,
> 作为下游系统的Flink 支持去消费对应的cdc数据,两个CDC工作都支持加载历史数据的。
> 另外Jark 在Veverica 开源了一个Flink CDC connector
> [1],支持利用debezuim直接读取数据库的cdc数据,不需要搭建CDC系统。
>
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
>
> Best
> Leonard
> [1] https://github.com/ververica/flink-cdc-connectors <
> https://github.com/ververica/flink-cdc-connectors>
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: 请问一下,flink 1.11 的cdc历史数据问题

dixingxing85@163.com
@Jark,感谢回复,很好的解答了我的疑惑


Best,
Xingxing Di
 
Sender: Jark Wu
Send Time: 2020-08-27 20:13
Receiver: user-zh
Subject: Re: Re: 请问一下,flink 1.11 的cdc历史数据问题
Hi,
 
debezium 是支持全量加载的。debezium 的一个亮点就是能够加载完存量数据以后能够无缝切换到 binlog 模式。
全量加载可以看下 SnapshotReader。
 
另外,全量数据导入到 kafka ,然后从 kafka 加载全量再切换到 mysql
binlog,这里面主要一个问题是很难做到无缝切换,因为不知道确切的 mysql binlog 位点。
 
Best,
Jark
 
On Tue, 25 Aug 2020 at 12:47, [hidden email] <[hidden email]>
wrote:
 

> Hi:
> Leonard Xu 感谢回复
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> > 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
> 这里恰好是我的疑问,之前看debezium代码,没有找到使用jdbc加载全量历史数据的代码,debezium的snapshot看起来只是保存了表的schema变更记录,这样重新消费binlog时,可以为每条binlog数据找到正确schema,达到正确解析历史数据的目的。
>
> 我的疑问是,如果加载全量历史数据,只是指定binlog的offset,从头读取binlog,那么是不是有可能无法加载到全量的数据,因为通常binlog是有过期时间的,不会保存全量的binlog。如果我理解的没问题,那么目前flink1.11
> 的cdc是无法加载全量历史数据的。
>
> 我理解加载全量数据,无非两种方式:
> 1.jdbc从源表全量拉取数据
> 2.将原表数据初始化到一个kafka
> topic中(topic设置为compact模式),再消费binlog,往这个topic里写入增量数据,确保这个topic的数据和原表一致,然后flink作业启动时,从这个topic的earliest
> offset消费,得到全量的历史数据。
>
> 不知道我的理解是否正确,希望能帮忙解答
>
>
>
> Best,
> Xingxing Di
>
> 发件人: Leonard Xu
> 发送时间: 2020-08-25 10:03
> 收件人: user-zh
> 主题: Re: 请问一下,flink 1.11 的cdc历史数据问题
> Hello
>
> > Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> > 1.底层是使用了debezium来加载历史数据的吗?
> Flink支持两种CDC格式,debezium json和 canal json, debezium 和
> canal都是CDC系统,简单说他们可以把数据库表的binlog以对应的json写入到消息队列如Kafka,
> 作为下游系统的Flink 支持去消费对应的cdc数据,两个CDC工作都支持加载历史数据的。
> 另外Jark 在Veverica 开源了一个Flink CDC connector
> [1],支持利用debezuim直接读取数据库的cdc数据,不需要搭建CDC系统。
>
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
>
> Best
> Leonard
> [1] https://github.com/ververica/flink-cdc-connectors <
> https://github.com/ververica/flink-cdc-connectors>
>