복붙노트

[HADOOP] Hbase managed zookeeper가 갑자기 zookeeper quorum 대신 localhost에 연결하려고했습니다.

HADOOP

Hbase managed zookeeper가 갑자기 zookeeper quorum 대신 localhost에 연결하려고했습니다.

대규모 문제에 대해 테이블 ​​매퍼 (table mappers)와 감속기 (reducers)를 사용하여 테스트를 진행했습니다. 특정 시점 이후 작업이 80 % 완료되었을 때 내 감속기가 실패하기 시작했습니다. syslogs를 볼 때 내가 알 수있는 것에서는 내 동물원 중 한 명이 쿼럼의 다른 동물원 주인과는 반대로 로컬 호스트에 연결하려고 시도하고 있다는 것입니다

이상하게도 맵핑이 진행 중일 때 다른 노드에 연결하는 것만으로도 문제가있는 것으로 보입니다. 여기에 무슨 일이 벌어지고 있는지 알아내는 것과 관련이있는 syslog의 선택된 부분이 있습니다.

2014-06-27 09:44:01,599 INFO [main] org.apache.zookeeper.ZooKeeper: Initiating client connection, connectString=hdev02:5181,hdev01:5181,hdev03:5181 sessionTimeout=10000 watcher=hconnection-0x4aee260b, quorum=hdev02:5181,hdev01:5181,hdev03:5181, baseZNode=/hbase
2014-06-27 09:44:01,612 INFO [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Process identifier=hconnection-0x4aee260b connecting to ZooKeeper ensemble=hdev02:5181,hdev01:5181,hdev03:5181
2014-06-27 09:44:01,614 INFO [main-SendThread(hdev02:5181)] org.apache.zookeeper.ClientCnxn: Opening socket connection to server hdev02/172.17.43.36:5181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
2014-06-27 09:44:01,615 INFO [main-SendThread(hdev02:5181)] org.apache.zookeeper.ClientCnxn: Socket connection established to hdev02/172.17.43.36:5181, initiating session
2014-06-27 09:44:01,617 INFO [main-SendThread(hdev02:5181)] org.apache.zookeeper.ClientCnxn: Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
2014-06-27 09:44:01,723 WARN [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper, quorum=hdev02:5181,hdev01:5181,hdev03:5181, exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
2014-06-27 09:44:01,723 INFO [main] org.apache.hadoop.hbase.util.RetryCounter: Sleeping 
***
org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 1 on-disk map-outputs
2014-06-27 09:55:12,012 INFO [main] org.apache.hadoop.mapred.Merger: Merging 1 sorted segments
2014-06-27 09:55:12,013 INFO [main] org.apache.hadoop.mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 33206049 bytes
2014-06-27 09:55:12,208 INFO [main] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: Merged 1 segments, 33206079 bytes to disk to satisfy reduce memory limit
2014-06-27 09:55:12,209 INFO [main] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: Merging 2 files, 265119413 bytes from disk
2014-06-27 09:55:12,209 INFO [main] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
2014-06-27 09:55:12,210 INFO [main] org.apache.hadoop.mapred.Merger: Merging 2 sorted segments
2014-06-27 09:55:12,212 INFO [main] org.apache.hadoop.mapred.Merger: Down to the last merge-pass, with 2 segments left of total size: 265119345 bytes
2014-06-27 09:55:12,279 INFO [main] org.apache.zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=90000 watcher=hconnection-0x65afdbbb, quorum=localhost:2181, baseZNode=/hbase
2014-06-27 09:55:12,281 INFO [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Process identifier=hconnection-0x65afdbbb connecting to ZooKeeper ensemble=localhost:2181
2014-06-27 09:55:12,282 INFO [main-SendThread(localhost.localdomain:2181)] org.apache.zookeeper.ClientCnxn: Opening socket connection to server localhost.localdomain/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
2014-06-27 09:55:12,283 WARN [main-SendThread(localhost.localdomain:2181)] org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
2014-06-27 09:55:12,384 WARN [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper, quorum=localhost:2181, exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
2014-06-27 09:55:12,384 INFO [main] org.apache.hadoop.hbase.util.RetryCounter: Sleeping 1000ms before retry #0...
2014-06-27 09:55:13,385 INFO [main-SendThread(localhost.localdomain:2181)] org.apache.zookeeper.ClientCnxn: Opening socket connection to server localhost.localdomain/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
2014-06-27 09:55:13,385 WARN [main-SendThread(localhost.localdomain:2181)] org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing 
***
org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper, quorum=localhost:2181, exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
2014-06-27 09:55:13,486 ERROR [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 1 attempts
2014-06-27 09:55:13,486 WARN [main] org.apache.hadoop.hbase.zookeeper.ZKUtil: hconnection-0x65afdbbb, quorum=localhost:2181, baseZNode=/hbase Unable to set watcher on znode (/hbase/hbaseid)
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

나는 정확하게 hbase-site.xml의 관련 부분이 올바르게 구성되었는지 확신합니다.

<property>
  <name>hbase.zookeeper.property.clientPort</name>
  <value>5181</value>
  <description>Property from ZooKeeper's config zoo.cfg.
    The port at which the clients will connect.
    </description>
</property>
<property>
  <name>zookeeper.session.timeout</name>
  <value>10000</value>
  <description></description>
</property>
<property>
  <name>hbase.client.retries.number</name>
  <value>10</value>
  <description></description>
</property>
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>hdev01,hdev02,hdev03</value>
  <description></description>
</property>

지금까지 내가 hdev03 말할 수있는이 모든 문제가있는 유일한 서버입니다. 모든 관련 포트를 넷 스테이션으로 연결해도 이상한 점은 보이지 않습니다.

해결법

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

    1.Spark on Yarn을 통해 HBase를 실행할 때도 동일한 문제가 발생했습니다. 갑자기 쿼럼 대신 로컬 호스트에 연결하려고 할 때까지는 아무 문제가 없었습니다. HBase 호출로 문제가 해결되기 전에 포트 및 쿼럼을 프로그래밍 방식으로 설정

    Spark on Yarn을 통해 HBase를 실행할 때도 동일한 문제가 발생했습니다. 갑자기 쿼럼 대신 로컬 호스트에 연결하려고 할 때까지는 아무 문제가 없었습니다. HBase 호출로 문제가 해결되기 전에 포트 및 쿼럼을 프로그래밍 방식으로 설정

    conf.set("hbase.zookeeper.quorum","my.server")
    conf.set("hbase.zookeeper.property.clientPort","5181")
    

    나는 MapR을 사용하고 있으며 "비정상적인"(5181) 사육자 포트가있다.

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

    2.주어진 정보로 무슨 일이 일어나고 있는지 말하기는 어렵습니다. Hadoop Stack (특히 HBase)이 DNS 나 호스트 파일의 잘못된 구성에 조금이라도 적대적인 것으로 나타났습니다.

    주어진 정보로 무슨 일이 일어나고 있는지 말하기는 어렵습니다. Hadoop Stack (특히 HBase)이 DNS 나 호스트 파일의 잘못된 구성에 조금이라도 적대적인 것으로 나타났습니다.

    hbase-site.xml의 정족수가 좋아 보이기 때문에 네트워크 / 호스트 이름 확인 관련 구성을 확인하기 시작합니다.

    이것들은 내가 이런 종류의 문제로 보게 될 방향의 몇 가지 예일뿐입니다. 희망이 도움이됩니다!

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

    3.spark-submit 명령에 '--driver-class-path ~ / hbase-1.1.2 / conf'를 추가하면 127.0.0.1 대신 구성된 사육사 서버를 찾을 수 있습니다.

    spark-submit 명령에 '--driver-class-path ~ / hbase-1.1.2 / conf'를 추가하면 127.0.0.1 대신 구성된 사육사 서버를 찾을 수 있습니다.

  4. from https://stackoverflow.com/questions/24456484/hbase-managed-zookeeper-suddenly-trying-to-connect-to-localhost-instead-of-zooke by cc-by-sa and MIT license