- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
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支持在线扩容,即使在一段时间内 数据量呈现出爆炸式增长,可以通过HBase横向扩容来满足 • 问题二:可伸缩性问题,例如扩展、维护? 比较于RDBMS,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(不包含HBase),将集群A中的Hive数据迁移到集群B中的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 方案二:使用API接口,直接通过BulkLoad的方式进行数据迁移,以应用程序的形 式来实现数据迁移的工作
17 .HBase应用与高可用实践 — 如何保证HBase集群的高效及稳定 • 监控系统 • 修复机制 • 特殊处理
18 .如何保证HBase集群的高效及稳定 — 监控系统 • 采集HBase全部指标(查看HBase的健康状态的“眼睛”) 采集地址:http://regionserver-ip:port/jmx • 绘制HBase核心指标
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