2012-01-25 5 views
3

HBase & HDFS가 가상 분산 모드 (Mac OSX)에서 설정 및 작동합니다. 또한 간단한 Java 응용 프로그램이 있습니다. 로컬에서 사용할 때 작동합니다. 원격으로 작동시키고 싶습니다. 서버가 라우터 뒤에 숨겨져 필요한 모든 포트가 전달되었습니다. 내가 원격으로 연결하려고하면hbase 가상 분산 원격 연결

내가 얻을 :

... 
12/01/25 23:21:15 INFO zookeeper.ClientCnxn: Session establishment complete on server 
remote.host.com/remoteip:53058, sessionid = 0x13516f179a30005, negotiated timeout = 40000 
12/01/25 23:21:36 INFO client.HConnectionManager$HConnectionImplementation: getMaster attempt 
0 of 10 failed; retrying after sleep of 1000 
java.net.SocketTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=192.168.52.53/192.168.52.53:58023] 

사육사가 연결을 의미하지만 클라이언트에게 잘못된 주소를 제공 나에게 어떤 : 1) 때문에를 로컬 2) 때문에 잘못된 포트에

HDFS core-site.xml (fs.default.name) 및 hbase-site.xml (hbase.rootdir)에 원격 주소를 설정하여 문제 # 1을 수정했습니다. HDFS가 원격 주소에 바인드하지 않습니다. HDFS가 로컬에 바인드되어 작동하면 hbase-site에 원격 IP 주소가 주어지면 hbase가 연결되지 않습니다 (IP 및 포트 전달이 확실히 작동하고 텔넷을 통해 확인 됨). /etc/hosts와 함께 놀았는지 - ping -c 1 $(hostname)이 로컬 또는 원격 주소를 반환하는지 여부와 관계없이 HDFS 모두 & HBase는 로컬에 바인드 될 때만 시작됩니다.

hbase-site.xml에서 hbase.master.port를 설정하여 문제 2를 해결했습니다. 설정 한 내용과 상관없이 HBase 마스터 서버가 임의의 포트에 바인딩됩니다.

나는이 권한을 얻으려고 많은 시간을 낭비했으며 가능한 모든 소스를 확인하고 가능한 모든 조합을 시도했습니다.

+0

올바르게 토폴로지를 이해할 수 있도록 잘못 수정하십시오. 워크 스테이션에 라우터를 통해 원격 네트워크의 HBase 설치에 연결하려는 Java 응용 프로그램이 있습니다. –

+0

수정. 내가 여기서 뭔가를 놓치고 있니? 나는 최근 Clouderas를 사용하고 있습니다. –

답변

1

이 상황에서 일반적으로 발생하는 문제는 NAT 방화벽 외부에서 단일 IP 주소를 통해 HBase에 액세스 할 수 있다는 것입니다. 이것이 가능할 수도 있지만 설정하기가 쉽지 않고 거의 지원되지 않습니다.

클라이언트가 HBase에 연결하면 가장 먼저 발생하는 것은 ZooKeeper에 연결하여 찾고있는 테이블을 호스팅하는 머신 (또는 관리 작업을 수행하고있는 경우 어떤 머신이 현재 마스터인지 확인합니다. 여기에있는 것처럼 보입니다.)

그런 다음 클라이언트가 원격 시스템에 직접 연결합니다. 원격 컴퓨터 (특히 HBase RegionServers)가 NAT 라우터 뒤에 있고 내부 IP를 사용하여 ZooKeeper에보고하면 라우터 외부의 시스템이 방화벽 내부에있는 RegionServer의 IP를 확인할 방법이 없습니다.

NAT를 통해 HBase를 작동시키는 유일한 방법은 프록시를 통해 모든 외부 요청을 보내는 것입니다. Thrift와 REST의 두 가지 옵션이 있습니다. 프록시에 대한 자세한 내용은 다음과 같습니다. http://ofps.oreilly.com/titles/9781449396107/clients.html

덧붙여 말하자면 모든 클라이언트 시스템은 RegionServers와 직접 통신 할 수 있어야하므로 HBase 프록시 서버에서 병목 현상이 발생하지 않습니다.

+1

도움 주셔서 감사합니다. 내 유스 케이스가 독창적인데, 그 이유는 그러한 기능이 필요하기 때문이다. REST를 진행합니다. –

+0

같은 문제가 있습니다. 해결할 단계를 알려주십시오. –