博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flink生产环境参数配置清单
阅读量:3961 次
发布时间:2019-05-24

本文共 1386 字,大约阅读时间需要 4 分钟。

生产就绪清单提供了配置选项的概述,在将Apache Flink作业投入生产之前,应仔细考虑这些选项。虽然Flink社区尝试为每种配置提供合理的默认值,但重要的是查看此列表并确保选择的选项足以满足您的需求。

设置明确的最大并行度

在每个作业和每个operator的粒度上设置的最大并行度确定有状态operator可以扩展到的最大并行度。当前无法在作业开始后更改operator的最大并行度而不丢弃该operator的状态。与允许状态运算符无限扩展相比,存在最大并行度的原因是,它对应用程序的性能和状态大小有一定影响。Flink必须维护特定的元数据,才能重新缩放状态,并以最大并行度线性增长。通常,您应该选择足够高的最大并行度,以适应将来对可伸缩性的需求,同时保持足够低的水平以保持合理的性能。

**注意:**最大并行度必须满足以下条件:0 < parallelism <= max parallelism <= 2^15 (2^15) = 32768

您可以使用显式设置最大并行度setMaxParallelism(int maxparallelism)。如果未设置最大并行度,则Flink将在首次启动作业时决定使用运算符并行度的功能:

  • 128 :对于所有并行度<= 128。
  • MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15) :对于所有并行度> 128的情况。

为所有operator设置UUID

如文档所述,用户应该在其存储库中为每个运算符设置uid DataStream。Flink将operator状态映射到操作员时,必须使用Uid,这对于保存点至关重要。默认情况下,通过遍历JobGraph并哈希特定的运算符属性来生成运算符uid。尽管从用户角度来看这很舒服,但它也非常脆弱,因为对JobGraph的更改(例如,交换操作员)会导致新的UUID。要建立稳定的映射,我们需要用户通过提供的稳定的operator uid setUid(String uid)

选择正确的状态后端

当前,Flink的保存点二进制格式是特定于状态后端的。使用一个状态后端获取的保存点无法使用另一状态恢复,因此在生产之前,应仔细考虑使用哪个后端。

通常,我们建议避免MemoryStateBackend在生产环境中使用,因为它会将快照存储在JobManager而不是持久磁盘中。在FsStateBackend和之间RocksDB进行选择时,可以在性能和可伸缩性之间进行选择。 FsStateBackend每个状态访问和更新都对Java堆上的对象进行操作,因此速度非常快;但是,状态大小受群集内可用内存的限制。另一方面,它RocksDB可以根据可用磁盘空间进行扩展,并且是唯一支持增量快照的状态后端。但是,每个状态访问和更新都需要反序列化,并且可能需要从磁盘进行读取,这导致平均性能比内存状态后端慢一个数量级。仔细阅读 充分了解每种选择的利弊。

配置JobManager高可用性

JobManager充当每个Flink部署的中央协调器,负责集群的调度和资源管理。这是集群中的单点故障,如果崩溃,则无法提交新作业,并且运行的应用程序将失败。

与Apache Zookeeper一起配置,可以快速恢复,强烈建议在生产设置中使用。

转载地址:http://zjmzi.baihongyu.com/

你可能感兴趣的文章