복붙노트

[HADOOP] 노드 / hbase가 ZooKeeper에 없습니다.

HADOOP

노드 / hbase가 ZooKeeper에 없습니다.

Hadoop 2.5.2와 함께 가상 배포 모드 hbase-0.98.10.1-hadoop1-bin 버전으로 Hbase를 설치하려고하는 Hadoop의 초보자입니다. 테이블을 추가 할 수 없습니다.

테이블을 만들려고하면 다음 오류가 계속 발생합니다.

client.HConnectionManager$HConnectionImplementation: The node /hbase is not in ZooKeeper. It should have been written by the master. Check the value configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the master.

마침내 오류를 여러 번 표시 한 후 (약 50 회) 최종 오류가 다음과 같이 표시됩니다.

ERROR: The node /hbase is not in ZooKeeper. It should have been written by the master. Check the value configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the master.

로그 파일의 최신 항목은 다음과 같습니다.

2015-02-23 16:38:39,456 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:3017)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:186)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:135)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3031)

Caused by: org.apache.hadoop.ipc.RemoteException: Server IPC version 9 cannot communicate with client version 4
at org.apache.hadoop.ipc.Client.call(Client.java:1113)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy8.getProtocolVersion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy8.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.checkVersion(RPC.java:422)
at org.apache.hadoop.hdfs.DFSClient.createNamenode(DFSClient.java:183)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:281)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:245)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:100)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1446)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1464)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:263)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187)
at org.apache.hadoop.hbase.util.FSUtils.getRootDir(FSUtils.java:942)
at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:533)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:534)
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:3012)
... 5 more

Hdbase-site 구성 파일 :

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:54310/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/Hbase/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>  
<value>true</value>
</property> 
</configuration>

jps의 출력은 다음과 같습니다.

7584 Main
8532 HQuorumPeer
4435 SecondaryNameNode
4880 NodeManager
4269 DataNode
7735 FsShell
4592 ResourceManager
4141 NameNode
9128 Jps
3147 ZKServerTool
3651 HRegionServer
2992 HMaster

가능한 오류는 무엇입니까? 어떤 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.그것은 단지 다른 hbase 버전을 사용한 후에 작업했습니다. 나는 hbase-0.98.10.1-hadoop1-bin을 사용하고 있었는데, 내 hadoop 2.5.2와 호환되지 않았다. 그래서 hbase-version을 hbase-X.XX.XX.X-hadoop2-bin으로 바꿨다. (hadoop 2와 호환되었다. .X) 아파치의 설치 단계를 따랐다. 다들 감사 해요..

    그것은 단지 다른 hbase 버전을 사용한 후에 작업했습니다. 나는 hbase-0.98.10.1-hadoop1-bin을 사용하고 있었는데, 내 hadoop 2.5.2와 호환되지 않았다. 그래서 hbase-version을 hbase-X.XX.XX.X-hadoop2-bin으로 바꿨다. (hadoop 2와 호환되었다. .X) 아파치의 설치 단계를 따랐다. 다들 감사 해요..

  2. ==============================

    2.사육사는 '/ hbase'노드가 없으므로 zookeeper.go의 노드 이름 '/ hbase'을 zkCli에 만들고 'create / hbase' "명령을 실행하십시오.

    사육사는 '/ hbase'노드가 없으므로 zookeeper.go의 노드 이름 '/ hbase'을 zkCli에 만들고 'create / hbase' "명령을 실행하십시오.

  3. ==============================

    3.

    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>hdfs://master:54310/hbase</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/usr/local/Hbase/zookeeper</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
        </property>
        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
         <property>
            <name>zookeeper.znode.parent</name>
            <value>/hbase-unsecure</value>
        </property>
        <property>
             <name>hbase.zookeeper.quorum</name>
             <value>localhost</value>
        </property>
        <property>
             <name>dfs.replication</name>
             <value>1</value>
        </property>
        <property>
             <name>hbase.zookeeper.quorum</name>
             <value>localhost</value>
        </property>
        <property>
            <name>hbase.master</name> 
            <value>hadoop-master:60000</value>
            </property>
    </configuration>
    

    사육사가 시작되어야하며 dataDir이 있어야합니다.

  4. ==============================

    4.나는 Talend에서 hbase connnection을 hadoop 클러스터에 추가 할 때이를 사용합니다. 단계 2/2, 내가 서버와 포트 (기본값 2181)를 쓸 때 hadoop 클러스터에서 저장소를 선택하고 '확인'버튼을 가리키고, 시스템 프롬프트 :

    나는 Talend에서 hbase connnection을 hadoop 클러스터에 추가 할 때이를 사용합니다. 단계 2/2, 내가 서버와 포트 (기본값 2181)를 쓸 때 hadoop 클러스터에서 저장소를 선택하고 '확인'버튼을 가리키고, 시스템 프롬프트 :

    연결에 실패했습니다. 데이터베이스 설정을 변경해야합니다.   발생 원인 : org.apache.hadoop.hbase.MasterNotRunningException : 노드 / hbase가 ZooKeeper에 없습니다. 그것은 주인에 의해 쓰여졌어야합니다. 'zookeeper.znode.parent'에 구성된 값을 확인하십시오. 마스터에 구성된 것과 일치하지 않을 수 있습니다.

    그런 다음 hadoop 속성을 추가하고 버튼을 클릭하여 속성에 추가해야합니다.

    zookeeper.znode.parent = / hbase-unsecure 확인을 클릭 한 다음 '확인'을 클릭하면 시스템 프롬프트가 성공합니다.

  5. ==============================

    5.위의 대답은 정확하지만 조금 더 길다. hbase-site.xml (hbase-1.2.1 사용)에 다음과 같은 속성을 추가하여이 문제를 해결할 수있었습니다.

    위의 대답은 정확하지만 조금 더 길다. hbase-site.xml (hbase-1.2.1 사용)에 다음과 같은 속성을 추가하여이 문제를 해결할 수있었습니다.

    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/mnt/data/zookeeper</value>
    </property>
    

    나는 / mnt / data / zookeeper 중 하나를 만들지 않았다. 내가 독립 실행 형으로 HBASE를 사용했을 때 나는 사육사를 실행해야했기 때문에 실제로 그렇게했을 때 오류가 발생했습니다.

    완전한 hbase-site.xml 설정 파일은 다음과 같다.

    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>file:///mnt/data/hbase</value>
        </property>
       <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/mnt/data/zookeeper</value>
       </property>
    </configuration>
    
  6. from https://stackoverflow.com/questions/28605301/the-node-hbase-is-not-in-zookeeper by cc-by-sa and MIT license