Как лучше всего хранить входящие потоковые данные?

Что лучше выбрать для долговременного хранения (много операций записи, мало операций чтения) данных, обрабатываемых с помощью Spark Streaming: Parquet, HBase или Cassandra? Или что-то другое? Каковы компромиссы?


person DruckerBg    schedule 12.11.2016    source источник
comment
Я бы предложил cassandra из-за всех возможностей базы данных, которые у нее есть, и среди всех баз данных у нее самая быстрая запись.   -  person Shiv4nsh    schedule 12.11.2016
comment
Пожалуйста, проверьте мой ответ. Надеюсь, это поможет!   -  person Ram Ghadiyaram    schedule 14.11.2016


Ответы (1)


По моему опыту, мы использовали Hbase в качестве хранилища данных для искровых потоковых данных (у нас также есть тот же сценарий, когда много операций записи и мало операций чтения), поскольку мы используем Hadoop, hbase имеет встроенную интеграцию с Hadoop, и все прошло хорошо.

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

  • HBase хорошо подходит для сканирования на основе диапазона. Касандра известна своей доступностью и многим другим...

  • Тем не менее, я также могу наблюдать одну общую тенденцию во многих проектах, они просто хранят необработанные данные в hdfs (паркет + avro) в разделенной структуре через потоковую передачу искры с помощью spark dataframe(SaveMode.Append) и обрабатывают необработанные данные с помощью Spark

Пример секционированной структуры в hdfs: completion ofbusinessdate/environment/businesssubtype/message type и т. д.... в этом случае нет необходимости обращаться к Hbase или любому другому хранилищу данных.

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

Вот нечто, называемое теорией CAP, на основе которой можно принять решение. введите здесь описание изображения

  1. Непротиворечивость (все узлы видят одни и те же данные одновременно).

  2. Доступность (каждый запрос получает ответ о том, был ли он успешным или нет).

  3. Устойчивость к разделам (система продолжает работать, несмотря на произвольное разделение из-за сетевых сбоев)

Casandra поддерживает AP.

Hbase поддерживает СР.

Посмотрите подробный анализ, представленный здесь

person Ram Ghadiyaram    schedule 14.11.2016
comment
Был ли мой ответ полезен? Пожалуйста, не стесняйтесь задавать вопросы. Спасибо! - person Ram Ghadiyaram; 06.12.2016
comment
привет было полезно? Если вы в порядке, примите ответ как владелец и голосовать - person Ram Ghadiyaram; 23.08.2019