У меня есть поток событий (мы могли бы также назвать их "сообщениями" или даже просто "данными"), поступающий от брокера событий с ретенцией на основе времени. Посредником событий может быть Kafka или Amazon Kinesis или Microsoft Event Hubs< /a>, хотя допустим, что это Кафка.
Моя цель — взять этот поток событий и поместить его в холодное хранилище; то есть хранить данные для будущего анализа через Hadoop/Spark. Это означает, что я хотел бы взять этот «болтливый» поток событий и преобразовать его в «короткие» файлы в HDFS. В облачной среде я бы, скорее всего, использовал S3 или Azure Storage вместо HDFS.
Я также хотел бы, чтобы мое решение было экономически эффективным; например, используя форматы сериализации, такие как Avro/ORC, чтобы снизить стоимость дискового пространства. Я также как минимум один раз гарантирую, что данное событие хранится в холодном хранилище (бонусные баллы за раз и только один раз).
Мои основные вопросы:
- Как люди решают эту проблему?
- Существуют ли компоненты, которые уже справляются с этим сценарием?
- Нужно ли мне самому разрабатывать решение?
- По крайней мере, есть ли какие-то рекомендуемые шаблоны?
2 ответа
Что ж, мы используем kafka с camus для извлечения данных из kafka в HDFS. Camus поддерживает сериализацию avro. Подробнее о камю и авро можно узнать здесь.
Другой вариант — использование Flume с источником Kafka (или каналом Kafka) и приемником HDFS. Приемник HDFS можно настроить на прокрутку в определенных размерах или в определенное время.
Похожие вопросы
Новые вопросы
hadoop
Hadoop - это проект с открытым исходным кодом Apache, который предоставляет программное обеспечение для надежных и масштабируемых распределенных вычислений. Ядро состоит из распределенной файловой системы (HDFS) и менеджера ресурсов (YARN). Различные другие проекты с открытым исходным кодом, такие как Apache Hive, используют Apache Hadoop в качестве слоя персистентности.