복붙노트

[HADOOP] Hbase : Hbase 마스터에 대한 호스트 이름을 지정하는 방법

HADOOP

Hbase : Hbase 마스터에 대한 호스트 이름을 지정하는 방법

두 개의 노드가있는 Hbase 분산 클러스터를 설정하는 데 어려움을 겪고 있습니다. 하나는 내 머신이고 다른 하나는 VirtualBox의 "호스트 전용"어댑터를 사용하는 VM입니다.

내 문제는 지역 서버 (VM 컴퓨터에서) 호스트 컴퓨터에서 실행중인 Hbase 마스터에 연결할 수 없다는 것입니다. Hbase 쉘에서 VM 머신 ( 'slave')의 regionserver에서 테이블을 생성, 나열, 나열 할 수 있지만 로그는 항상 표시합니다.

org.apache.hadoop.hbase.regionserver.HRegionServer: Unable to connect to master.      Retrying. Error was:
java.net.ConnectException: Connection refused

이전에 'master'라는 이름의 노드 2 개와 마스터 노드 'master'와 'master'와 'slave'노드가 모두 슬레이브 노드로 작동하는이 클러스터에서 Hadoop, HDFS 및 MapReduce를 성공적으로 설치했습니다. VirtualBox의 vboxnet0 인터페이스에 바인드 된 이름 (/ etc / hostname에있는 호스트 이름이 다릅니다). 각 노드의 "slave.host.name"속성을 'master'및 'slave'로 지정합니다.

그것은 '마스터'의 Hbase 마스터가 항상 '로컬 호스트'호스트 이름으로 실행되는 것 같습니다. 나는 마스터 호스트 이름으로 hbase 마스터에 텔넷을 연결할 수 없습니다. 그래서 '마스터'로 Hbase 마스터에 대한 호스트 이름 사용을 지정하는 방법은 무엇입니까, 나는 마스터와 슬레이브 사이의 내부 인터페이스를 사용하는 ZooKeeper, 마스터, RegionServer에 대한 DNS 인터페이스에 대한 몇 가지 속성을 지정하려고했지만, 여전히 전혀 작동하지 않습니다 .

/ etc / hosts와 같이

127.0.0.1   localhost
127.0.0.1   ubuntu.mymachine

# For Hadoop
192.168.56.1 master
192.168.56.101 slave

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

해결법

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

    1.@Infinity가 제공 한 대답은 버전 ~ 0.9.4에 속하는 것 같습니다.

    @Infinity가 제공 한 대답은 버전 ~ 0.9.4에 속하는 것 같습니다.

    1.1.4 버전.

    에서 소스 코드에 따르면

    org.apache.hadoop.hbase.master.HMaster
    

    구성은 다음과 같아야합니다.

      <property>
        <name>hbase.master.hostname</name>
        <value>master.local</value>
        <!-- master.local is the DNS name in my network pointing to hbase master -->
      </property>
    

    이 값을 설정하면 지역 서버가 hbase master에 연결할 수 있습니다. 그러나 제 환경에서는 지역 서버가 다음에 대해 불평했습니다.

    com.google.protobuf.ServiceException: java.net.SocketException: Invalid argument
    

    모든 노드에서 open-jdk-7 대신 oracle JDK 8을 설치하면 문제가 사라졌습니다.

    결론적으로, 여기 내 해결책이있다 :

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

    2.내 호스트 파일은 다음과 같습니다.

    내 호스트 파일은 다음과 같습니다.

    127.0.0.1 localhost

    192.168.2.118 eternal.mishin.com 영원한

    호스트 파일을 다음과 같이 작성하십시오.

    127.0.0.1 localhost

    마스터 192.168.56.1

    192.168.56.101 노예

    hbase conf에 다음과 같은 항목을 넣습니다.

    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
    <name>hbase.master</name>
    <value>master:60000</value>
    <description>The host and port that the HBase master runs at.</description>
    </property>
    <property>
    <name>hbase.regionserver.port</name>
    <value>60020</value>
    <description>The host and port that the HBase master runs at.</description>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.tmp.dir</name>
    <value>/home/cluster/Hadoop/hbase-0.90.4/temp</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description>Property from ZooKeeper's config zoo.cfg.
    The port at which the clients will connect.
    </description>
    </property>
    

    만약 당신이 localhost를 사용하고 있다면 그것을 제거하고 hostfile에있는 namenode의 이름 인 "master"로 바꾸십시오.

    네가 할 수있는 한 가지 더.

    sudo gedit / etc / hostname

    이것은 기본적으로 호스트 이름 파일을 열 것입니다 우분투는 마스터가 될 것입니다. 시스템을 다시 시작하십시오.

    hbase에 대해 conf 디렉토리 안에 "regionserver"파일을 지정하십시오.이 항목을 넣으십시오.

    석사 노예

    그리고 restart.everything.

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

    3.이 문제를 해결하는 데는 두 가지가 있습니다.

    이 문제를 해결하는 데는 두 가지가 있습니다.

    1) 모든 "localhost"이름을 제거하고 hmaster 노드의 이름을 가리키는 127.0.0.1 만 갖습니다.

    2) hbase 마스터 노드에서 "hostname X"를 실행하여 호스트 이름이 / etc / hosts에있는 호스트 이름과 일치하는지 확인하십시오.

    네트워킹 전문가가 아니기 때문에 이것이 중요한 이유는 말할 수 없습니다. :)

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

    4.종종 잘못된 호스트 이름을 보내는 사육사의 오류가 발생합니다.

    종종 잘못된 호스트 이름을 보내는 사육사의 오류가 발생합니다.

    Zookeeper가 HBase 마스터 호스트로 보내는 내용을 확인할 수 있습니다.

    사육사 bin 폴더 찾기 :

    bin/zkCli.sh -server 127.0.0.1:2181
    get /hbase/master
    

    Zookeeper에 응답하는 HBase 마스터 IP를 제공해야하므로이 IP에 액세스 할 수 있어야합니다.

  5. from https://stackoverflow.com/questions/9615707/hbase-how-to-specify-hostname-for-hbase-master by cc-by-sa and MIT license