Skip to content
muyannian edited this page Jul 28, 2013 · 33 revisions

Question1:大量的zk报错

  1. 请使用zookeeper-3.4.5.jar以及以上版本
  2. 请注意如下几个配置
    tickTime=2000 
    initLimit=10
    syncLimit=5
    maxClientCnxns=300
    maxSessionTimeout=20000

Question2:大分组的计算和count(distinct)的讨论
    根据我们在电信行业的实践,经分系统中真正决定性能的都是一些大分组查询,无法通过数据预分布进行优化。现有的MPP架构对网络带宽要求确实比较高,否则节点的处理能力很难发挥出来。总体来看,开源软件在即席统计方面的性能水平,和商业软件差距极大。数据量一大,查询一复杂,基本上就跑不出来了。
    延年:大分组查询:我能不能这样理解,就是分类汇总后的组数特别多(例如uuid),这种场景会导致大量的网络IO。 针对这种情况我们采用近似计算,来解决这个IO问题,由于没整理文档,可以阅读我的开发日志。https://github.com/muyannian/higo/issues/117 与 https://github.com/muyannian/higo/issues/119
    神通冯柯:回复@延年:嗯,我觉得如果分组足够大,比如求 TOP N,我们可以在每个节点求TOP 10*N,再汇总,从概率的角度上看,对于许多应用都足够了。当然在商业应用中,很多时候我们并没有TOP N这个条件,应用就是要返回所有分组,比较常见的是OLAP建模,用户需要把分组统计结果导入到一个Cube中。
    延年:回复@神通冯柯:恩,mdrill在这个地方确实采用了近似计算,用以满足我们的业务,count(distinct)的计算也是类似,供大家参考,https://github.com/muyannian/higo/wiki/distinct

  神通冯柯:回复@延年:嗯,很不错,尽管我个人觉得,如果group key和dist key之间存在data skew的时候,准确度恐怕很难达到你宣称的99%。不过,能满足业务需求的设计就是好设计。

Clone this wiki locally