Flink将application发布到生产环境前需要注意的事项(setMaxParallelism、uuid、State Backend、Checkpoint interval、HA集群)

1. application未来能扩展到的最大parallelism

默认的值由application第一次启动时决定:

  1. 如果所有operator的最大parallelism小于等于128,则默认值等于128
  2. 否则默认值 = MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15),其中nextPowerOfTwo取值规则是,比如nextPowerOfTwo(1000), 最接近的2的指数是2 ^10 = 1024,所以nextPowerOfTwo(1000) = 1024

控制application能扩展的最大parallelism的原因是,为了application的性能

指定的粒度为application、operator,通过setMaxParallelism(maxParallelism: Int)进行指定,指定范围为0 < parallelism <= max parallelism <= 2^15

一旦指定,application启动后就不可修改,除非不用之前的State

2. 为DataStream的所有operator设置uuid

因为state和operator需要保存一一对应关系,如果修改一个operator,则对应的state就不能匹配,所以需要给operator设置uuid,来保证关系的唯一性

可以通过datastream.uid(“test_uid”)为每一个Datastream进行设置

3. 选择合适的State Backend

可以参考我这篇博客的State Backends部分

4. 选择合适的Checkpoint时间间隔

选择时,需要考虑的3点如下:

  1. 假如task在checkpoint A的前一秒失败了,则checkpoint A的所有数据该task都要重新处理。所以checkpoint时间间隔小,重新处理的数据少,反之
  2. 对于Exactly-Once Sink,比如Kafka或FileSink,只有checkpoint完成的数据才是可见的。checkpoint时间间隔小,结果刷新的快,但是对于Sink处理压力大,反之。所以需要在满足生产需求和系统压力之间做权衡
  3. checkpoint支持和数据处理异步进行,所以checkpoint时间间隔小,会影响数据处理的资源,反之。可以考虑使用Incremental checkpointing来减轻这种情况

5. 搭建一个高可用HA集群,保证JobManager高可用

参考我的在Centos7上基于Zookeeper实现Flink1.13.2的高可用HA搭建(Standalone和Yarn版本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值