|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,某天我们晋级hbase,从hbase-0.94.5升到hbase-0.94.10,固然这些版本内里有本人到场的部分patch。
启动后,看master页面,发明良多region还没有online,在渐渐的open中。是甚么缘故原由呢?jstack发明master在实行processDeadServersAndRecoverLostRegions历程,在一个region一个region的处置,而集群统共有3w多个region,300百台呆板,3w个region一个个处置,写zk,关照regionserver翻开region,这个历程的确很慢,为何没有bulkassign呢?
本来是由于有3个deadregionserver,启动历程被判别为failover来处置了。
我们看下HMaster的启动历程:
启动过程当中:
HMaster依据以下前提之一判别此次是不是是failover历程:
(1)有非metaregion在regionserver下面
(2)有region在RITs过程当中
(3)deadservers不为空
- 假如是failover历程(实行processDeadServersAndRecoverLostRegions):
剔除deadservers下面的regions,这些regions由SSH(ServerShutdownHandler)来处置
剔除RITs过程当中的region
剩下的region一个一个处置分派
- 假如不是failover历程(实行Cleanclusterstartup):
删除zk下面的unassigned节点
BulkAssignerassignregion。
从启动历程看假如是clean的startup历程,regionopen会很快都完成,由于是批量open,以是速率会很快,假如判断是failover的历程,那末就很慢了,出格是年夜集群,region多的时分。这里就是由于有deadregionserver以是判断是failover历程。针对这类情形,我们打了个patch,把某些region用bulkassign的体例来翻开,年夜年夜减速了启动历程。
办理思绪是:
region一个一个处置分派,改成bulkassign,由于这些region不在deadserver下面,也没有在rits中。
测试效果:
11000个region,当地测试,本人的呆板,单集群一个master,一个regionserver,一个zk节点
(1)region一个一个处置分派时,启动共消费33mins
(2)regionbulkassign时,启动消费7mins
成绩办理了后,我们来看下为何启动历程有3个deadregionserver呢?从master日记来看,有两个regionserver启动时绑定端口失利,regionserver启动后会绑定60030端口,假如失利就会抛出非常,这个端口被其他使用利用了,办理举措是在设置文件中把hbase.regionserver.info.port.auto设置为true,regionserver发明60030端口被占用,会实验绑定其他端口。另有一个regionserver是因为封闭时有成绩,没有删除.oldlog目次上面的子目次招致的。又查了下regionserver封闭失利的缘故原由:
1
2
3
4
5
6
7
2013-12-1815:17:45,776INFOorg.apache.hadoop.hbase.regionserver.HRegionServer:Connectedtomasteratnull
2013-12-1815:17:48,776INFOorg.apache.hadoop.hbase.regionserver.HRegionServer:STOPPED:Exiting;clustershutdownsetandnotcarryinganyregions
2013-12-1815:17:48,776FATALorg.apache.hadoop.hbase.regionserver.HRegionServer:ABORTINGregionserverdump152049.cm8.tbsite.net,60020,1384410974572:Unhandledexception:null
java.lang.NullPointerException
atorg.apache.hadoop.hbase.regionserver.HRegionServer.tryRegionServerReport(HRegionServer.java:880)
atorg.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:753)
atjava.lang.Thread.run(Thread.java:662)
依据regionserver日记发明是毗连master出了成绩,rpcproxy被设置为null,前面心跳工夫到了,又利用这个rpcproxy招致的npe,以是我们也修正了这块逻辑,制止regionserver封闭失利。
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。 |
|