HBase应用与发展之HBase应用与高可用实践

性能和可靠性 — 性能优化

客户端优化:Scan、Get、列簇及列、禁止缓存

服务端优化:Balancer、BlockCache、Compaction

1.Balancer:balance_switch|balancer,需要注意RIT问题

均衡最小值 = 总Region个数 / RegionServer个数 * 0.8

均衡最大值 = 总Region个数 / RegionServer个数 * 1.2

3.Compaction:保证本地性为1,空闲时段定时执行避免影响集群IO

性能和可靠性 — 可靠性保证

HBase不存在单点问题,可以做主备切换,保证集群的高可用性

数据迁移 — 跨集群迁移

这里采用distcp来进行跨集群数据迁移,具体命令如下:

注意事项:

开启YARN,distcp使用MapReduce来传输数据,因此迁移之前需要确保集群资源可用

防火墙,两个HBase集群之间端口要能正常telnet,例如NN、DN的端口

使用hbase hbck修复元数据信息

案例: Caused by: java.io.IOException: Mismatch in length of source

原因:HDFS中的文件没有关闭,处于写状态,而每次distcp时会校验文件

长度,如果文件处于未关闭状态,就会出现这类异常

解决方案:

检测文件状态,执行hdfs fsck [hdfs_file_path]|[hdfs://ip:port/path]

关闭该文件,执行hdfs debug recoverLease –path [hdfs_file_path],

重新进行数据迁移,执行hadoop distcp […]

注意事项:

解决方案第2步中,关闭HDFS文件时,可能会失败,例如出现异常“Giving up on recoverLease”。

可再次执行关闭,成功后会有“recoverLease SUCCEEDED on”信息出现

数据迁移 — Hive数据迁移到HBase

案例:在集群A(不包含HBase),将集群A中的Hive数据迁移到集群B中的HBase

方案一:在集群A中生成HFile文件,然后使用distcp将HFile文件迁移到集群B,最后使用HBase的BulkLoad的方式将数据导入到HBase表,具体操作命令:

方案二:使用API接口,直接通过BulkLoad的方式进行数据迁移,以应用程序的形

式来实现数据迁移的工作

如何保证HBase集群的高效及稳定 — 特殊处理

永久RIT问题

一般情况下,RIT都是瞬时的,但是有些情况会让其进入永久RIT状态,

永久RIT状态带来的不良后果就是管理员无法干预Region均衡操作,从

而影响集群的负载均衡。

如何解决?分析实际案例

案例一:在合并Region操作时,发现RIT一直显示MERGING_NEW状态,查看HBase JIRA发现这是触发了HBASE-17682的BUG,需要打补丁进行修复。

附上HBase应用与高可用实践PPT:

备注:历届HBase Meetup会议的PPT: http://hbase.group/slides/

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180915G1J6DG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券