• elasticsearch 结合 flink,kafka 性能调优经验


    1. 产品的架构是数据采集到 kafka,由 flink 读取,送入ES

    2. 这个过程中,涉及: kafka分区数,flink并行度,ES 分区数和副本

    3. kafka 分区数决定了后面 flink 的并行度,最好是 kafka 的分区数和 flink 的并行度一致,flink的并行度最好和ES的分片数相等,这样能并行写入;

    4. 写入 ES 时,需要先决定是按天建立索引还是按月建立索引,我一般是跨度超过1年的离线数据按月建立索引,跨度不超过一个月的数据按天建立索引;另外还需要考察一天或者一个月中的数据量,如果数据量超过几十亿,分片数最好设的大一点,设置成10个以上,可以加快查询

    5. 写入ES时,可以将副本数暂时设置为 0,以提高写入速度,写入完成后,可以将副本数动态修改为 1或者2;

    6. 使用 kibana 对 ES 性能进行监控,Kinban 对ES的监控非常完善,足以满足需求;

    7. 使用 Kibana 监控如果发现 ES 的 index rate 与理论值相差甚远,就要想办法提高速度,主要有两个办法,分别是针对单个任务的提高速度以及建立多个任务提高速度

      > 单个任务提高速度可以使用并行写入,主要是 kafka 分区数设置的多一些,flink 任务的并行度与kakfa分区数一致,但是这种方法有时候并不能提高速度,因为写入速度还受到其他因素影响,例如写入数据的复杂度,IO等;

      > 如果单个任务不能使 ES 接近理论速度,可以同时跑多个ES写入任务,例如A、B、C三个任务,A任务虽然只有理论值的一半(可能是写入的数据格式比较复杂),但是如果IO没有达到瓶颈,通过通过叠加B、C两个任务来使 ES 接近理论速度;

    下图是不同参数调价下的ES index 速率和 segment count值

    第一个波峰的index rate 在 1200/s 参数为 3 个 shard, 3个 replica, refresh rate = 1s

    第二个波峰的 index rate 在 2500/s 参数为 3个 shard, 0 个 replica, refresh rate = 12s

    第三个波峰采用 2 个并发写入,index rate 约为 5000/s,参数为 3个 shard, 0个 replica, refresh rate = 12s

  • 相关阅读:
    安卓中像素px和dp的转换
    Android 使用Vector XML文件创建矢量图片资源,editText监听
    动态设置RecyclerView的高度
    EditText一些用法
    各种加密算法比较
    多线程--Task,等待用户输入AutoResetEvent
    AutoCAD二次开发——AutoCAD.NET API开发环境搭建
    Office(Excel、Word)二次开发——VSTO
    个人信息管理PIM——密码管理工具软件
    【矩阵计算】矩阵乘法其一:基础符号和算法
  • 原文地址:https://www.cnblogs.com/1q94/p/13956395.html
Copyright © 2020-2023  润新知