Получение данных из MySQL в Hadoop - PullRequest
5 голосов
/ 19 июня 2010

Я только начинаю изучать Hadoop, и мне интересно следующее: предположим, у меня есть куча больших рабочих таблиц MySQL, которые я хочу проанализировать.

  1. Похоже, мне нужно выгрузить все таблицы в текстовые файлы, чтобы перенести их в файловую систему Hadoop - это правильно, или есть какой-то способ, которым Hive или Pig или что-то можетполучить доступ к данным из MySQL напрямую?
  2. Если я вывожу все рабочие таблицы в текстовые файлы, нужно ли мне беспокоиться о влиянии на производительность при дампе?(Зависит ли это от того, какой механизм хранения используют таблицы? Что мне делать, если это так?)
  3. Лучше ли выгрузить каждую таблицу в один файл или разбить каждую таблицу на 64 МБ (или что угодноразмер блока есть) файлы?

Ответы [ 2 ]

10 голосов
/ 19 июня 2010

Импорт данных из MySQL может быть сделан очень легко.Я рекомендую вам использовать дистрибутив hadoop от Cloudera, он поставляется с программой под названием sqoop, которая обеспечивает очень простой интерфейс для импорта данных прямо из mysql (поддерживаются и другие базы данных).Sqoop может использоваться с mysqldump или обычным запросом mysql (выберите * ...).С помощью этого инструмента нет необходимости вручную разбивать таблицы на файлы.Но для hadoop гораздо лучше иметь один большой файл.

Полезные ссылки:
Руководство пользователя Sqoop

1 голос
/ 20 июля 2010

2)
Поскольку я не знаю вашу среду, я буду в безопасности, да - беспокоюсь о влиянии на производительность.

В зависимости от частоты и количества записываемых данных вы можете обнаружить, что они обрабатываются за приемлемое количество времени, особенно если вы просто пишете новые / измененные данные. [в зависимости от сложности ваших запросов]

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

В зависимости от того, как настроена ваша среда, вы можете реплицировать / регистрировать доставку на определенный сервер (ы) БД, единственной задачей которого является создание файла (ов) данных.

1011 *
*

3)
Вам не нужно разбивать файл, HDFS позаботится о разбиении файла данных на блоки и репликации по кластеру. По умолчанию он автоматически разбивается на блоки данных размером 64 МБ.
см. - Apache - Архитектура HDFS

re: Wojtek answer - SQOOP clicky (не работает в комментариях)

Если у вас есть дополнительные вопросы или информация о конкретной среде, сообщите нам НТН Ральф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...