性能和可靠性 — 性能优化

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

指标

说明

Scan

hbase.client.scanner.caching

Get

建议使用批量Get

列簇及列

尽可能少的列簇,尽可能指定列查询

禁止缓存

加载大量数据时,建议禁止缓存防止

“挤压”热数据

  • 服务端优化: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


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

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


数据迁移 — 跨集群迁移

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

hadoop distcp -Dmapreduce.job.queuename=queue_name 
-update -skipcrccheck -m 120 hdfs://ip:port/hbase_path_old/tabname 
/hbase_path_new/tabname


注意事项:

  • 开启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表,具体操作命令:

# 使用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的方式进行数据迁移,以应用程序的形

式来实现数据迁移的工作


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

  • 永久RIT问题

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

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

而影响集群的负载均衡。


  • 如何解决?分析实际案例

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


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

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




©著作权归作者所有:来自51CTO博客作者mb5fdb0a6739180的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 如何为Kafka集群选择合适的Topics/Partitions数量
  2. 腾讯云Elasticsearch集群规划及性能优化实践
  3. 浅析tomcat8+memcached session共享
  4. clickhouse安装配置
  5. 60TB 数据量的作业从 Hive 迁移到 Spark 在 Facebook 的实践
  6. Phoenix实践 | Phoenix数据迁移
  7. HBase神器 | BDS-HBase集群之间数据迁移同步的利器
  8. HBase抗战总结|阿里巴巴HBase高可用8年抗战回忆录
  9. HBase服务|阿里云HBase推出普惠性高可用服务,独家支持用户的自建

随机推荐

  1. Android 动画标签——scale
  2. Android与JavaScript方法相互调用
  3. 修改 Android AVD 创建路径
  4. [APK破解]牛牛粤语学习机v1.6.4,积分1000,
  5. Android下的USB Host介绍和开发
  6. android中的坐标系以及获取坐标的方法
  7. 使用Android内部的DownloadProvider下载
  8. Android横向滑动加载更多的控件的实现---
  9. Android彻底组件化demo发布
  10. Android 关于android:name属性问题