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

67f1faebfce7413017d8c6f66f858f63.png

议题简介:

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

讲师简介:

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

目录:

o快手Druid平台概览

oDruid精确去重功能设计

oDruid其他改进

o快手Druid Roadmap

技术选型需求:

82594b72f1a52b5bc0c1bab56b84ee29.png

快手Druid平台架构

b8d5af7993be8a7f5b5ed478c2b6e9d9.png

Druid去重支持情况

维度列

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

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

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

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

不能跨interval进行计算

指标列

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

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

精确去重方案-hashset

bff9e37f9f7c4faba45e7f35ad20be5a.png

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

9aea67fa130cf7e05266da922c914d79.png

字典编码方案-Redis

o优点

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

o缺点

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

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

对Redis稳定性要求非常高

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

o优点

编码及查询吞吐高

容错性高

o缺点

仅支持离线导入任务

o结论

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

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

字典编码方案- AppendTrie树

01de5a4a8516536ed0131efa8c154f26.png

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

cf49a6b549d4e12db64769de378716dc.png

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

83ff75aae57854c8e0272362aba8fa76.png

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

8047c49a0534754ddee779c2ccb8345e.png

精确去重- 整体流程

3573a102d64d9ace2e004006d93b9e6b.png

精确去重- 使用方法

6bb27cb1996cd41b9327cfd85102af61.png

优化字典查询

存在一个超高基数列(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

49828226a5384f9c458549641716af1a.png

传输层编码

6df3f5a3cbc2ef92d52c7b4e994e2f51.png

性能测试

f54b5b25375b44b8b480f640cebecea9.png

Historical快速重启

345f6d88e209e083d527cd40c9b6cec7.png

Kafkaindex-taskCount自动伸缩

c970d827452d57757d563fae83e3a014.png

Kafkaindex– 精细化调度

4c2d6200f67c6b7c311730fc851f24a7.png

元数据交互加速

81b63b536c6b32066b794ea16aa8fc96.png

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

活动的直播回放视频

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值