Группировка по HBase - PullRequest
       5

Группировка по HBase

8 голосов
/ 03 февраля 2012

Я почти ничего не знаю о HBase. Извините за основные вопросы.

Представьте, что у меня есть таблица из 100 миллиардов строк с 10 int, одним datetime и одним строковым столбцом.

  1. Позволяет ли HBase запрашивать эту таблицу и группировать результаты по ключу (даже по составному ключу)?
  2. Если это так, нужно ли запускать карту / сокращать работу до нее?
  3. Как вы кормите это запросом?
  4. Может ли HBase вообще выполнять запросы к таблице в режиме реального времени?

Ответы [ 3 ]

13 голосов
/ 03 февраля 2012

Агрегирование данных в HBase пересекается с необходимостью «аналитики в реальном времени».Хотя HBase не предназначен для этого типа функций, он очень необходим.Таким образом, число способов сделать это будет / будет разработано.
1): зарегистрировать таблицу HBase как внешнюю таблицу в Hive и выполнить агрегирование.Доступ к данным будет осуществляться через HBase API, что не так эффективно. Настройка Hive с помощью Hbase Это обсуждение того, как это можно сделать.Это самый мощный способ группировки данных HBase.Это подразумевает выполнение заданий MR, но HHive, а не HBase.
2) Вы можете написать свою работу MR, работая с данными HBase, сидя в HFiles в HDFS.Это будет наиболее эффективный способ, но не простой, и данные, которые вы обработали, будут несколько устаревшими.Это наиболее эффективно, поскольку данные не будут передаваться через HBase API - вместо этого они будут доступны прямо из HDFS в последовательном порядке.
3) Следующая версия HBase будет содержать сопроцессоры, которые смогут агрегировать в определенных регионах.Вы можете предположить, что они являются своего рода хранимыми процедурами в слове RDBMS.
4) В памяти в будущих выпусках HBase также планируется задание межрегионального MR, которое будет распараллелено в одном узле.Это позволит несколько более продвинутую аналитическую обработку, чем сопроцессоры.

5 голосов
/ 16 июня 2012

БЫСТРО СЛУЧАЙНЫЕ ЧТЕНИЯ = ПОДГОТОВЛЕННЫЕ данные, сидящие в HBase! Используйте Hbase для того, что это ...

1. Место для хранения большого количества данных.
2. Место, из которого вы можете делать супер быстрое чтение.
3. Место, где SQL не принесет никакой пользы (используйте Java).

Несмотря на то, что вы можете читать данные из HBase и выполнять все виды агрегатов прямо в структурах данных Java перед возвратом агрегированного результата, лучше оставить вычисления в mapreduce. Судя по вашим вопросам, вы хотите, чтобы исходные данные для вычислений находились в HBase. Если это так, маршрут, который вы хотите выбрать, имеет HBase в качестве исходных данных для задания mapreduce. Сделайте вычисления на этом и верните агрегированные данные. Но опять же, зачем вам читать из Hbase для выполнения задания mapreduce? Просто оставьте данные в таблицах HDFS / Hive и запустите для них задания mapreduce THEN загрузите данные в таблицы Hbase «предварительно подготовленными», чтобы вы могли выполнять супербыстрые случайные чтения из них.

1 голос
/ 21 октября 2012

Получив предварительно агрегированные данные в HBase, вы можете использовать Crux http://github.com/sonalgoyal/crux для дальнейшего сверления, нарезки и нарезки данных HBase. Crux поддерживает составные и простые ключи с расширенными фильтрами и группировкой.

...