flink 写入到es_Flink 实时写入数据到 ElasticSearch 性能调优

本文介绍了线上Flink处理Kafka数据出现backpressure的问题,通过复现问题并进行性能调优测试。测试环境为Elasticsearch 2.3.3和Flink 1.6.3,发现主要瓶颈在于ES写入性能。优化措施包括:关闭索引自动检测、降低副本数、调整refresh_interval、平衡节点CPU使用和线程池配置、优化index buffer和translog。经过优化,Flink反压和Kafka积压明显改善。
摘要由CSDN通过智能技术生成

背景说明

线上业务反应使用 Flink 消费上游 kafka topic 里的轨迹数据出现 backpressure,数据积压严重。单次 bulk 的写入量为:3000/50mb/30s,并行度为 48。针对该问题,为了避免影响线上业务申请了一个与线上集群配置相同的 ES 集群。本着复现问题进行优化就能解决的思路进行调优测试。

测试环境

Elasticsearch 2.3.3

Flink 1.6.3

flink-connector-elasticsearch 2_2.11

八台 SSD,56 核 :3 主 5 从

Rally 分布式压测 ES 集群

从压测结果来看,集群层面的平均写入性能大概在每秒 10 w+ 的 doc。

Flink 写入测试

配置文件

1config.put("cluster.name", ConfigUtil.getString(ES_CLUSTER_NAME, "flinktest"));2config.put("bulk.flush.max.actions", ConfigUtil.getString(ES_BULK_FLUSH_MAX_ACTIONS, "3000"));3config.put("bulk.flush.max.size.mb", ConfigUtil.getString(ES_BULK_FLUSH_MAX_SIZE_MB, "50"));4config.put("bulk.flush.interval.ms", ConfigUtil.getString(ES_BULK_FLUSH_INTERVAL, "3000"));

执行代码片段

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();initEnv(env);Properties properties = ConfigUtil.getProperties(CONFIG_FILE_PATH);//从kafka中获取轨迹数据FlinkKafkaConsumer010 flinkKafkaConsumer010 =new FlinkKafkaConsumer010<>(properties.getProperty("topic.name"), new SimpleStringSchema(), properties);//从checkpoint最新处消费flinkKafkaConsumer010.setStartFromLatest();DataStreamSource streamSource &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值