- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
携程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