Flink实战(103):配置(二)参数配置和常见参数调优

摘要:
1 Flink 1.1 Flink参数配置jobranger.rpc.addressjm的地址。当使用yarn模式时,它将受到yarnscheduler.maximum-allocation-vcores值的影响。historyserver.archive.fs.refresh-interval刷新存档作业目录时间间隔状态。后端存储和检查点的后台存储。

来源:

1 Flink

1.1 Flink参数配置

  • jobmanger.rpc.address jm的地址。

  • jobmanager.rpc.port jm的端口号。

  • jobmanager.heap.mb jm的堆内存大小。不建议配的太大,1-2G足够。

  • taskmanager.heap.mb tm的堆内存大小。大小视任务量而定。需要存储任务的中间值,网络缓存,用户数据等。

  • taskmanager.numberOfTaskSlots slot数量。在yarn模式使用的时候会受到yarn.scheduler.maximum-allocation-vcores值的影响。此处指定的slot数量如果超过yarn的maximum-allocation-vcores,flink启动会报错。在yarn模式,flink启动的task manager个数可以参照如下计算公式:

num_of_tm = ceil(parallelism / slot)  即并行度除以slot个数,结果向上取整。

  • parallelsm.default 任务默认并行度,如果任务未指定并行度,将采用此设置。

  • web.port Flink web ui的端口号。

  • jobmanager.archive.fs.dir 将已完成的任务归档存储的目录。

  • history.web.port 基于web的history server的端口号。

  • historyserver.archive.fs.dir history server的归档目录。该配置必须包含jobmanager.archive.fs.dir配置的目录,以便history server能够读取到已完成的任务信息。

  • historyserver.archive.fs.refresh-interval 刷新存档作业目录时间间隔

  • state.backend 存储和检查点的后台存储。可选值为rocksdb filesystem hdfs。

  • state.backend.fs.checkpointdir 检查点数据文件和元数据的默认目录。

  • state.checkpoints.dir 保存检查点目录。

  • state.savepoints.dir save point的目录。

  • state.checkpoints.num-retained 保留最近检查点的数量。

  • state.backend.incremental 增量存储。

  • akka.ask.timeout Job Manager和Task Manager通信连接的超时时间。如果网络拥挤经常出现超时错误,可以增大该配置值。

  • akka.watch.heartbeat.interval 心跳发送间隔,用来检测task manager的状态。

  • akka.watch.heartbeat.pause 如果超过该时间仍未收到task manager的心跳,该task manager 会被认为已挂掉。

  • taskmanager.network.memory.max 网络缓冲区最大内存大小。

  • taskmanager.network.memory.min 网络缓冲区最小内存大小。

  • taskmanager.network.memory.fraction 网络缓冲区使用的内存占据总JVM内存的比例。如果配置了taskmanager.network.memory.maxtaskmanager.network.memory.min,本配置项会被覆盖。

  • fs.hdfs.hadoopconf hadoop配置文件路径(已被废弃,建议使用HADOOP_CONF_DIR环境变量)

  • yarn.application-attempts job失败尝试次数,主要是指job manager的重启尝试次数。该值不应该超过yarn-site.xml中的yarn.resourcemanager.am.max-attemps的值。

1.2 Flink HA(Job Manager)的配置

  • high-availability: zookeeper 使用zookeeper负责HA实现

  • high-availability.zookeeper.path.root: /flink flink信息在zookeeper存储节点的名称

  • high-availability.zookeeper.quorum: zk1,zk2,zk3 zookeeper集群节点的地址和端口

  • high-availability.storageDir: hdfs://nameservice/flink/ha/ job manager元数据在文件系统储存的位置,zookeeper仅保存了指向该目录的指针。

1.3  Flink metrics 监控相关配置

  • metrics.reporters: prom

  • metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter

  • metrics.reporter.prom.port: 9250-9260

2 Kafka相关调优配置

  • linger.ms/batch.size 这两个配置项配合使用,可以在吞吐量和延迟中得到最佳的平衡点。batch.size是kafka producer发送数据的批量大小,当数据量达到batch size的时候,会将这批数据发送出去,避免了数据一条一条的发送,频繁建立和断开网络连接。但是如果数据量比较小,导致迟迟不能达到batch.size,为了保证延迟不会过大,kafka不能无限等待数据量达到batch.size的时候才发送。为了解决这个问题,引入了linger.ms配置项。当数据在缓存中的时间超过linger.ms时,无论缓存中数据是否达到批量大小,都会被强制发送出去。

ack 数据源是否需要kafka得到确认。all表示需要收到所有ISR节点的确认信息,1表示只需要收到kafka leader的确认信息,0表示不需要任何确认信息。该配置项需要对数据精准性和延迟吞吐量做出权衡。

2.1 Kafka topic分区数和Flink并行度的关系

  • Flink kafka source的并行度需要和kafka topic的分区数一致。最大化利用kafka多分区topic的并行读取能力。

3 Yarn相关调优配置

  • yarn.scheduler.maximum-allocation-vcores

  • yarn.scheduler.minimum-allocation-vcores

Flink单个task manager的slot数量必须介于这两个值之间

  • yarn.scheduler.maximum-allocation-mb

  • yarn.scheduler.minimum-allocation-mb

Flink的job manager 和task manager内存不得超过container最大分配内存大小。

yarn.nodemanager.resource.cpu-vcores yarn的虚拟CPU内核数,建议设置为物理CPU核心数的2-3倍,如果设置过少,会导致CPU资源无法被充分利用,跑任务的时候CPU占用率不高。

免责声明:文章转载自《Flink实战(103):配置(二)参数配置和常见参数调优》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(笔记)Linux下C语言实现静态IP地址,掩码,网关的设置iterm2 常用操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

是时候扔掉 Postman 了,Apifox 不香吗!

  偶然间发现这款测试工具Apifox,暂时还没有想好该把它叫接口测试工具还是辅助开发工具。但是,给我感觉,就是很好用,而且后面还有很多开发的功能是我很期待的。 根据官方给出的简单描述,它能做的事就是: Apifox = Postman + Swagger + Mock + JMeter 一、Apifox 介绍 Apifox 是接口管理、开发、测试全流...

zookeeper + kafka集群安装部署文档

  部署环境 服务 所属ip和占用的端口 zookeeper 192.169.1.71:2181 kafka1 192.169.1.71:9092 kafka2 192.169.1.70:9092 kafka3 192.169.1.21:9092   搭建zookeeper + kafka前需要安装jdk,jdk需1.8及以上 一、...

Element-ui局部添加loading效果

项目:Vue+element-ui 在一个表格数据加载时,因为需要连接其它东西,所以后台接口返回数据需要较长时间,因此添加局部Loading效果,增加用户体验度, 最开始使用下面代码,直接放到<el-table>中,测试时遇到问题 element-loading-spinner="el-icon-loading" :element-loadin...

NBI可视化集成clickhouse,实现百亿级数据分析能力

什么是ClickHouse ClickHouse是一款MPP架构的列式存储数据库,并允许使用SQL查询实时生成分析报告,也是一个新的开源列式数据库。 随着业务的迅猛增长,Yandex.Metrica目前已经成为世界第三大Web流量分析平台,每天处理超过200亿个跟踪事件。能够拥有如此惊人的体量,在它背后提供支撑的ClickHouse功不可没。ClickH...

C# Sql 触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。 Ø 什么是触发器     触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:...

maven的目录

maven目录主要分为: src/main/java:项目主体源代码目录 src/main/resources:项目主体源代码所需资源目录 src/test/java:测试代码目录(测试代码不会被打包部署) src/test/resources:测试代码所需资源目录 target:输出目录:一般编译后的文件,测试输出文件,打好的jar包等就放在这个目录下...