如何修复hbase无法关闭操作的坏表

meta表修复一
查看hbasemeta情况
hbase hbck
1.重新修复hbase meta表(根据hdfs上的regioninfo文件,生成meta表)
hbase hbck -fixMeta
2.重新将hbase meta表分给regionserver(根据meta表,将meta表上的region分给regionservere)
hbase hbck -fixAssignments
meta表修复二
当出现漏洞
hbase hbck -fixHdfsHoles
(新建一个region文件夹)
hbase hbck -fixMeta
(根据regioninfo生成meta表)
hbase hbck -fixAssignments
(分配region到regionserver上)
meta表修复三
缺少regioninfo
hbase hbck -fixHdfsOrphans
重复region问题:
查看meta中的region
scan 'hbase:meta' , {LIMIT=&10,FILTER=&&PrefixFilter('INDEX_11')&}
在数据迁移的时候碰到两个重复的region
b0c8f08ffd7aef14d7ad4f8,73ab00eaa7bab7bc83f9a3
删除两个重复的region
delete 'hbase:meta','INDEX_11,.b0c8f08ffd7aef14d7ad4f8.','info:regioninfo'
delete 'hbase:meta','INDEX_11,,6.73ab00eaa7bab7bc83f9a3.','info:regioninfo'
删除两个重复的hdfs
/hbase/data/default/INDEX_11/b0c8f08ffd7aef14d7ad4f8
/hbase/data/default/INDEX_11/73ab00eaa7bab7bc83f9a3
对应的重启regionserver(只是为了刷新hmaster上汇报的RIS的状态)
肯定会丢数据,把没有上线的重复region上的数据丢失
新hbase hbck
新版的hbck
新版本的 hbck 可以修复各种错误,修复选项是:
(1)-fix,向下兼容用,被-fixAssignments替代
(2)-fixAssignments,用于修复region assignments错误
(3)-fixMeta,用于修复meta表的问题,前提是HDFS上面的region info信息有并且正确。
(4)-fixHdfsHoles,修复region holes(空洞,某个区间没有region)问题
(5)-fixHdfsOrphans,修复Orphan region(hdfs上面没有.regioninfo的region)
(6)-fixHdfsOverlaps,修复region overlaps(区间重叠)问题
(7)-fixVersionFile,修复缺失hbase.version文件的问题
(8)-maxMerge &n& (n默认是5),当region有重叠是,需要合并region,一次合并的region数最大不超过这个值。
(9)-sidelineBigOverlaps ,当修复region overlaps问题时,允许跟其他region重叠次数最多的一些region不参与(修复后,可以把没有参与的数据通过bulk load加载到相应的region)
(10)-maxOverlapsToSideline &n& (n默认是2),当修复region overlaps问题时,一组里最多允许多少个region不参与
由于选项较多,所以有两个简写的选项
(11) -repair,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
(12)-repairHoles,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
新版本的 hbck
(1)缺失hbase.version文件
加上选项 -fixVersionFile 解决
(2)如果一个region即不在META表中,又不在hdfs上面,但是在regionserver的online region集合中
加上选项 -fixAssignments 解决
(3)如果一个region在META表中,并且在regionserver的online region集合中,但是在hdfs上面没有
加上选项 -fixAssignments -fixMeta 解决,( -fixAssignments告诉regionserver close region),( -fixMeta删除META表中region的记录)
(4)如果一个region在META表中没有记录,没有被regionserver服务,但是在hdfs上面有
加上选项 -fixMeta -fixAssignments 解决,( -fixAssignments 用于assign region),( -fixMeta用于在META表中添加region的记录)
(5)如果一个region在META表中没有记录,在hdfs上面有,被regionserver服务了
加上选项 -fixMeta 解决,在META表中添加这个region的记录,先undeploy region,后assign
(6)如果一个region在META表中有记录,但是在hdfs上面没有,并且没有被regionserver服务
加上选项 -fixMeta 解决,删除META表中的记录
(7)如果一个region在META表中有记录,在hdfs上面也有,table不是disabled的,但是这个region没有被服务
加上选项 -fixAssignments 解决,assign这个region
(8)如果一个region在META表中有记录,在hdfs上面也有,table是disabled的,但是这个region被某个regionserver服务了
加上选项 -fixAssignments 解决,undeploy这个region
(9)如果一个region在META表中有记录,在hdfs上面也有,table不是disabled的,但是这个region被多个regionserver服务了
加上选项 -fixAssignments 解决,通知所有regionserver close region,然后assign region
(10)如果一个region在META表中,在hdfs上面也有,也应该被服务,但是META表中记录的regionserver和实际所在的regionserver不相符
加上选项 -fixAssignments 解决
(11)region holes
需要加上 -fixHdfsHoles ,创建一个新的空region,填补空洞,但是不assign 这个 region,也不在META表中添加这个region的相关信息
(12)region在hdfs上面没有.regioninfo文件
-fixHdfsOrphans 解决
(13)region overlaps
需要加上 -fixHdfsOverlaps
(1)修复region holes时,-fixHdfsHoles 选项只是创建了一个新的空region,填补上了这个区间,还需要加上-fixAssignments -fixMeta 来解决问题,( -fixAssignments 用于assign region),( -fixMeta用于在META表中添加region的记录),所以有了组合拳 -repairHoles 修复region holes,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
(2) -fixAssignments,用于修复region没有assign、不应该assign、assign了多次的问题
(3)-fixMeta,如果hdfs上面没有,那么从META表中删除相应的记录,如果hdfs上面有,在META表中添加上相应的记录信息
(4)-repair 打开所有的修复选项,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
新版本的hbck从(1)hdfs目录(2)META(3)RegionServer这三处获得region的Table和Region的相关信息,根据这些信息判断并repair
转meta,表手动删除表
因为集群硬盘紧俏,绝对对原来的表加上COMPRESSION=&LZO属性。但是创建表,长时间没有反馈。决定drop掉这张表,但是始终drop失败。重启集群,hbase 60010界面显示有region transaction。为创建失败的表region,在PENDING_OPEN和CLOSED之间跳。describe 表失败, enable表失败,disable表失败,从60010界面查看表失败。很蛋疼。
后决定强制删除当前表。google了一下,找到这篇文章,文章大部分都是对的,但是最后一步存在问题.原文中命令为:
delete 'TrojanInfo','TrojanInfo,,6.b3d3d08f23d2af.','info:server'
当时就觉得有有问题,没有涉及.META.表,如何更新META信息?
尝试两次删除后是始终报错,确定应该是有问题,为了以防万一,google一下更新META信息的操作,将命令改为
delete '.META.','TrojanInfo,,6.b3d3d08f23d2af.','info:server'
命令成功执行。
重启集群后,transction仍然存在,分析应该是meta表没有更新的问题,对meta表做一次major_compact,重启集群,成功。不再有报错。
下面是对原文的拷贝:
强制删除表:
1、强制删除该表在hdfs上的所有文件(路径根据实际情况而定):
[sql] view plaincopy
./hadoop fs -rmr /hbase/TrojanInfo
2、删除该表在HBase系统表.META.中的记录:
A、首先从.META.中查询出表 TrojanInfo在.META.中的rowkey,这可以通过scan '.META.',然后手动筛选;
B、然后删除该rowkey下的3个字段(假设查询出的rowkey为TrojanInfo,,6.b3d3d08f23d2af.)
[plain] view plaincopy
delete 'TrojanInfo','TrojanInfo,,6.b3d3d08f23d2af.','info:server'
delete 'TrojanInfo','TrojanInfo,,6.b3d3d08f23d2af.','info:serverstartcode'
delete 'TrojanInfo','TrojanInfo,,6.b3d3d08f23d2af.','info:reg
转meta表修复三
一、故障原因
IP为10.191.135.3的服务器在日出现服务器重新启动的情况,导致此台服务器上的所有服务均停止。从而造成NTP服务停止。当NTP服务停止后,导致HBase集群中大部分机器时钟和主机时间不一致,造成regionserver服务中止。并在重新启动后,出现region的hole。需要对数据进行重新修复,以正常提供插入数据的服务。
二、恢复方式
1、集群50个regionserver,宕掉服务41个,namenode所在机器10.191.135.3不明重启(原因查找中)导致本机上的namenode、zookeeper、时间同步服务器服务挂掉。
2、重启hbase服务时,没能成功stop剩余的9个regionserver服务,进行了人为kill进程,
3、在hdfs上移走了hlog(避免启动时split log花费过多时间影响服务),然后重启hbase。发现10.191.135.30机器上的时间与时间同步服务器10.191.135.3不同步。手工同步后重启成功。hbase可以正常提供查询服务。
4、运行mapreduce put数据。抛出异常,数据无法正常插入;
5、执行/opt/hbase/bin/hbase hbck -fixAssignments,尝试重新分配region。结果显示hbase有空洞,即region之间数据不连续了;
6、通过上述操作可以定位是在regionserver服务宕掉的后重启的过程中丢了数据。需要进行空洞修复。然而hbase hbck命令总是只显示三条空洞。
7、通过编写的regionTest.jar工具进行进一步检测出空洞所在的regionname然后停掉hbase,进而进行region合并修复空洞;
8、合并的merge 操作需要先去.META.表里读取该region的信息,由于.META.表也在regionserver宕机过程中受到损坏,所以部分region的.META.信息没有,merge操作时就抛出空指针异常。因此只能将hdfs这些region进行移除,然后通过regionTest.jar 检测新的空洞所在的regionname,进行合并操作修复空洞;
9、关于region重叠,即regionname存在.META.表内,但是在hdfs上被错误的移出,并进行了region合并。这种情况下需要通过regionTest.jar检测重叠的regionname然后手动去.META.表删除,.META.表修改之后需要flush;
10、最后再次执行 hbase hbck 命令,hbase 所有表status ok。
三、相关命令及页面报错信息
1.手工同步时间命令?service ntpd stop?ntpdate -d 192.168.1.20?service ntpd start
2.org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 2 actions: WrongRegionException: 2 times, servers with issues: datanode10:60020, ?at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1641)?at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1409)?at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:949)?at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:826)?at org.apache.hadoop.hbase.client.HTable.put(HTable.java:801)?at org.apache.hadoop.hbase.mapreduce.TableOutputFormat$TableRecordWriter.write(TableOutputFormat.java:123)?at org.apache.hadoop.hbase.mapreduce.TableOutputFormat$TableRecordWriter.write(TableOutputFormat.java:84)?at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:533)?at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:88)?at o
3.13/08/01 18:30:02 DEBUG util.HBaseFsck: There are 22093 region info entries?ERROR: There is a hole in the region chain between +9cmnet and +.
You need to create a new .regioninfo and region dir in hdfs to plug the hole.?ERROR: There is a hole in the region chain between +3cmwap39430 and +9cmnet.
You need to create a new .regioninfo and region dir in hdfs to plug the hole.?ERROR: There is a hole in the region chain between +0cmnet and +6cmnet.
You need to create a new .regioninfo and region dir in hdfs to plug the hole.?ERROR: Found inconsistency in table cqgprs?Summary:?
-ROOT- is okay.?
Number of regions: 1?
Deployed on:
datanode14,0955915?
.META. is okay.?
Number of regions: 1?
Deployed on:
datanode21,0955825?
cqgprs is okay.?
Number of regions: 22057?
Deployed on:
datanode1,0955761 datanode10,0955748 datanode11,0955736 datanode12,0955993 datanode13,0955951 datanode14,0955915 datanode15,0955882 datanode16,0955892 datanode17,0955864 datanode18,0955703 datanode19,0955910 datanode2,0955751 datanode20,0955849 datanode21,0955825 datanode22,4479752 datanode23,0955835 datanode24,0955932 datanode25,0955856 datanode26,0955807 datanode27,0955882 datanode28,0955785 datanode29,0955799 datanode3,0955778 datanode30,0955748 datanode31,0955877 datanode32,0955763 datanode33,0955755 datanode34,0955713 datanode35,0955768 datanode36,0955896 datanode37,0955884 datanode38,0955918 datanode39,0955881 datanode4,0955826 datanode40,0955770 datanode41,0955824 datanode42,9245386 datanode43,0955880 datanode44,0955902 datanode45,0955881 datanode46,0955841 datanode47,0955790 datanode48,0955848 datanode49,0955849 datanode5,0955880 datanode50,0955802 datanode6,0955753 datanode7,0955890 datanode8,0955967 datanode9,0955948?
test1 is okay.?
Number of regions: 1?
Deployed on:
datanode43,0955880?
test2 is okay.?
Number of regions: 1?
Deployed on:
datanode21, inconsistencies detected.?Status: INCONSISTENT
4.hadoop jar regionTest.jar com.region.RegionReaderMain /hbase/cqgprs 检测cqgprs表里的空洞所在的regionname。
5.==================================?first endKey = +7cmnet?second startKey = +8cmnet??first regionNmae = cqgprs,+8cmnet.0fbe1faaeef9.?second regionNmae = cqgprs,+8cmnet.66fbe39c22e.?==================================?first endKey = +0cmnet?second startKey = +7cmnet??first regionNmae = cqgprs,+8cmnet.66fbe39c22e.?second regionNmae = cqgprs,+7cmnet.09d489d3df513bc79bab09cec36d2bb4.?==================================
6.Usage: bin/hbase org.apache.hadoop.hbase.util.Merge [-Dfs.default.name=hdfs://nn:port] &table-name& &region-1& &region-2&??./hbase org.apache.hadoop.hbase.util.Merge -Dfs.defaultFS=hdfs://bdpha cqgprs cqgprs,+7cmnet.3c13b460fae388b1b1a9. cqgprs,+7cmnet.5de80fac3. &
7.13/08/01 22:24:02 WARN util.HBaseFsck: Naming new problem group: +7cmnet?ERROR: (regions cqgprs,+6cmnet.b3cf5cc752f270dff9839e. and cqgprs,+7cmnet.7f7038bfbe2c0dfa3e1aa.) There is an overlap in the region chain.?13/08/01 22:24:02 WARN util.HBaseFsck: reached end of problem group: +4cmnet/08/01 22:24:02 WARN util.HBaseFsck: Naming new problem group: +3cmnet?ERROR: (regions cqgprs,+6cmnet.9d1e93b22cec90fd7d20d2. and cqgprs,+3cmnet.f631cd8c6acc5e711e651d13536abe94.) There is an overlap in the region chain.?13/08/01 22:24:02 WARN util.HBaseFsck: reached end of problem group: +6cmnet/08/01 22:24:02 WARN util.HBaseFsck: Naming new problem group: +3cmnet?ERROR: (regions cqgprs,+6cmnet.665dba6a14ebce079b00ae. and cqgprs,+3cmnet.6d2fecc1b3f9049bbca83d8.) There is an overlap in the region chain.?13/08/01 22:24:02 WARN util.HBaseFsck: reached end of problem group: +3cmnet?ERROR: There is a hole in the region chain between +3cmwap39430 and +9cmnet.
You need to create a new .regioninfo and region dir in hdfs to plug the hole.?13/08/01 22:24:02 WARN util.HBaseFsck: Naming new problem group: +7cmnet?ERROR: (regions cqgprs,+7cmnet.4eedab92b8e3a2. and cqgprs,+7cmnet.70b436f11bb27d2194f9.) There is an overlap in the region chain.?13/08/01 22:24:02 WARN util.HBaseFsck: reached end of problem group: +8cmnet/08/01 22:24:02 WARN util.HBaseFsck: Naming new problem group: +8cmnet?ERROR: (regions cqgprs,+3cmnet.40eede3d5ce64e9d63fe00. and cqgprs,+8cmnet.ebc442e02f5e784bcedd232.) There is an overlap in the region chain.?13/08/01 22:24:02 WARN util.HBaseFsck: reached end of problem group: +6cmnet?ERROR: There is a hole in the region chain between +0cmnet and +6cmnet.
You need to create a new .regioninfo and region dir in hdfs to plug the hole.
delete '.META.','regionname','info:serverstartcode'
delete '.META.','regionname','info:regionserver'
delete '.META.','regionname','info:regioninfo'
9. flush '.META.'?major_compact '.META.'
本文已收录于以下专栏:
相关文章推荐
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer?就是管理你要操...
meta表修复一
Java代码  
查看hbasemeta情况  
hbase hbck  
1.重新修复hbase meta表(根据hdfs上的regioninfo文件,...
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
应用场景1:当集群崩溃,要把崩溃的集群的表复制到另一个集群
1、读取hbase表对应的hdfs的文件路劲,把表文件复制到,新hbase集群的表目录下
2.重新修复hbase meta表(根据hdfs上...
在实际环境中遇到hbase fbck检查报hdfs数据块与META表信息不一致的错误。表现就是数据写入无法进行。
      经过检查,发现在.META.表中对应的一些region块的子列少了reg...
HBase -ROOT-和.META.表结构
他的最新文章
讲师:任铄
讲师:唐宇迪
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)一,基本命令:
& & 建表:create 'testtable','coulmn1','coulmn2'
& &&&也可以建表时加coulmn的属性如:create 'testtable',{NAME =& 'coulmn1', BLOOMFILTER =& 'NONE', REPLICATION_SCOPE =& '0',
VERSIONS =& '10', COMPRESSION =& 'LZO', TTL =& '30000', IN_MEMORY =& 'false', BLOCKCACHE =& 'false'}, {NAME =& 'coulmn', BLOOMFILTER =& 'NONE', REPLICATION_SCOPE =& '0', VERSIONS =& '30', COMPRESSION =& 'LZO', TTL =& '30000', IN_MEMORY =& 'true'}&&(其中的属性有versions:设置历史版本数,TTL:过期时间,COMPRESSION:压缩方式,当配置lzo的情况)
& & 删除表:drop 'testtable'& &(删除表之前先要禁用表,命令disable 'testtable')
& & 启用和禁用表: enable 'testtable' 和disable 'testtable'
& & 其它的基本命令:describe 'testtable'(查看表结构),alert 修改表结构,list 列出所有表。
二,日常维护的命令
& & 1,major_compact 'testtable',通常生产环境会关闭自动major_compact(配置文件中hbase.hregion.majorcompaction设为0),选择一个晚上用户少的时间窗口手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期。
& & 2,flush 'testtable',将所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件。
& & 3,balance_switch true或者balance_switch flase,配置master是否执行平衡各个regionserver的region数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance。
三,重启一个regionserver
& & bin/graceful_stop.sh --restart --reload --debug&nodename
& & 这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机子,这个命令会关闭balancer,所以最后我们要在hbase
shell里面执行一下balance_switch true,对于hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过bin/hbase-daemon.sh stop regionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的请求会全部失败。
四,关闭下线一台regionserver
& & bin/graceful_stop.sh --stop&&nodename
& & 和上面一样,系统会在关闭之前迁移所有region,然后stop进程,同样最后我们要手工balance_switch true,开启master的region均衡。
五,检查region是否正常以及修复
& & bin/hbase hbck&&(检查)
& & bin/hbase hbck -fix&&(修复)
& & 会返回所有的region是否正常挂载,如没有正常挂载可以使用下一条命令修复,如果还是不能修复,那需要看日志为什么失败,手工处理。
六,hbase的迁移
& & 1,copytable方式
& & bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=zookeeper1,zookeeper2,zookeeper3:/hbase
'testtable'
& & 目前0.92之前的版本的不支持多版本的复制,0.94已经支持多个版本的复制。当然这个操作需要添加hbase目录里的conf/mapred-site.xml,可以复制hadoop的过来。
& & 2,Export/Import
& & bin/hbase org.apache.hadoop.hbase.mapreduce.Export testtable /user/testtable [versions] [starttime] [stoptime]
& & bin/hbase org.apache.hadoop.hbase.mapreduce.Import testtable&&/user/testtable
& & 跨版本的迁移,我觉得是一个不错的选择,而且copytable不支持多版本,而export支持多版本,比copytable更实用一些。
& & 3,直接拷贝hdfs对应的文件
& & 首先拷贝hdfs文件,如bin/hadoop distcp hdfs://srcnamenode:9000/hbase/testtable/ hdfs://distnamenode:9000/hbase/testtable/
& & 然后在目的hbase上执行bin/hbase org.jruby.Main bin/add_table.rb /hbase/testtable
& & 生成meta信息后,重启hbase
& & 这个操作是简单的方式,操作之前可以关闭hbase的写入,执行flush所有表(上面有介绍),再distcp拷贝,如果hadoop版本不一致,可以用hftp接口的方式,我推荐使用这种方式,成本低。
& & 先总结这么多,有空我再详细写一下region坏时怎么修复。
hbase参数配置及优化
接触hbase已有半年的时间,查了很多资料,也参考了很多别人心得,也希望把自己的心得以及理解写出来,我把配置hbase必调的几个参数写一下,以及它们的意义。
zookeeper.session.timeout
这个参数的意义是regionserver在zookeeper的会话过期时间,默认是3分钟,如果regionserver 在zookeeper.session.timeout这个配置的时间没有去连zookeeper的话,zookeeper会将该regionserver在zookeeper摘除,不让该regionserver向提供服务,很多人都该值配置很大,原因是生产环境中regionserver的内存都配置很大,以扩大memstore和cache的大小,提高性能,但是内存配置大了以后,regionserver在jvm做一次内存大回收时,时间也会变长,很有可能这个时间超过zookeeper.session.timeout时间,导致regionserver在jvm回收内存的时候,zookeeper误以为regionserver挂掉而将regionserver摘除。但我认为该值还是不要配的过大,首先地java已支持cms方式回收内存,每次内存回收的时间不是太长,并且生产环境中,我们也不允许过长时间的服务中断,配置大了,容易造成一个regionserver的服务真出现异常时,zookeeper不会切除该regionserver,使得很多请求失败。
hbase.regionserver.handler.count
regionserver的工作线程数量,默认是10,没有疑问,官方默认值太小,通常都调到100~200之间,提高regionserver性能。
hbase.regionserver.lease.period
regionserer租约时间,默认值是60s,也有点小,如果你的生产环境中,在执行一些任务时,如mapred时出现lease超时的报错,那这个时候就需要去调大这个值了。
hfile.block.cache.size
regionserver cache的大小,默认是0.2,是整个堆内存的多少比例作为regionserver的cache,调大该值会提升查询性能,当然也不能过大,如果你的hbase都大量的查询,写入不是很多的话,调到0.5也就够了,说到这个值,有一个地方需要说明一下,如果生产环境有mapred任务去scan
hbase的时候,一些要在mapred scan类中加一个scan.setCacheBlocks(false),避免由于mapred使用regionserver的cache都被替换,造成hbase的查询性能明显下降。
hbase.hregion.memstore.flush.size
一个regionserver的单个region memstore的大小,默认是64M,在hbase结构中,一个regionserver管理多个region,一个region对应一个hlog和多个store,一个store对应多个storefile和一个memstore,这里的hbase.hregion.memstore.flush.size意思一个region下面的所有store里面的memstore的达到多少时,开始将这些memstore
flush到hdfs中去,配置这个值,需要参考一下,平均每个regionserver管理的region数量,如果每台regionsever管理的region不多的话,可以适当的调大该值,如512M时再flush。
hbase.regionserver.global.memstore.upperLimit/hbase.regionserver.global.memstore.lowerLimit
配置一台regionserver所有memstore占整个堆的最大比例,默认是0.4/0.35,二个值的差异在于是做局部的flush,还是全部flush,如果你的regionserver日志中,频发出现因为超过hbase.regionserver.global.memstore.lowerLimit而做flush的信息,我觉得有必要调小hbase.hregion.memstore.flush.size,或者适当调大这二个值,当然hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和不能大于1,到0.8我觉得已经够大了。如果你的jvm内存回收是使用cms的话,有一个值CMSInitiatingOccupancyFraction(内存使用到时多少时,一始cms回收内存)的大小和觉得和这个有关系,略小于hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和是一个不错的选择。
pactionThreshold/hbase.hregion.majorcompaction
pactionThreshold执行compaction的store数量,默认值是3,如果需要提高查询性能,当然是storefile的数量越小,性能越好,但是执行compaction本身有性能资源的开消,如果regionserver频繁在compacion对性能影响也很大。hbase.hregion.majorcompaction表示majorcompaction的周期,默认是1天,majorcompaction与普通的compaction的区别是majorcompaction会清除过期的历史版本数据,同时合并storefile,而普通的compaction只做合并,通常都是majorcompaction,调为0,然后手工定期的去执行一下majorcompaction,适当调小点compacionThreshold。
hbase.hregion.max.filesize
一个regionsever的最大值,默认是256M,如果数据量特别大的话,调大该值可以减少region的数量,调到2G我觉得都不为过。
hbase配置调优太多,jvm,mslab内存管理以及hdfs append方式等等,需要太多的知识面,很多东西,我也在学习之中,先写这么多。
本文已收录于以下专栏:
相关文章推荐
一,基本命令:
    建表:create 'testtable','coulmn1','coulmn2'
     也可以建表时加coulmn的属性...
原文地址:http://my.oschina.net/beiyou/blog/76456
一,基本命令:
    建表:create 'testtable','coulmn1','coulm...
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用 - 文章 - 伯乐在线/* # The number of milliseconds of each tick
tickTime...
1、 开机的一个窗口打开注册表编辑器,找到HKEY-LOCAL-MACHINE/SOFTWARE/WINDOWS NT /WINLOGON在其中新建一个名为:legalnoticecaption的名称...
他的最新文章
讲师:任铄
讲师:唐宇迪
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 hbase 60010无法访问 的文章

 

随机推荐