Java >> Programma Java >  >> Java

Il client Hbase non può connettersi al server Hbase remoto

Questo problema si verifica a causa del file hosts del tuo server HBase.
Devi solo modificare il file /etc/hosts del tuo server HBase.
Rimuovere la voce localhost da quel file e inserire la voce localhost davanti all'IP del server HBase.

Ad esempio, il /etc/hosts del tuo server HBase i file sembrano così:

127.0.0.1 localhost
192.166.66.66 xyz.hbase.com hbase

Devi cambiarlo in questo modo rimuovendo localhost:

# 127.0.0.1 localhost # line commented out
192.166.66.66 xyz.hbase.com hbase localhost # note: localhost added here

Questo perché quando la macchina remota chiede alla macchina del server hbase dove è in esecuzione HMaster, dice che è in esecuzione su localhost.
Quindi, se la voce è 127.0.0.1, il server HBase restituisce questo indirizzo e la macchina remota inizia a trovare HMaster sulla propria macchina (localmente).
Quando lo cambiamo con l'IP del server HBase, tutto funziona bene :)


Sono d'accordo.. L'HBase è molto sensibile alle configurazioni di /etc/hosts.. Ho dovuto impostare correttamente la proprietà zeekeeper binding in hbase-site.xml affinché il codice Java sopra menzionato funzionasse... Ad esempio:I dovuto impostarlo come segue:

{property}
  {name}hbase.zookeeper.quorum{/name}
  {value}www.remoterg12.net{/value}      {!-- this is the externally accessible domain --}
{/property}
{property}
  {name}hbase.zookeeper.property.clientPort{/name}
  {value}2181{/value}              {!-- everything needs to be externally accessible --}
{/property}
{property}
  {name}hbase.master.info.port{/name}    {!--   http://www.remoterg12.net:60010/ --}
  {value}60010{/value}
{/property}
{property}
  {name}hbase.master.info.bindAddress{/name}
  {value}www.remoterg12.net{/value}      {!-- Use this to access the GUI console, --}
{/property}

La GUI remota ti fornirà un'immagine chiara dei domini di collegamento.. Ad esempio, la proprietà [HBase Master] nella "console Web GUI" dovrebbe essere qualcosa del genere:www.remoterg12.net:60010 (NON dovrebbe essere localhost :60010 )... E SÌ!!, ho dovuto giocare con gli /etc/hosts proprio perché non volevo rovinare le configurazioni di Apache esistenti :-)


Etichetta Java