Вопрос по – Flume для переноса данных из MySQL в Hadoop

2

Пожалуйста, поделитесь своими мыслями.

Требование состоит в том, чтобы перенести данные из MySQL db в Hadoop / HBase для аналитических целей.

Данные должны быть перенесены в режиме реального времени или почти в реальном времени. Могу ли я поддержать это?

Какой может быть лучший подход.

Ваш Ответ

5   ответов
0

Я использую Flume для хранения данных как в HDSF, так и в MySQL. Для последнего я используюJDBC com.stratio.ingestion.sink.jdbc.JDBCsink, Но я не очень доволен этим исполнением. Так как вам нужно перенести данные из MySQL, я бы предложил использоватьSqoop, Другой вариант - использовать Flume для отправки данных как в MySQL, так и в HBase / Hadoop, поэтому вам не нужно копировать данные из MySQL в Hadoop /.

0

Вы можете использовать Hadoop Applier продукт MySQL, его можно найти здесьhttp://labs.mysql.com/

Он передает данные из MySQL в HDFS в режиме реального времени

0

Прямой ответ на ваш вопрос - да. Flume спроектирован как распределенная система транспортировки и агрегирования данных для структурированных данных событий / журналов. Если настроено «правильно» flume может выдвигать данные для постоянного приема в Hadoop. Это когда Flume настроен правильно для сбора данных из различных источников (в данном случае MySql), и я уверен, что если данные доступны из источника, приемник в Flume синхронизирует их с HDFS на уровне миллисекунд. Когда данные доступны в HDFS / HBASE, вы можете выполнять запросы к ним и обрабатывать их в зависимости от инфраструктуры.

Поэтому я бы сказал, что конфигурация Flume очень важна для передачи данных практически в реальном времени в HDFS, а остальное зависит от производительности вашего Map / Reduce кластера и от того, как пишутся запросы относительно обрабатываемых данных.

Я также нашел следующий ресурс для вас, чтобы понять, используя Flume и HDFS: http://assets.en.oreilly.com/1/event/61/Real-time%20Streaming%20Analysis%20for%20Hadoop%20and%20Flume%20Presentation.pdf

0

Действительно, flume больше используется для сбора данных журнала или других временных рядов. Едва слышно, что люди используют flume для импорта данных из db в hadoop.

Sqoop хорош для массового импорта из RDBMS в HDFS / Hive / HBase. Если он только один раз импортирует, это очень хорошо, он выполняет то, что обещает на бумаге. Но проблема возникает, когда вы хотите получать инкрементные обновления в реальном времени. Sqoop поддерживает два типа добавочных обновлений:

  1. Append, this one allows you to re-run the sqoop job, and every new job starts where the last old job ends. eg. first sqoop job only imported row 0-100, then next job will start from 101 based on --last-value=100. But even if 0-100 got updated, Append mode won't cover them anymore.

  2. last-modified, this one is even worse IMHO, it requires the source table has a timestamp field which indicates when the row gets last updated. Then based on the timestamp, it does the incremental updates import. If the source table doesn't have anything like that, this one is not useful.

AFAIK, для этого не существует идеального решения, если вам больше важна работа в режиме реального времени, добавление триггеров или использование flume для сканирования журнала редактирования и постоянного обновления HBase в режиме RT, это звучит неприятно, я знаю. Или используйте Sqoop + Oozie, периодически импортируйте исходную таблицу в HBase, у вас не будет RT или даже почти RT ответа. Пока что, учитывая, что вокруг больше ничего нет, я бы голосовал за нестандартный источник.

3

Насколько я понимаю, Flume не предназначен для этого. Flume в основном предназначен для чтения журналов, таких как источники данных (плоские файлы), и их структурированного переноса в приемник. Sqoop может быть полезен, попробуйте http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html

Очевидно, что Sqoop не удовлетворяет потребности RealTime или даже почти миграции в реальном времени.

Похожие вопросы