携程HBase实践

携程HBase实践携程HBase实践
展开查看详情

1. 携程HBase实践 魏宁 | 颜志远

2. 概况 监控 Client 迁移/升级 日常 2

3. 概况 监控 Client 升级 日常 3

4. 概况 使用情况  HBase版本:1.2.0-cdh5.7.1  表数量1000+,大表>100TB  QPS 5 Mil+  HDFS 50 TB+/Day  主要场景 •UBT(用户行为数据采集) •RISK(风控) •Dashboard(自研类OpenTSDB) •MKT(广告) 4

5. 概况  MKT App/站内 Adx(广点通...) 自主计算 广告服务 各个BU BI同步 站外 业务系统 标签服务 内容服务 Hermes消息队列 Hermes消息队列 Jstorm job Jstorm job API读取 HBase 5

6. 概况  其它场景 ABTest 智能推荐 海外玩乐 爬虫分析 度假起价 数湖 支付监控 机票用户画像 站内信 Kylin 消费金融 酒店排序 民宿信息快照 优惠券 智能交通 火车票订单中心 实时写 Jstorm/HBaseAPI 读取 HBASE 业务应用 批量写 SPARK/MR/Hive/Kylin 6

7. 概况 监控 Client 升级 日常 7

8. 监控 示意图 8

9. 监控 Metrics  常用指标 •连接数: RegionServer.IPC.numOpenConnections •响应时间:RegionServer.IPC.TotalCallTime_99th_percentile •处理时间:RegionServer.IPC.ProcessCallTime_99th_percentile •读请求数:RegionServer.Server.readRequestCount •写请求数:RegionServer.Server.writerRequestCount •总请求数:RegionServer.Server.totalRequestCount •请求大小: RegionServer.IPC.ResponseSize_99th_percentile RegionServer.IPC.RequestSize_99th_percentile 9

10. 监控 Metrics  常用指标 •运行线程数:JvmMetrics.ThreadsRunnable •flush队列:RegionServer.Server.flushQueueLength •Compaction队列:RegionServer.Server.compactionQueueLength •Blockcache命中率:RegionServer.Server.blockCacheCountHitPercent •Hlog大小:RegionServer.Server.hlogFileSize •Hlog文件数:RegionServer.Server.hlogFileCount •Storefile个数:RegionServer.Server.storeFileCount •Storefile大小:RegionServer.Server.storeFileSize 10

11. 监控 Metrics  常用指标 •Get次数:RegionServer.Server.Get_num_ops •Scan次数:RegionServer.Server.ScanNext_num_ops •put次数:RegionServer.Server.Mutate_num_ops •GC:JvmMetrics.GcCount/JvmMetrics.GcTimeMillis •memStoreSize:RegionServer.Server.memStoreSize  新加指标 •GetSize、 ScanNextSize、 MutateSize、 AppendSize、 IncrementSize、 DeleteSize 11

12. 监控 模仿用户监测异常  思路 •Check 每个RS是否都有Region •split/move Region保证每个RS上都有region •每隔N秒对所有regionserver put/scan一行,分别获取耗时 •集成报警规则:如连续失败N次需要报警 12

13. 监控 健康状态 13

14. 监控 集群概览 服务器 14

15. 监控 表 自定义查询 15

16. 概况 监控 Client 迁移/升级 日常 16

17. Client Client  日志收集  统一Bom文件 •Exclusion commons-logging… •Shade Guava  流量控制 •Server端繁忙自动触发Client wait一定时间 17

18. Client  动态切换集群 •修改连接参数切换集群 18

19. Client  Method耗时统计 •用户逻辑慢 or Hbase慢 19

20. 概况 监控 Client 迁移/升级 日常 20

21. 迁移升级 同版本迁移  离线迁移 •Hbase1.2->Hive1.1->Hbase1.2 •Export/Import •Copy HFile->BulkLoad •Copytable •ExportSnapshot  在线迁移 •Replication •应用双写/读 21

22. 迁移升级 升级(0.94->1.2)  原地升级 •HDFS升级 •HBase升级  迁移升级 •Hbase0.94->Hive1.1->Hbase1.2(离线,字段数一样) •模拟Replication(在线) 22

23. 迁移升级 Replication流程 修改 23

24. 迁移升级 迁移升级  数据一致的保证 •同一cell是timestamp幂等的 Hlog解析 Jstorm消费 HBASE Cluster KAFKA New HBase Cluster 24

25. 概况 监控 Client 迁移/升级 日常 25

26. 日常 常见问题  大表MajorCompaction •hbase.hstore.compaction.throughput.higher.bound/hbase.hregion.majorcompacti on=0 •以Region为单位进行MajorCompaction,周期为N天(根据 lastMajorCompactionTimestamp、TTL、writes判断)  大表避免Split风暴 •preSplit •getStorefileSizeMB业务低峰期split 26

27. 日常 常见问题  热点问题 •确保rowkey设计不存在热点/presplit •region比较小时,实现自动化split过热的region Client设置不当报错  某个Client一直报错 RegionMovedException •Region 迁移了报错,但为什么平时没有遇到这种问题呢? 27

28. 日常 原因 当hbase.client.retries.number<=1 出现这种错误时 直接throwable,没有重试机会 用户设置1次 当hbase.client.operation.timeout 非常低时出现错误 直接throwable,没有重试机会 28

29. 日常 延伸 当是NotServingRegionException, 同时retry=1时 才会更新client的 meta cache, 否则会引用旧的meta信息一直报错。 https://issues.apache.org/jira/browse/HBASE-15354 29

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