HIVE / HDFS для массового хранения данных датчиков в реальном времени - PullRequest
3 голосов
/ 16 декабря 2011

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 17 декабря 2011

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

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

4 голосов
/ 17 декабря 2011

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

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

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

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

...