热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

性能和可靠性—性能优化客户端优化:Scan、Get、列簇及列、禁止缓存指标说明Scanhbase.client.scanner.cachingGet建议使用批量Get列簇及列尽可能

性能和可靠性 — 性能优化

  • 客户端优化: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/

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片



图片



推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 本文介绍了如何通过维持两个堆来获取一个数据流中的中位数。通过使用最大堆和最小堆,分别保存数据流中较小的一半和较大的一半数值,可以保证两个堆的大小差距为1或0。如果数据流中的数量为奇数,则中位数为较大堆的最大值;如果数量为偶数,则中位数为较大堆的最大值和较小堆的最小值的平均值。可以使用优先队列来实现堆的功能。本文还提供了相应的Java代码实现。 ... [详细]
author-avatar
lajallan608
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有