2017-04-20 4 views
0

Ich starte hbase innerhalb eines Docker-Containers und möchte, dass der Client-Code eine Verbindung zum hbase-RPC-Server-Port herstellen kann. Problem ist: es ist immer anders (zufällig ausgewählt aus kurzlebigen Ports).Wie RPC-Server-Port für HBase angeben?

Blick durch hbase Code (https://github.com/apache/hbase/blob/9facfa550f1e7386be3a04d84f7e8013f5002965/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java, BindAddress von der Linie 1078) Ich sehe, dass ich Port außer Kraft setzen kann "hbase.regionserver.port" oder "hbase.master.port" -Einstellung.

Ich habe versucht, diese in hbase-conf.xml aber ohne Wirkung Einstellung - Port noch zufällig ist, als ob diese Eigenschaften

auf 0 gelöst wurden Wie kann ich das ändern?

+0

Standardmäßig sind sie '16000' und' 16020' für Master- und Regionserver resp. Was lässt Sie denken, dass sie zufällig ausgewählt werden? – franklinsijo

+0

hbase log: 'ipc.RpcServer: Master/localhost/127.0.0.1: 0: gestartet 10 Lesegerät (e) lauscht an Port = 40897' In diesem Fall ist es Port' 40897', aber es ist jedes Mal anders. Es könnte von einigen anderen Eigenschaften gesteuert werden, aber aus dem Quellcode, den ich angegeben habe, sollte es aussehen ** hbase.regionserver.port **, oder? – Art

Antwort

0

Die Lösung gefunden. Standardmäßig startet Hbase in einem eigenständigen Modus und der Port wird zufällig ausgewählt. So nach dem Lesen doc ich die hbase-site.xml wie folgt aussehen bearbeitet:

<configuration> 
<property> 
    <name>hbase.cluster.distributed</name> 
    <value>true</value> 
</property> 
<property> 
    <name>hbase.regionserver.ipc.address</name> 
    <value>0.0.0.0</value> 
</property> 
<property> 
    <name>hbase.master.ipc.address</name> 
    <value>0.0.0.0</value> 
</property> 

Beachten Sie, dass ich mache es in einem verteilten Modus (pseudo-verteilt in meinem Fall laufen) und setzen Sie ipc listen Adressen auf 0.0.0.0 für Master und Regionsserver (sonst können Sie immer noch keine Verbindung von außerhalb des Andockcontainers herstellen). Nach diesen Änderungen wurden die Ports stabil und alles ist in Ordnung.

Zusätzlicher Hinweis: nach dem Umschalten auf einen verteilten Modus musste ich JAVA_HOME speziell in hbase-env.sh setzen. Dies kann jedoch in der Dokumentation gefunden werden.