본문 바로가기

Study/Bigdata

[Apache:Hbase] 에러 해결하는 방법 2015-08-05 13:49:25,287 INFO [root:16020.activeMasterManager] master.ServerManager: Waiting for region servers count to settle; currently checked in 0, slept for 9017 ms, expecting minimum of 1, maximu m of 21..

HDP 가 정말로 좋지만, 요구 환경때문에, Apache Hbase를 사용하고 있습니다. (사실 몇몇 요구사항때문에 Hbase를 직접 컴파일하고 빌드한 상황이라, 바이너리를 받았으면 이런오류가 안생기실수도 있습니다)


참고로 제 환경은 Centos 6.6 64bit, Hbase 1.0.1.1 입니다. 



방금전에 문제 겪은것에 대해 해결방법을 포스팅합니다


2015-08-05 13:49:25,287 INFO  [root:16020.activeMasterManager] master.ServerManager: Waiting for region servers count to settle; currently checked in 0, slept for 9017 ms, expecting minimum of 1, maximum of 2147483647, timeout of 4500 ms, interval of 1500 ms


이 말은 무슨말이나면, 지금 클라이언트가 Hbase 에 Embemd된 zookeeper를 쓴다고해서 환경을 맞추려다가 생긴 문제인데, Zookeepr 올라가 Hmaster가 올라갔는데 리전서버들이 아직 연락이 없다 이말입니다. 한마디로 Hmaster만 대기 타고 있는 상황


그래서 리젼서버에서 무슨일이 있나 봤더니 


714 2015-08-05 13:49:54,134 ERROR [main] regionserver.HRegionServerCommandLine: Region server exiting

 715 java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer

 716     at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2497)

 717     at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:64)

 718     at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:87)

 719     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

 720     at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)

 721     at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2511)

 722 Caused by: java.lang.reflect.InvocationTargetException

 723     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

 724     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

 725     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

 726     at java.lang.reflect.Constructor.newInstance(Constructor.java:422)

 727     at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2494)

 728     ... 5 more

 729 Caused by: java.net.BindException: Problem binding to root/XXXXX:16020 : Address already in use

 730     at org.apache.hadoop.hbase.ipc.RpcServer.bind(RpcServer.java:2373)

 731     at org.apache.hadoop.hbase.ipc.RpcServer$Listener.<init>(RpcServer.java:524)

 732     at org.apache.hadoop.hbase.ipc.RpcServer.<init>(RpcServer.java:1899)

 733     at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:795)

 734     at org.apache.hadoop.hbase.regionserver.HRegionServer.createRpcServices(HRegionServer.java:575)

 735     at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:492)

 736     ... 10 more

 737 Caused by: java.net.BindException: Address already in use

 738     at sun.nio.ch.Net.bind0(Native Method)

 739     at sun.nio.ch.Net.bind(Net.java:437)

 740     at sun.nio.ch.Net.bind(Net.java:429)

 741     at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)

 742     at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)

 743     at org.apache.hadoop.hbase.ipc.RpcServer.bind(RpcServer.java:2369)


16020 포트가 사용되고 있다고 나오는것입니다. 사용되서 내가 이포트를 써야겠는데 못쓰겠다. 

관련해서 오류를 찾아보니 포트가 중복되는 문제로 https://issues.apache.org/jira/browse/HBASE-10123

이런식으로 바꾼예제가 있는데, 제 기억에는 스택오버플로우에 있는게 기본포트였던것 같은데 아닌가 보더군요.. 


 <property > 
    <name>hbase.master.port</name> 
    <value>60000</value> 
  </property> 
  <property> 
    <name>hbase.master.info.port</name> 
    <value>60010</value> 
  </property> 
  <property> 
    <name>hbase.regionserver.port</name> 
    <value>60020</value> 
  </property> 
  <property> 
    <name>hbase.regionserver.info.port</name> 
    <value>60030</value> 
  </property> 


그래서 이런식으로 Hbase-site.xml에 집어넣고, Hbase를 작동시키니 정상작동하네요