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%错误率。

原文地址:https://www.cnblogs.com/liuqianli/p/8535878.html