Easystream对作业的Task所需的资源支持细粒度的资源控制,以满足不同场景下的作业运行需求。用户在创建Flink作业时,可以通过如下配置的高可靠性实现作业的高可靠性能。本文将为您介绍如何配置作业资源。

运行配置

登录实时开发平台,创建Flink SQL作业,编写作业SQL后,配置”运行配置”。 说明:Flink Jar作业可靠性配置与SQL作业相同,不再另行说明。

参数概念说明

集群
互相独立的机器通过高速网络构成的一组专门用于数据计算的系统,统一由yarn 管控,作业运行在yarn 集群上

队列
集群将资源划分为队列进行资源隔离管控,各个队列之间互相独立

引擎
作业具体依赖哪些计算引擎运行,在此用于区分不同的flink版本分支,不同的引擎之间,sql 或代码无法完全兼容

slots
Flink 集群中TM 提供的处理槽,通常配置的数量等于TM中的cpu核数

TM内存
Flink 集群中TM 所分配到的内存

TM数量
Flink 集群中所启动的TM 数量,可使用默认值1,作业会根据(作业并行度/单TMslots数量)自动分配

JM内存
Flink 集群中JM 所分配到的内存,JM 为管理单元,不需要配置过高内存,一般2-4G

并发数量
Flink 一个任务被分成几个并行实例执行,每个并行实例处理输入数据的一个子集,一个任务的并行实例数称为并发数量。该参数可以在’sql‘中配置,也可以在‘高级配置’及‘运行配置’中配置。执行优先级如下:sql > 运行配置 > 高级配置

作业‘运行配置’参数建议
Source 端并行度的配置

数据源端是 Kafka,Source的并行度一般设置为Kafka对应Topic的分区数或者和分区数成比例。即并发度数能整除分区数。例如Kafka有16个分区,则并发度建议设置为16、8或4,这样可以避免数据倾斜。同时Source节点的并发度不宜设置太小,避免一个Source需要读取太多数据,导致出现入口瓶颈,影响作业吞吐。如果已经等于 Kafka 的分区数,消费速度仍跟不上数据生产速度,考虑下Kafka 要扩大分区,同时调大并行度等于分区数。 Flink 的一个并行度可以处理一至多个分区的数据,如果并行度多于 Kafka 的分区数,那么就会造成有的并行度空闲,浪费资源。
source 端的并行度在“任务开发”页面 ”通过set 语法 set 表名.parallelism = 'x' 配置即可

并发数量配置

建议按需配置除Source外的其他节点的并发度。流量大的节点,并发设置大一些;流量小的节点,并发设置小一些。 开发完成作业后,适当进行压测,能够对作业承受多大流量有一定的掌握。
压测建议 任务并行度给10以下,测试单个并行度的处理上限。然后总QPS/单并行度的处理能力 = 并行度不能只从QPS去得出并行度,因为有些字段少、逻辑简单的任务,单并行度一秒处理几万条数据。而有些数据字段多,处理逻辑复杂,单并行度一秒只能处理1000条数据。最好根据高峰期的QPS压测,并行度*1.2倍,富余一些资源。
该配置项在“并发数量”处配置即可

sink 端并行度配置

Sink 端是数据流向下游的地方,可以根据 Sink 端的数据量及下游的服务抗压能力进行评估。 如果Sink端是Kafka,可以设为Kafka对应Topic的分区数。 Sink 端的数据量小,比较常见的就是监控告警的场景,并行度可以设置的小一些。 Source 端的数据量是最小的,拿到 Source 端流过来的数据后做了细粒度的拆分,数据量不断的增加,到 Sink 端的数据量就非常大。那么在 Sink 到下游的存储中间件的时候就需要提高并行度。另外 Sink 端要与下游的服务进行交互,并行度还得根据下游的服务抗压能力来设置,如果在 Flink Sink 这端的数据量过大的话,且 Sink 处并行度也设置的很大,但下游的服务完全撑不住这么大的并发写入,可能会造成下游服务直接被写挂,所以最终还是要在 Sink 处的并行度做一定的权衡。 根据各种不同连接器的参数来配置,具体参考sql连接器
另外 建议在有明确异常或者需求时,再调整Heap Memory和Off-heap Memory的大小,例如作业出现OOM或严重GC等。因为在作业正常运行时,调整Heap Memory和Off-heap Memory的大小,不会明显改变作业的吞吐量。

Checkpoint 参数

参数概念说明
Checkpoint间隔
两次触发Checkpoint的间隔,执行Checkpoint机制会影响实时开发性能,配置间隔时间需权衡对业务的性能影响及恢复时长,最好大于Checkpoint的完成时间,建议设置为5分钟。

Checkpoint模式
支持ExactlyOnce模式保证每条数据只被消费一次,At_Least Once模式每条数据至少被消费一次,默认使用Exactly_Once,如有必要请依据业务情况选择。

Checkpoint超时
checkpoint 可能因为访问较慢的服务无法正常完成,导致超时,需要配置一定的超时时间,防止影响任务计算。一般配置10分钟即可。

状态存储介质
checkpoint 存储在本地(rocksdb)还是远程(hdfs)建议使用默认值。

重启策略
fix-delay策略:默认重试10次,每次间隔5秒。failure-rate策略:默认在间隔5分钟内,失败次数超过20次,间隔5秒。如需要特殊设置,请联系管理员。建议使用默认值。

设置作业报警

在生产环境中,及时感知作业的运行状态是十分重要的。建议告警必须配置,Easysteam 提供了丰富的告警指标供用户选择配置,同时提供了多种报警通道,可以按需使用。通过添加告警规则可以按照不同作业配置不同的指标来跟进作业的运行状态。