来自快手的工程师徐明为我们分享了 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