HIVE/HDFS для хранения данных датчиков в реальном времени в больших масштабах?

Я оцениваю системы сбора данных датчиков со следующими требованиями:

  1. 1 миллион конечных точек отправляют 100 байт данных каждую минуту (в виде временных рядов).
  2. В основном миллионы мелких операций записи в хранилище.

    This data is write-once, so basically it never gets updated.
    
  3. Требования к доступу
    а. Полные данные для пользователя должны быть доступны периодически (реже)
    б. Частичные данные для пользователя должны быть доступны периодически (чаще). Например, мне нужны данные датчика, собранные за последний час/день/неделю/месяц для анализа/отчетности.

Начал рассматривать Hive/HDFS как вариант. Может ли кто-нибудь прокомментировать применимость Hive в таком случае использования? Я обеспокоен тем, что, хотя потребности в распределенном хранилище будут работать, он кажется более подходящим для приложений хранения данных, чем для сбора/хранения данных в реальном времени.

Имеет ли HBase/Cassandra больше смысла в этом сценарии?


person user393144    schedule 16.12.2011    source источник
comment
Не могли бы вы уточнить, как ваши конечные точки соответствуют вашим пользователям (если вообще)? Сколько пользователей вы ожидаете и сколько данных является полными данными для пользователя?   -  person DNA    schedule 17.12.2011
comment
Конечная точка грубо транслируется пользователю. А данных, собранных для пользователя со скоростью 100 байт/мин за год, будет около 50 МБ. Для 1 млн пользователей это около 50 ТБ данных.   -  person user393144    schedule 17.12.2011


Ответы (2)


Я думаю, что HBase может быть хорошим вариантом для вас. На самом деле в HBase уже есть реализация с открытым исходным кодом, которая решает аналогичную проблему, которую вы, возможно, захотите использовать. Взгляните на openTSB, который является реализацией с открытым исходным кодом для решения подобных проблем. Вот небольшой отрывок из их рекламного ролика:

OpenTSDB — это распределенная масштабируемая база данных временных рядов (TSDB), написанная поверх HBase. OpenTSDB был написан для удовлетворения общей потребности: хранить, индексировать и обслуживать метрики, собранные из компьютерных систем (сетевое оборудование, операционные системы, приложения) в больших масштабах, а также сделать эти данные легко доступными и отображаемыми в виде графиков. Благодаря масштабируемости HBase OpenTSDB позволяет собирать многие тысячи метрик с тысяч хостов и приложений с высокой скоростью (каждые несколько секунд). OpenTSDB никогда не будет удалять или уменьшать данные и может легко хранить миллиарды точек данных. На самом деле, StumbleUpon использует его для отслеживания сотен тысяч временных рядов и собирает более 600 миллионов точек данных в день в своем основном производственном центре обработки данных.

person Arnon Rotem-Gal-Oz    schedule 17.12.2011

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

Запись в Cassandra чрезвычайно дешева, поэтому даже кластер среднего размера может легко обрабатывать миллион операций записи в минуту.

На оба ваших запроса на чтение можно ответить очень эффективно. Для второго типа запроса, когда вы считываете данные за отрезок времени для одного датчика, вы в конечном итоге читаете непрерывный отрезок из одной строки; это должно занять около 10 мс для полностью холодного чтения. Для первого типа запроса вы просто запускаете несколько запросов для каждого датчика параллельно. Предполагая, что вы храните базовую карту пользователей с идентификаторами датчиков, вы будете искать все идентификаторы датчиков для пользователя с помощью одного запроса, а затем ваш второй запрос будет извлекать данные для всех этих датчиков (хотя вы можете разбить этот запрос, если большое количество датчиков).

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

person Tyler Hobbs    schedule 17.12.2011
comment
Интересно, что KairosDB — это альтернатива OpenTSDB, которая использует Cassandra в качестве хранилища данных. - person FrEaKmAn; 02.11.2014