Формат данных временных рядов Hbase: использование составного ключа или использование контроля версий с отметкой времени - PullRequest
0 голосов
/ 03 февраля 2019

Мне нравится хранить журнал счетчиков байтов для 10 миллионов сетевых устройств.Каждое устройство сообщает значение счетчика байтов каждые 15 минут (96 выборок в день), а каждая выборка данных имеет 500 столбцов.Каждое устройство идентифицируется его серийным номером устройства dev_sn.

В конце дня я обработаю данные (вычислю общий байт на устройство) для всех устройств и сохраню их в формате данных HIVE.

Исходные данные будут такими: (например, Device sn1, sn2 и sn3 значения отчета в t1, t2 и t3)

Способ 1: используйте dev_sn и timestamp в качестве составного row-key.enter image description here

Метод 2: Используйте dev_sn в качестве row-key и сохраняйте все данные как обновление версии существующих значений.

enter image description here

Чтобы найти общее количество байтов,

  • Метод 1: Поиск по sn1 составного ключа, сортировка по времени и обработка данных
  • Способ 2: поиск по sn1, извлечение всех версий и обработка данных

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

1 Ответ

0 голосов
/ 04 февраля 2019

Это субъективно, но я всегда выбираю составной ключ строки вместо управления версиями по следующим причинам:

  1. Вы можете хранить неограниченное количество «версий» для каждого устройства.При управлении версиями это свойство ограничено (как установлено в конфигурации).
  2. Гораздо проще получать записи из определенных временных отметок / временных диапазонов с помощью команды HBase.Сканирования с префиксом работать намного проще, чем API версии.
  3. Нет причин для уменьшения количества ключей строки - HBase специально разработан для хранения огромного количества ключей строки.
  4. Что если вам нужно удалить данные за прошлый вторник?С версионированием это сложно, а с составными ключами - это маленький кусочек кода.

Кроме того, не забудьте предварительно разделить ваши региональные серверы так, чтобы значения dev_sn распределялись равномерно.

...