- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
HBase at Kuaishou
来自快手的工程师徐明为我们分享了 HBase 在快手的应用和实践。
快手每天有大量的用户上传大量的视频,这部分视频大部分是几 MB 的对象,其存储方案是:数据直接存储在 HDFS 上,数据的索引存储在 HBase 上,而最新的数据则存储在 memcache 中。
为了提高 HBase 的可用性,加快故障恢复速度,快手自研了 hawk 系统,其包括master,agent,sniffer 三个组件,由多个 agent 投票来确认一个节点是否挂了,然后由 sniffer 来处理挂的节点,并将有问题的节点迅速的从 zk 上删掉。同时快手做了一些优化来加速 split log 和 assign region 的过程。在 Client 端,则主要是确保有问题节点的 region location 能被快速清理掉。
RSGroup 功能也在快手被大量使用,并做了一些优化。一个是添加了 FallBack RSGroup,如果某个 RSGroup 的全部节点都挂了,就从这个 FallBack RSGroup中选择机器;一个是添加了 Global RSGroup,主要是满足监控需求,因为 HBase的 canary 表需要分布在各个机器上。
快手还分享了其如何使用 HBase 来存储和分析海量数据的案例。比如要解决计算用户留存的问题,如果使用 SQL 的话执行很慢,快手使用了 Bitmap 的解决方案。把需要提取的维度转化成 Bitmap,使用空间来减少消耗的时间。使用MR把选择的维度转成 Bitmap,把 Bitmap 切成小块,Bitmap 的数据及 meta 都导入到HBase 中。
展开查看详情
1 .
2 .
3 .• • • •
4 .
5 .• • • •
6 .l l l l ü ü ü ü l ü ü ü
7 .
8 . & & l ü ü l l l l l l
9 . & • •
10 . & • • • •
11 . & l l
12 .l • • • Long Time !
13 .l l • • • • • l
14 .l l l l
15 . & & • •
16 .
17 .SELECT DISTINCT COUNT(userId) FROM profile p JOIN favor f on f.userid=p.userid JOIN action a on a.userId=f.userId WHERE p.city=‘beijing’ AND f.favorite LIKE ‘%music%’ AND a.live LIKE ‘%send gift%’ and dt =‘20190101’
18 . 2 440510 -807 09059365 • • • 09059365 : : : : : : 6 : 4 907 4 907 4 907 4 907 4 907 4 907 % % % % % % % % % % % % %
19 .
20 .l l l l
21 .l l
22 .
23 .?
24 .l ✓ l l ✓ ✓
25 .l . 1 03 . .0 .0 .0 0 0 0 0 0 0 0 0 l 0 . 3
26 .
27 .
28 .
29 .l l l