MAPREDUCE服务 MRS-Flink性能调优建议:使用local-global两阶段聚合减少数据倾斜
使用local-global两阶段聚合减少数据倾斜
Local-Global聚合是为解决数据倾斜问题提出的,通过将一组聚合分为两个阶段,首先在上游进行本地聚合,然后在下游进行全局聚合,类似于MapReduce中的 Combine + Reduce模式。
数据流中的记录可能会倾斜,因此某些聚合算子的实例必须比其他实例处理更多的记录,这会产生热点问题。本地聚合可以将一定数量具有相同key的输入数据累加到单个累加器中。全局聚合将仅接收reduce后的累加器,而不是大量的原始输入数据,这可以很大程度减少网络shuffle和状态访问的成本。每次本地聚合累积的输入数据量基于mini-batch间隔,这意味着local-global聚合依赖于启用了mini-batch优化。
- API方式:
// instantiate table environmentTableEnvironment tEnv = ... // access flink configuration Configuration configuration = tEnv.getConfig().getConfiguration();// set low-level key-value options configuration.setString("table.exec.mini-batch.enabled", "true"); // local-global aggregation depends on mini-batch is enabled configuration.setString("table.exec.mini-batch.allow-latency", "5 s"); configuration.setString("table.exec.mini-batch.size", "5000"); configuration.setString("table.optimizer.agg-phase-strategy", "TWO_PHASE"); // enable two-phase, i.e. local-global aggregation
- 资源文件方式:
table.exec.mini-batch.enabled: true table.exec.mini-batch.allow-latency : 5 s table.exec.mini-batch.size: 5000 table.optimizer.agg-phase-strategy: TWO_PHASE
- GaussDB性能怎么调_华为gaussdb_gaussdb性能_gaussdb学习
- GaussDB性能_Gaussdb数据库性能_高斯数据库性能-华为云
- MapReduce服务_如何使用MapReduce服务_MRS集群客户端安装与使用
- 文档数据库服务DDS性能调优_MongoDB性能调优_华为云
- MapReduce服务_什么是ClickHouse_如何使用ClickHouse
- MapReduce服务_什么是MapReduce服务_什么是HBase
- MapReduce服务_什么是HetuEngine_如何使用HetuEngine
- MapReduce服务_什么是Hue_如何使用Hue
- MapReduce服务_什么是Kafka_如何使用Kafka
- MapReduce服务_什么是Loader_如何使用Loader