• 47.易并行聚合算法,三角选择原则,近似聚合算法的基本慨念


    主要知识点:

    • 什么是易并行算法
    • 什么是不易并行算法
    • 什么是三角选择原则
    • 什么是近似聚合算法

       

    一、易并行聚合算法(如max

       

    es是多分步式的结构的,所以当你做下个搜索或计算时都是会在各个node上执行,所以有些聚合分析的算法,是很容易就可以并行执行的,比如说max,你要在你的数据库中找一个最大的但,只需要两步

    • 各个node都返回最大值给coordinary node
    • coordinary node 根据各个node返回的值计算出最大值返回给应用程序

    这两步在es中都是容易执行的(不会在coordinary node中占用大量内存,也不会在coordinary node占用大量cpu)

       

    二、不易并行聚合算法(如count(distinct)

       

    现在假设要计算count(distinct)。也就是说找出所有唯一值的总和,要执行这个算法es会执行以下几步

    • 各个node找到当前node的唯一值(比如有100万条)返回给coordinary node
    • coordinary node接收到各个node所返回的唯一值后,再进行去重处理,然后根据去重后的结果求和,再返回给应用程序。

    在这个过程中coordinary node会至少保留300万条(假设只有3node)数据,并要对这300万条数据做处理,这样对coordinary node,不管是内存还是cpu的压力都很大,这就是不易并行聚合算法。

       

    三、三角选择原则

       

    在精准、实时、大数据 这三个条件中只能选择2个放弃一个。

    • 精准+实时: 这样就不能处理大数据
    • 精准+大数据:典型的就是hadoop,利用批处理技术,可以处理海量数据并保证精准,但是可能会跑几个小时
    • 大数据+实时:典型的是es,采用近似估计的方式,可能会有百分之几的错误率,但是处理是近实时。

       

    四、近似聚合算法

       

    es对那些不易平行处理的算法是采用会近似聚合的方式,就是采用在每个node上进行近估计的方式,得到最终的结论,近似估计后的结果,不完全准确,但是速度会很快,一般会达到完全精准算法的性能的数十倍。es如果采取近似估计算未能延时在100ms左右,0.5%错误率。

  • 相关阅读:
    阿里云公网IP不能使用
    Python2 socket TCPServer 多线程并发 超时关闭
    Python2 socket 多线程并发 ThreadingTCPServer Demo
    Python2 socket 多线程并发 TCPServer Demo
    Python socket TCPServer Demo
    Python socket server demo
    jsp注释方式
    面试小结(java基础)
    java 多线程sleep和wait的区别
    Java中Runnable和Thread的区别
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8535878.html
Copyright © 2020-2023  润新知