4个步骤,让您的Flink应用程序准备好生产
Posted Flink大数据技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4个步骤,让您的Flink应用程序准备好生产相关的知识,希望对你有一定的参考价值。
这篇文章解释了必要的配置步骤,这些步骤将使您的Flink应用程序可以投入生产。在以下部分中,我们概述了工程领导,DevOps和数据工程师在将Flink作业带入生产阶段之前需要仔细考虑的重要配置参数。Apache Flink为大多数配置选项提供了开箱即用的默认设置,在许多情况下,它们是POC阶段(概念验证)或探索Flink的不同API和抽象的一个很好的起点。
但是,将Flink应用程序投入生产需要额外的配置,这些配置可以有效地扩展和重新调整应用程序,使其可以生产,并兼容不同的系统要求,Flink版本和连接器,以便进行未来的迭代和潜在的升级。下面,我们收集一些配置点进行审核,然后再将Flink应用程序转移到生产环境中:
1.明确定义Flink运算符的最大并行度
Flink的键控状态由所谓的密钥组组织,然后分发给Flink运营商的并行实例。这是要分发的最小原子单元,因此也会影响Flink应用程序的可伸缩性。每个作业的键组数量仅为每个作业选择一次:手动或默认。默认值将粗略地给出operatorParallelism * 1.5,其下限为128,上限为32768.可以通过setMaxParallelism(int maxParallelism)手动定义每个作业和/或每个操作符。
任何进入生产的Flink作业都应指定最大并行度。但是,对此值的决定应经过仔细考虑,因为此时,一旦设置了最大并行度,就无法在以后更新。改变最大并行度的Flink工作只能从一个全新的状态重新开始。目前无法在更改最大并行度时从上一个检查点或保存点恢复。
建议以对应用程序未来可扩展性和可用性需求足够高的方式设置最大并行度,同时相对较低以避免影响应用程序的整体性能。这是因为Flink具有很高的最大并行性,因其重新缩放的能力而维护某些元数据,这可能会增加Flink应用程序的整体状态。
Flink文档提供了有关如何使用检查点配置使用大状态的应用程序的其他信息和指导。
2.为Flink运营商分配唯一用户ID(UUID)
对于有状态Flink应用程序,建议为所有操作员分配唯一的用户ID(UUID)。这是必要的,因为一些内置的Flink运算符(如窗口)是有状态的,而其他运算符可能是无状态的,这使得很难知道哪些内置运算符实际上是有状态的,哪些不是。
可以使用uid(String uid)方法分配Flink运算符UUID。运算符UUID允许Apache Flink有效地将运算符状态从保存点映射到适当的运算符,这是保存点在Flink应用程序中正常工作的基本元素。
3.彻底考虑Flink应用程序的状态后端
由于Apache Flink目前不支持状态后端互操作性,开发人员和工程负责人在转向生产之前应仔细考虑其Flink应用程序的状态后端类型。这使得必须从保存点恢复状态,该状态后端首先采用保存点。
在我们之前的一篇博文中,详细了解Apache Flink目前支持的3种类型的状态后端之间的差异。
对于生产用例,强烈建议使用RocksDB状态后端,因为这是目前唯一一种支持大型状态和异步操作(如快照)的状态后端,允许在不停止Flink操作的情况下编写快照。另一方面,使用RocksDB状态后端可能存在性能折衷,因为所有状态访问和检索都需要序列化(和反序列化)来跨越JNI边界,这可能会影响应用程序的吞吐量与内存状态后端相比。
4.设置作业管理器高可用性(HA)
高可用性(HA)配置可确保Flink应用程序中JobManager组件的潜在故障自动恢复,从而将任何停机时间降至最低。JobManager的主要职责是协调所有Flink部署,例如调度和适当的资源分配。
默认情况下,Flink为每个Flink群集设置一个JobManager实例。这会产生单点故障(SPOF):如果JobManager崩溃,则无法提交新程序,并且正在运行的程序失败。因此,强烈建议为生产用例配置高可用性(HA)。
数据Artisans Platform提供了一个生产就绪的流处理基础架构,其中包括开源Apache Flink,无需额外的手动配置或部署即可使您的应用程序生产就绪。我们建议您下载Artisans Platform Kubernetes数据试用版,以便从10个非生产CPU核心中受益,并测试该产品的功能30天!
上述4个步骤遵循社区设置的最佳实践,允许Flink应用程序在保持状态的同时进行任意扩展,处理更大量的数据流和状态大小,并增加其可用性保证 - 生产用例的特定要求。Apache Flink文档中的部署和操作部分为稳定的Flink操作提供了额外的指导和支持。我们强烈建议您在将应用程序投入生产之前,仔细阅读上述步骤并仔细阅读文档。
以上是关于4个步骤,让您的Flink应用程序准备好生产的主要内容,如果未能解决你的问题,请参考以下文章