HBase распределенный сканер - PullRequest
3 голосов
/ 13 июля 2009

В разделе «Пример использования API» на странице «Начало работы» в документации по HBase приведен пример использования сканера:

Сканер сканер = table.getScanner (новый String [] { "myColumnFamily: columnQualifier1"});

RowResult rowResult = scanner.next();
 while (rowResult != null) {
  //...
  rowResult = scanner.next(); 

}

Как я понимаю, этот код будет выполняться на одной машине (имя узла), и все работы по сканированию и фильтрации не будут распространяться. Будет распределено только хранение и загрузка данных. Как я могу использовать распределенный сканер, который будет работать отдельно на каждом узле.

Какова лучшая практика быстрой фильтрации данных? Спасибо.

Ответы [ 2 ]

1 голос
/ 28 февраля 2013

Работа сканера заключается в запуске первого региона, сканировании строк и переходе от одного региона к другому. Уловка, которую вы можете сделать, - это создать несколько сканеров, каждый из которых начинается и заканчивается на ключах начала и конца одного региона, а затем создавать несколько потоков, которые читают из всех параллельно и записывают в одну очередь вывода. Теперь ваш процесс должен быть достаточно быстрым, чтобы считывать, обрабатывать и удалять элементы из этой очереди, в противном случае вы можете OOM-клиент, если слишком много строк поступает слишком быстро. Вам также нужно будет использовать параллельные структуры, чтобы избежать задержек синхронизации.

Вы можете получить информацию о регионе, используя getRegionLocations на HTable: http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#getRegionLocations()

Также имейте в виду, что сканеры могут отключаться по таймауту, если вы не читаете их достаточно быстро, поэтому блокирование потоков потребителей до тех пор, пока ваша очередь не станет пустой, иногда может оказаться невозможным.

1 голос
/ 20 декабря 2009

Во всяком случае, это старый: сканер представляет собой API-интерфейс, похожий на курсор, для получения вычисленных результатов. Для вычислений вы используете задания MapReduce (hbase.mapred).

...