议题简介:

Druid在快手落地近一年时间,支持了公司绝大部分OLAP分析需求。为了保障性能,稳定性,功能性等要求,快手对Druid内核进行大量改进,建设周边系统,以及开发新feature。本次分享主要介绍快手Druid精确去重功能的设计与实现,以及部分实用功能的改进。

讲师简介:

邓钫元,快手大数据架构团队研发工程师,毕业于浙江大学,曾就职于百度、贝壳,目前负责快手Druid平台研发工作,多年底层集群以及OLAP引擎研发、分布式系统的优化经验,热衷开源,为hadoop/kylin/druid等社区贡献代码。

目录:

o快手Druid平台概览

oDruid精确去重功能设计

oDruid其他改进

o快手Druid Roadmap

技术选型需求:

快手Druid平台架构

Druid去重支持情况

维度列

1.cardinality agg, 非精确,基于hll,查询时hash函数比较耗cpu

2.嵌套group by,精确,耗费资源

3.社区DistinctCount插件,精确,但局限很大

仅支持单维度,构建时需要基于该维度做hash partition

不能跨interval进行计算

指标列

1.HyperUniques/Sketch:非精确,基于hll,摄入时做计算,比cardinality agg性能高

结论:缺乏一种预聚合,较低资源占用,通用的精确去重支持。

精确去重方案-hashset

精确去重方案-字典编码+bitmap

字典编码方案-Redis

o优点

能进行实时编码,同时支持离线任务及实时任务

o缺点

Id生成速度有瓶颈,POC: 5w/s

查询上压力也较大(可缓存)

对Redis稳定性要求非常高

字典编码方案-离线MR编码

o优点

编码及查询吞吐高

容错性高

o缺点

仅支持离线导入任务

o结论

离线任务使用离线MR编码,可通过小时级任务解决近实时

实时任务仅支持原始int去重(无需编码)

字典编码方案- AppendTrie树

字典编码方案- 可分裂AppendTrie树

字典编码方案- 字典并发构建

精确去重- 新增unique指标存储

精确去重- 整体流程

精确去重- 使用方法

优化字典查询

存在一个超高基数列(UHC)的去重指标

在IndexGenerator任务前,增加ClusterBy UHC列任务

保证每个map处理的uhc列数据有序,避免多次换入换出。

存在多个超高基数列的去重指标

拆成多个DataSource

调大IndexGenerator任务的map内存,保证字典能加载到内存

bitmap查询优化

减少targetPartitionSize或调大numShards

增加segment个数,提升并行度

batchOr,而不是逐行or

避免I/O与or计算交替,cache line miss

batchOr选择

手动按顺序依次inplace or,适合结果是较长的连续序列

naive_or 尽量延迟计算,通常较好

priorityqueue_or 使用堆排序,每次合并最小两个bitmap,消耗更多内存,建议benchmark后使用

bitmap查询优化-CroaringJNI

传输层编码

性能测试

Historical快速重启

Kafkaindex-taskCount自动伸缩

Kafkaindex– 精细化调度

元数据交互加速

Druid 6th Meetup资料下载:链接: https://pan.baidu.com/s/1gfvgtHEFb09_b4J2ef7BXg 提取码: x4av

活动的直播回放视频

链接:https://share.weiyun.com/53fbWo6

hashset去重原理_快手:Druid精确去重的设计与实现相关推荐

  1. hashset去重原理_基于simhash的文本去重原理

    互联网网页存在着大量重复内容,必须有一套高效的去重算法,否则爬虫将做非常多的无用功,工作时效性无法得到保证,更重要的是用户体验也不好.业界关于文本指纹去重的算法众多,如 k-shingle 算法.go ...

  2. java hashset 实现原理_深入Java集合学习系列:HashSet的实现原理

    Updated on 九月 8, 2016 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持. ...

  3. bobsmith电路阻抗原理_网口接口电路的EMC设计.ppt

    网口接口电路的EMC设计 关键芯片的EMC设计 原因说明: 信号的传输延时小于信号上升沿的1/6时,不是传输线,可以不用增加匹配电阻:当大于信号上升沿的1/6时,则为传输线,需要加匹配电阻. 同上. ...

  4. 弹性地基梁板法计算原理_独立基础加防水板的设计方法的思考

    [注意]:本文依据老规范写成,同时文中的独立柱基加防水板基础由于防水板下未设置软垫层,因此,实际上是一种变厚度的筏板基础,与<建筑结构>技术通讯2007年第7期中的独立柱基加防水板基础不同 ...

  5. hashSet与treeSet的去重原理

    hashSet与treeSet的去重原理 1.TreeSet去重原理 :compareTo 可以实现排序及去重:如果compareTo返回0,说明是重复的,返回的是自己的某个属性和另一个对象的某个属性 ...

  6. java Hashset去重原理及HashMap key唯一原理

    如下,set中添加重复元素是不可以的,如下 php被添加了2次,但是输出的时候只有一次,那么其去重的原理是什么呢? public class Test {public static void main ...

  7. 深入理解HashSet去重原理

    hello,大家好!最近小编我在重温Set集合中学会了很多,尤其是对于HashSet的去重?初学java的时候对于hashSet也只是一比带过只知道他可以去重但又不知其背后的原理,而面对将个属性值相同 ...

  8. hashSet底层去重原理

    hashSet底层去重原理 step1-->存入元素时,先比较要存入的元素的哈希值和集合中元素的哈希值是否一样 step2-->如果要存入的元素哈希值不同直接存入集合 step3--> ...

  9. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!

    今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试. 先上图: 当面试官问问题时,我会先把问题归类,锁定这个知识点在我的知识体系中的 ...

  10. 去重 指定区域数据_大数据分析常用去重算法分析

    去重分析在企业日常分析中的使用频率非常高,如何在大数据场景下快速地进行去重分析一直是一大难点.在近期的 Apache Kylin 沙龙上, Kyligence 大数据研发工程师陶加涛为大家揭开了大数据 ...

最新文章

  1. HDU1443(约瑟夫环问题)
  2. 分布式事物解决方案-TCC
  3. 如何关闭一切流氓程序开机自启【gitter、vmware等】
  4. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07
  5. 牛客 - 四等分的角度(几何)
  6. Tarjan的强联通分量
  7. Aspose填充word数据
  8. python 解释器下载_PyPy Python
  9. neo4j 节点与关系
  10. cannot load such file -- readline
  11. 散点图为什么是两组点_SAT数学易错点排雷之scatter plot
  12. IS-IS和OSPFv2对比
  13. 2019Q1中高端人才报告:薪资TOP10,平均年薪超23万元
  14. EasyAr聚焦模式
  15. 惊天翻转,复盘BSV的逆袭之路
  16. 关闭 Gatekeeper
  17. Ubuntu下用安装包安装MySQL
  18. 解决低版本ios使用html2canvas截图空白问题
  19. 08 Cesium—影像服务-1
  20. docker容器不断重启

热门文章

  1. TreeMap按key排序
  2. request.getContextPath()
  3. c语言里,关于宏定义的使用
  4. python ConfigParser模块 配置文件解析
  5. 检测代码运行时间(微秒级)
  6. Windows Phone 7(WP7)开发 获取网络状态
  7. Java语法总结 - 方法
  8. DPDK-UIO 驱动认识
  9. OpenCV---圆检测
  10. 多源最短路(Floyd算法)