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