有没有可能使用tikv作为flink 分布式的backend

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

有没有可能使用tikv作为flink 分布式的backend

wxpcc
项目里有部分需要进行状态共享的需求,多个flink 任务之间

如题,tikv本身基于rocksdb 是否有可能扩展成为分布式 backend



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

Re: 有没有可能使用tikv作为flink 分布式的backend

Congxian Qiu
Hi
   StateBackend 可以理解为 一个 KV 存储加上一个 snapshot 过程,其中 snapshot 过程负责将当前 KV
存储的数据进行备份。理论上任何的 KV 存储都是有可能作为 StateBackend 的,不过增加一种 StateBackend 的话,需要实现相应的
snapshot/restore 逻辑。

   但是在多个 Flink 作业中实现共享的 state 这个在 Flink 中是不支持的。
Best,
Congxian


wxpcc <[hidden email]> 于2020年8月21日周五 下午6:33写道:

> 项目里有部分需要进行状态共享的需求,多个flink 任务之间
>
> 如题,tikv本身基于rocksdb 是否有可能扩展成为分布式 backend
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 有没有可能使用tikv作为flink 分布式的backend

Yun Tang
Hi

TiKV 本身就是分布式的,多副本的,可以类比HBase,所以不是将其向Flink内置的state backend靠拢,而是向Flink读写HBase靠拢,这样若干写TiKV的Flink作业就做到了数据共享。

如果想将TiKV向Flink state-backend靠拢,TiKV本身的分布式架构,多副本机制,网络传输(而不是本地磁盘访问)都是缺点或者说不再必要存在的特性。
最后就会演化成现在Flink + RocksDB state-backend的架构,更何况TiKV就是基于RocksDB的,整体意义不是很大。

祝好
唐云
________________________________
From: Congxian Qiu <[hidden email]>
Sent: Monday, August 24, 2020 20:17
To: user-zh <[hidden email]>
Subject: Re: 有没有可能使用tikv作为flink 分布式的backend

Hi
   StateBackend 可以理解为 一个 KV 存储加上一个 snapshot 过程,其中 snapshot 过程负责将当前 KV
存储的数据进行备份。理论上任何的 KV 存储都是有可能作为 StateBackend 的,不过增加一种 StateBackend 的话,需要实现相应的
snapshot/restore 逻辑。

   但是在多个 Flink 作业中实现共享的 state 这个在 Flink 中是不支持的。
Best,
Congxian


wxpcc <[hidden email]> 于2020年8月21日周五 下午6:33写道:

> 项目里有部分需要进行状态共享的需求,多个flink 任务之间
>
> 如题,tikv本身基于rocksdb 是否有可能扩展成为分布式 backend
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 有没有可能使用tikv作为flink 分布式的backend

wxpcc
感谢解答

就像你说的,的确可以 用lookup方式实现一部分公用kv的共享

我的理解现有的 rocksdb backend 为:rocksdb+hdfs , 如果是变成:rocksdb+tikv ,这样在一些应用过程中产生的
kv指标数据最终会存储到 tikv之中,外部也有可能访问到,通过 lookup的方式,不知道这样是否可行





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

Re: 有没有可能使用tikv作为flink 分布式的backend

Yun Tang
Hi

这种思路我觉得是可以尝试的,不过目前看需要改动的地方很多:

  1.  需要更改RocksDB 创建checkpoint 到TiKV的代码逻辑
  2.  需要改动RocksDB 从checkpoint resume的代码逻辑
  3.  如果想要数据可以TiKV可以读取,那么TiKV中存储的格式要么与RocksDB内存储的一样,那这样子的话,lookup时候,需要能够反序列化Flink在RocksDB中的存储格式;要么是重新的格式,但这样子会导致RocksDB的checkpoint流程和时间都会增长。
  4.  TiKV中的数据的更新依赖于checkpoint interval,不能做到实时更新

其实queryable state 也是一个可以实现你们类似目的的方式,不确定你们是否可以尝试。

祝好
唐云
________________________________
From: wxpcc <[hidden email]>
Sent: Tuesday, August 25, 2020 17:05
To: [hidden email] <[hidden email]>
Subject: Re: 有没有可能使用tikv作为flink 分布式的backend

感谢解答

就像你说的,的确可以 用lookup方式实现一部分公用kv的共享

我的理解现有的 rocksdb backend 为:rocksdb+hdfs , 如果是变成:rocksdb+tikv ,这样在一些应用过程中产生的
kv指标数据最终会存储到 tikv之中,外部也有可能访问到,通过 lookup的方式,不知道这样是否可行





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

Re: 有没有可能使用tikv作为flink 分布式的backend

wxpcc
了解了,非常感谢这么详细的解答。

提到的改动点和queryable state 我都去详细了解一下



--
Sent from: http://apache-flink.147419.n8.nabble.com/