Итак, я пытаюсь запросить мой кластер hbase на Amazon ec2, используя пользовательский jar i, запускаемый как шаг MapReduce. Im мой баночку (внутри функции карты) Я называю Hbase, как так:Проблема с использованием hbase из java на Amazon EMR
public void map(Text key, BytesWritable value, Context contex) throws IOException, InterruptedException {
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, "tablename");
...
проблема заключается в том, что, когда он попадает в эту HTable линию и пытается подключиться к HBase, шаг терпит неудачу, и я получаю следующие ошибки:
2014-02-28 18:00:49,936 INFO [main] org.apache.zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection
2014-02-28 18:00:49,974 INFO [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: The identifier of this process is [email protected]
2014-02-28 18:00:49,998 INFO [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2014-02-28 18:00:50,005 WARN [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
...
2014-02-28 18:01:05,542 WARN [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
2014-02-28 18:01:05,542 ERROR [main] org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
2014-02-28 18:01:05,542 WARN [main] org.apache.hadoop.hbase.zookeeper.ZKUtil: hconnection Unable to set watcher on znode (/hbase/hbaseid)
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
... and on and on
Я могу использовать оболочку hbase просто отлично и может запрашивать данные и все, что находится в оболочке. Я понятия не имею, с чего начать, и я уже много часов искал, не повезло. Большинство проблем, подобных этому в Интернете, не говорят об особых исправлениях Amazon. Я подумал, что zookeeper и hbase должны автоматически подключаться к ботстрапу amazon.
Я использую hbase 0.94.17 jar и amazon работает hbase 0.94.7 im довольно уверен, что это не проблема, я предполагаю, что он больше не меняет код Java правильно. Если кто-то может помочь с этим, то он будет очень благодарен. Спасибо
поэтому, установив кворум zookeeper в код (conf.set («hbase.zookeeper.quorum», «»);) Мне удалось заставить его работать, но я не могу жестко кодировать мои главные узлы ip в мою java каждый раз. Кажется, что если я этого не делаю, кворум вытаскивается из некоторой конфигурации как «localhost» вместо кворума главного узла, что и установлено в моих конфигурациях hadoop (hdfs-сайт, mapred-site и т. Д.). Где локальный хост вытаскивается из? –