Ошибка при попытке доступа к HBase через Java - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь записать данные в HBase через Java. Вот код, который я использую:

import java.io.IOException;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;


public class MyLittleHBaseClient 
{
    public static void main(String[] args) throws IOException 
    {
        HBaseConfiguration config = new HBaseConfiguration();
        HTable table = new HTable(config, "myLittleHBaseTable");
        Put p = new Put(Bytes.toBytes("myLittleRow"));
        p.add(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"),
        Bytes.toBytes("Some Value"));
        table.put(p);
    }
}

Я попытался поместить conf.set("hbase.master","localhost:51310"), где 51310 - это место, где работает мой главный сервер Hbase. Мои серверы регионарасположены по адресу "localhost:13184". Этот код выше очень похож на то, что я нашел в интернете, единственное, что HBaseConfiguration.create() говорит " Нет такого метода ".Обнаружена ошибка: org.apache.hadoop.hbase.client.NoServerForRegionException: истекло время ожидания при попытке найти корневой регион.Моя IDE - oracle Jdeveloper. Я добавил все jar-файлы, а jps показывает, что все серверы работают нормально. Я не знаю, что я делаю неправильно. Все примеры в Интернете показывают HBaseConfiguration.create() в их кодах. Я использовал Hbase-0.90.4

Ответы [ 2 ]

0 голосов
/ 30 октября 2012

При подключении к удаленной системе вы можете использовать этот код для конфигурации <pre> config.set("hbase.zookeeper.quorum", args[0]);// ip of hbase server(remote) config.set("hbase.zookeeper.property.clientPort", args[1]);// portno : 2181 default Отредактируйте файл conf / regionservers в каталоге hbase, чтобы добавить в него сервер Hbase (Remote) (я сделал это, и редактировать не нужно)etc / hosts для получения сервера hbase в моей офисной сети), т.е. после редактирования regionservers будет выглядеть как

localhost
ip-адрес удаленного сервера hbase

например,
localhost
10,132,258,366

0 голосов
/ 11 июня 2012

Несколько изменений в вашем коде должны запустить его.

Изменить следующее:

 HBaseConfiguration config = new HBaseConfiguration();

до:

Configuration config = HBaseConfiguration.create();

Если вы подключаетесь к localhost, просто установите значение для hbase.master, как вы упомянули выше. Если вы подключаетесь к удаленному хранилищу HBase, установите следующее:

conf.set("hbase.zookeeper.quorum","<host name>")

и это

conf.set("hbase.zookeeper.property.clientPort","<client port used by zookeeper>")

и, наконец, добавьте

conf.set("hbase.master","<host name>:<port>")

Для первого шага задайте подходящее имя хоста в файле hosts (/ etc / hosts в linux) и установите для него IP-адрес вашего компьютера. Теперь укажите это имя хоста в качестве значения для кворума zookeeper. Этот шаг важен, потому что HBase распознает только имена хостов, а не IP-адреса .

Для второго шага, выясните клиентский порт, используемый zookeeper, проверив файлы конфигурации в / hbase / conf directory

...