HBase在贝壳找房的应用实践分享,介绍了HBase的基础知识和原理,重点介绍了在贝壳找房的实际业务应用场景中表设计原理和思想,涉及到用Kylin等上层工具解决具体问题,特别性能调优方面的经验。

注脚

展开查看详情

1. HBase在贝壳找房的实践经验 邓钫元-贝壳大数据 | 2018年7月21日 1 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

2. 关于贝壳: 以技术驱动的品质居住服务平台。 致力于聚合和赋能全行业的优质服务者,打造开放合作的 行业生态。 为消费者提供包括二手房、新房、租赁和装修等全方位的 居住服务。 2 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

3. 关于我 • 13年 浙大 - 软件工程毕业 • 13-14年 百度商业平台部 - 风控平台研发 • 15年至今 贝壳找房(原链家网) - 大数据集群及基础引擎建设 • 专注于hadoop,hbase,kylin等生态组件,热爱开源,为社区贡献多个patch • 丰富的性能调优经验 3 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

4. 目录 • HBase简介 • HBase在贝壳的使用 • HBase优化经验 • Q&A 4 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

5. HBase是什么 • Google Bigtable系统的开源实现 • 分布式的,可扩展的,一致性的,有序的半结构化数据存储系统(KV映射表) • 利用HDFS作为持久化介质,保证数据可靠性(WAL,多副本) • 利用Zookeeper作为协同服务(服务发现,状态维持) 5 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

6. 数据模型 • 表 • 行键 • 列簇 • 列 • 版本(时间戳) • 多维映射表: - (表, 行键, 列簇, 列, 版本) → 值 6 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

7. 逻辑架构 7 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

8. 系统架构 8 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

9. 目录 • HBase简介 • HBase在贝壳的使用 • HBase优化经验 • Q&A 9 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

10. 支持的业务 • 房客源轨迹 • 指标平台(多维分析引擎Kylin) • 用户画像 • 日志统计等其他分析 10 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

11. 房客源轨迹 11 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

12. 房客源轨迹-Hbase表设计 Houseid的MD5+House_pkid + ctime+ optype String 用下划线分隔 House_pkid String 房 源编码 Ctime String 记 录时间 Op_type Int 操 作类型 1.委 托 2.调 价 3.成 交 4.无 效 5.带 看 6.PC浏览 7.app 浏览 Op_value Double 操 作结果(挂牌价格,调价价格,成交价格,带看次数, 浏览次数) Op_comment String 操 作备注(例如, 周 末, 平 时) 12 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

13. 指标平台-创建报表 13 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

14. 指标平台-数据展示 14 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

15. 指标平台-上卷 15 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

16. 指标平台-下钻 16 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

17. 指标平台(快速可视化)引擎选型 较高的并 发 百亿数据 亚秒级响 集 离线为主 MOLAP 应 (Kylin) 具有一定 最好有sql 灵活性 接口 17 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

18. Kylin简介 Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查 询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开 发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。 MOLAP解决方案 预先定义维度和指标 预计算cube,存储到HBase中 查询时解析sql路由到HBase中获取结果 18 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

19. Kylin架构 19 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

20. Cube和Cuboid 20 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

21. Kylin on HBase存储模型 Rowkey= Cuboid+ 各维度编码值 Cuboid:00000011 Cuboid:00000010 Cuboid:00000001 Cuboid:00000000 21 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

22. 贝壳olap平台架构 降级 Tez mr 22 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

23. 自研Kylin中间件 • 无限容量队列 • 针对特定cube的优先调度 • 权限的管控 • 重试任务执行 • 实现任务的并发控制 23 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

24. Kylin中间件-cube管理 • 简化配置,提升管理效率 • 优化前端页面 • 对接贝壳权限体系 24 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

25. 贝壳Kylin的使用统计 • 定位:离线OLAP引擎 • 800+ cube,覆盖公司16个业务线 • Cube存储总量200T+, 数据行数1600+亿行,单cube最大60+亿行 • 日查询量100万+,时延<500ms(95%), <1s(99%) • 依赖快速稳定的hbase 25 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

26. Kylin定制改造 • 移植2.x分布式构建,并优化任务分配逻辑 • 下载字典逻辑(2.x已修复) • 全局字典锁bug(提交社区: KYLIN-3087 ) • 元数据同步并发优化(提交社区: KYLIN-2862 ) • 非分区列segement裁剪 • 强制维表关联,查询成本统计… 26 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

27. 目录 • HBase简介 • HBase在贝壳的使用 • HBase优化经验 • Q&A 27 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

28. HBase优化链路 Kylin/各类应用 HBase HDFS JVM/OS 28 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

29. Profile利器-火焰图-介绍 一定时间内采样堆栈调用生成 函数宽度表示cpu时间占比 垂直方向表示函数调用栈 29 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

30. Profile利器-火焰图-样例 30 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

31. Profile利器-火焰图-实践 优化前(并发较多时,cpu满载) Special thx: Brendan Gregg 章亦春 优化后(提升数倍qps) 31 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

32. Java GC算法 CMS G1 32 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

33. Java GC 优化参数及效果 33 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

34. HBase on HDFS异构存储 ALL_SSD WAL/核心业务 ONE_SSD 重要业务 HOT 普通业务 34 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

35. SSD-FIRST策略 /pathtofile/file.dat block1 (dn1:hdd,dn2:ssd,dn3:hdd) Client Default:优先读取本地 OR H S H D D S D D D SSD-FIRST策略:优先读取远程SSD DN1 DN2 DN3 35 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

36. HBase读写分离 避免scan阻塞小请求 36 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

37. Hbase性能测试 机器: 3 CPU: 32线程 MEM: 128G HDD: 300 iops SSD: 10w iops 37 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

38. HBase&HDFS优化杂项 • HDFS短路读(short-circuit) • 并行多线程读取datanode(Hedged Reads) • 检测stale datanodes, 避免读取慢速datanode • 关闭Hadoop均衡器, 避免影响HBase本地性 • Multiwal,提升HBase写入性能 38 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

39. Page Cache对HBase影响 1.现象: HBase压测时经常宕掉,在将机器内存从64G升级128G非常稳定 2.排查/猜想: HBase进程内存设置为50G,升级内存后也未调整 HBase本身堆使用率不高 多增加的内存会被OS用来做文件缓存(应该会大幅提升命中率) 相关资料提示HBase为IO敏感型,缓存命中率与稳定性有啥关系 3.试验: 借助systemtap统计cache命中率 39 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

40. systemtap分析 4.结果: 64G, hit=50-60% 128G,hit=80-90% hit>80%, 能避免io毛刺 40 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

41. 多处理器优化 默认亲和模式 优先分配/淘汰专属内存 对小内存应用友好 设置zone_reclaim_mode=0 专属不够时允许访问远程 内存 SMP(对称多处理器) NUMA:非一致性内存访问 41 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

42. OS优化杂项 • 增加 打开文件数,进程数限制 (nproc,nofile) • 关闭swap(swappiness=0) • TCP快速回收重用,优化短连接(tcp_tw_reuse = 1) 42 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

43. Q&A 贝壳产品技术微信公众号 个人微信号 43 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

44.44 WE ARE BEIKE, 2018 BEIKE ALL RIGHTS RESERVED

user picture
为了让众多HBase相关从业人员及爱好者有一个自由交流HBase相关技术的社区,阿里巴巴、小米、华为、网易、京东、滴滴、知乎等公司的HBase技术研究人员共同发起了组建中国HBase技术社区。

相关文档