HBase应用与高可用实践

中国HBase技术社区第五届MeetUp:HBase应用与高可用实践
展开查看详情

1.HBase应用与高可用实践 哥不是小萝莉

2.HBase应用与高可用实践 — About Me 出版书籍:《Hadoop大数据挖掘从入门到实战》 开源工具:https://github.com/smartloli/kafka-eagle 个人博客:http://www.cnblogs.com/smartloli

3.HBase应用与高可用实践 — 目录概要 平安科技HBase使用现状? 解决用户哪些问题? 如何保证HBase集群的高效及稳定? 后续规划

4.HBase应用与高可用实践 — 平安科技HBase使用现状 HBase集群规模,数据量? 应用场景?

5.平安科技HBase使用现状 — HBase集群规模及数据量 HBase集群规模:300+物理机 数据量:2PB+

6.平安科技HBase使用现状 — 应用场景 平安寿险 平安产险 信息安全 一账通 集团监控 银行监控 Face 新渠道 直通 信贷 智能引擎 好车主 平安墙 货基 知鸟 天眼

7.HBase应用与高可用实践 — 解决用户哪些问题 海量数据存储 性能和可靠性 数据迁移

8.解决用户哪些问题 — 海量数据存储 问题一:数据量庞大且无法预估? 问题二:可伸缩性问题,例如扩展、维护? 比较于RDBMS,HBase在扩容和维护时实施起来很方便 比较于RDBMS,HBase支持在线扩容,即使在一段时间内 数据量呈现出爆炸式增长,可以通过HBase横向扩容来满足

9.解决用户哪些问题 — 性能和可靠性 性能优化:客户端、服务端 可靠性保证

10.性能和可靠性 — 性能优化 客户端优化:Scan、Get、列簇及列、禁止缓存 指标 说明 Scan hbase.client.scanner.caching Get 建议使用批量Get 列簇及列 尽可能少的列簇,尽可能指定列查询 禁止缓存 加载大量数据时, 建议禁止缓存防止 “ 挤压”热数据

11.性能和可靠性 — 性能优化 服务端优化:Balancer、BlockCache、Compaction 1.Balancer:balance_switch|balancer,需要注意RIT问题 均衡最小值 = 总Region个数 / RegionServer个数 * 0.8 均衡最大值 = 总Region个数 / RegionServer个数 * 1.2 2.BlockCache:hbase.bucketcache.ioengine,优化GC,提高缓存命中率 hbase.bucketcache.ioengine = offheap 3.Compaction:保证本地性为1,空闲时段定时执行避免影响集群IO hbase.regionserver.thread.compaction.large = 8 hbase.regionserver.thread.compaction.small = 5

12.性能和可靠性 — 可靠性保证 Master BackUpMaster HBase不存在单点问题,可以做主备切换,保证集群的高可用性

13.解决用户哪些问题 — 数据迁移 案例一:跨集群迁移(HBase集群A到HBase集群B) 案例二:Hive数据迁移到HBase

14.数据迁移 — 跨集群迁移 HBase Cluster A HBase Cluster B 这里采用distcp来进行跨集群数据迁移,具体命令如下: hadoop distcp -Dmapreduce.job.queuename=queue_name -update -skipcrccheck -m 120 hdfs://ip:port/hbase_path_old/tabname /hbase_path_new/tabname 注意事项: 1.开启YARN,distcp使用MapReduce来传输数据,因此迁移之前需要确保 集群资源可用 2.防火墙,两个HBase集群之间端口要能正常telnet,例如NN、DN的端口 3.使用hbase hbck修复元数据信息

15.数据迁移 — 跨集群迁移 案例: Caused by: java.io.IOException: Mismatch in length of source 原因: HDFS中的文件没有关闭,处于写状态,而每次distcp时会校验文件 长度,如果文件处于未关闭状态,就会出现这类异常 解决方案: 1.检测文件状态,执行hdfs fsck [hdfs_file_path]|[hdfs://ip:port/path] 2.关闭该文件,执行hdfs debug recoverLease –path [hdfs_file_path], 3.重新进行数据迁移,执行hadoop distcp […] 注意事项: 解决方案第2步中,关闭HDFS文件时,可能会失败,例如出现异常 “Giving up on recoverLease”。 可再次执行关闭,成功后会有“recoverLease SUCCEEDED on” 信息出现

16.数据迁移 — Hive数据迁移到HBase 方案一: 在集群A中生成HFile文件,然后使用distcp将HFile文件迁移到集群B,最 后使用HBase的BulkLoad的方式将数据导入到HBase表,具体操作命令。 # 使用distcp命令迁移 hadoop distcp -Dmapreduce.job.queuename=queue_name -update -skipcrccheck -m 120 hdfs://ip:port/hfile_path /hfile_path # BulkLoad加载数据 hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hfile_path htable_name 案例: 在集群A(不包含HBase),将集群A中的Hive数据迁移到集群B中的HBase 方案二: 使用API接口,直接通过BulkLoad的方式进行数据迁移,以应用程序的形 式来实现数据迁移的工作

17.HBase应用与高可用实践 — 如何保证HBase集群的高效及稳定 监控系统 修复机制 特殊处理

18.如何保证HBase集群的高效及稳定 — 监控系统 采集HBase全部指标(查看HBase的健康状态的“眼睛”) 绘制HBase核心指标 采集地址:http://regionserver-ip:port/jmx

19.如何保证HBase集群的高效及稳定 — 修复机制 监控系统的职责? 如何处理问题? 监控系统的职责是提前发现并反馈问题。 能自动修复的尽可能配置自动修复策略,例如集群进程可用性、 存在性、负载均衡修复等。

20.如何保证HBase集群的高效及稳定 — 特殊处理 永久RIT问题 如何解决?分析实际案例 一般情况下,RIT都是瞬时的,但是有些情况会让其进入永久RIT状态, 永久RIT状态带来的不良后果就是管理员无法干预Region均衡操作,从 而影响集群的负载均衡。 案例一:在合并Region操作时,发现RIT一直显示MERGING_NEW状态, 查看HBase JIRA发现这是触发了HBASE-17682的BUG,需要打 补丁进行修复。

21.HBase应用与高可用实践 — 后续规划 降低使用HBase的门槛,更加方便的将数据接入到HBase 更加智能的监控系统、修复系统? HBase2 POC?

22.THANKS