Comment se connecter à distance HBase en Java?
J'ai un standlone HBase serveur.
C'est mon hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///hbase_data</value>
</property>
</configuration>
Je suis en train d'écrire un programme Java pour manipuler les données dans la HBase.
Si je lance le programme sur la HBase serveur, il fonctionne très bien. Mais je ne sais pas comment config pour l'accès à distance.
Configuration config = HBaseConfiguration.create();
HTable table = new HTable(config, "test");
Scan s = new Scan();
J'ai essayé d'ajouter l'IP et le Port, il ne fonctionne pas:
config.set("hbase.master", "146.169.35.28:60000")
Quelqu'un peut me dire comment faire?
Merci!
- Avez-vous réussi à le faire fonctionner pour vous? la réponse ci-dessous ne fonctionne pas pour moi, voici le trace de la pile.
Vous devez vous connecter pour publier un commentaire.
Voici un morceau de code à partir d'un système que nous utilisons pour créer un HTable nous utiliser pour vous connecter à HBase
HTH
EDIT: Exemple de Valeurs:
hbase.master
est @Deprecated. Les Clients utilisent Zookeeper pour obtenir de l'hôte courant/port de leur HBase serveurs.Hadoop et HBase sont très sensibles à la DNS et
/etc/hosts
de configuration. Assurez-vous que votre nom d'hôte n'a pas de point de127.0.0.1
sinon il va commencer à de nombreux services à l'écoute sur localhost seulement. Essayez de ne pas utiliser les adresses IP de n'importe où dans les paramètres.Mon
/etc/hosts
:/etc/hbase/hbase-site.xml
doit avoir les paramètres deset distributed=false
(puisque vous êtes en utilisant ce à des fins de test):/etc/zookeeper/zoo.cfg
Liste de mes les processus Java:
192.168.2.3 cloudera-vm
et pas127.0.0.1 cloudera-vm
En un mot c'est ce que j'utilise:
Pour hBaseHost et zookeeperHost je passe tout simplement l'adresse ip d'un ordinateur en cluster qui a zookeeper installé. Bien sûr, vous pouvez parametize les numéros de port trop. Je ne suis pas 100% sûr que c'est la meilleure façon de vous assurer une connexion réussie, mais jusqu'à présent, il fonctionne sans aucun problème.
Autant que je sache, Si vous souhaitez vous connecter à une distance hbase serveur
la normale client java ne fonctionne pas,en ce qui nous vient de déclarer la configuration et essayez de vous connecter à la télécommande de hbase comme mentionné dans les précieuses réponses.
J'ai essayé ces trucs ci-dessus, mais n'a jamais réussi à elle.
Au lieu de cela j'ai utilisé les API d'Épargne pour la connexion à un serveur distant,
Cette lien est le meilleur exemple de l'utilisation de l'Épargne de l'API java client.Il a sûrement des œuvres.Je suis en utilisant le même.
Mais avant de l'utiliser passez soigneusement en revue le code et émettent ces objets dont vous n'avez pas besoin.
Je suis aussi en donnant l'exemple de code pour la même qui fonctionne avec succès.
Dans mon cas, après avoir joué beaucoup avec /etc/hosts, j'ai fini par trouver dans le fichier journal "hbase-bgi-master-servername.journal" la ligne suivante:
Assurez-vous toujours que le nom complet de l'hôte ("nom du serveur.locaux.lan" dans mon cas) renvoie l'adresse IP du serveur sur le client et côté serveur.