команда hbase против команды hadoop

#hadoop #hbase

#hadoop #hbase

Вопрос:

Небольшое описание hbase в книге O’Reilly Elephant показывает использование оболочки командной строки ‘hbase’ для выполнения задания по сокращению карты с использованием hbase.

Однако наш код имеет длинный путь к классу, поэтому мы хотим использовать функцию каталога библиотеки hadoop, включенную JobConf.setClassByJar и командой ‘hadoop’. Возможно, мы что-то напутали, но нам показалось, что с командой hbase это не сработало.

Могут ли обычные задания hadoop вызывать hbase API? Что делает командная строка hbase?

(hadoop 0.20.2, соответствующая hbase)

Ответ №1:

Вы можете использовать HBase API в задании Hadoop.

Вот несколько фрагментов кода для использования HBase API в задании.

Импортирует

 import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
  

Это внутри @Override функции в моем коде

 private HTable hTable = null;
Configuration hConfig = HBaseConfiguration.create();
hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_QUORUM, zkQuorum);
hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_CLIENTPORT, zkclientPort);
hTable = new HTable(hConfig, hbCube);
...
hTable.put(subPuts);
  

Очевидно, что это не полные фрагменты, но при правильном imports и предоставлении правильных значений ваша работа (у меня был только mapper) может получить доступ к HBase API.

Надеюсь, это поможет.

Ответ №2:

Да, это сработает. Как мы это делаем, упаковываем все (включая HBase jar) в fat jar и запускаем команду Hadoop.

Утилита командной строки hbase может использоваться для:

  1. Доступ к таблицам — это позволяет вам сканировать ваши таблицы, запускать сжатия, включать / отключать таблицы и т.д.Это похоже на любую другую оболочку базы данных, но более мощную, потому что, как в моем следующем пункте

  2. Вы можете запускать скрипты jruby с помощью команды:

     hbase org.jruby.Main <your_script>
      
  3. Вы даже можете запускать свои Java-материалы, находясь в командной оболочке. Это может быть полезно для распечатки свойств кластера и т.д.
    примеры здесь:
    http://wiki.apache.org/hadoop/Hbase/Shell