Использование Apache Sqoop с Hadoop в HDInsight

Узнайте, как использовать Apache Sqoop в HDInsight для импорта и экспорта данных между кластером HDInsight и базой данных SQL Azure.

Хотя Apache Hadoop оптимально подходит для обработки частично структурированных и неструктурированных данных, таких как журналы и файлы, возможно, возникнет необходимость обрабатывать структурированные данные, хранящиеся в реляционных базах данных.

Apache Sqoop — это средство, предназначенное для передачи данных между кластерами Hadoop и реляционными базами данных. С его помощью можно импортировать данные из системы управления реляционной базой данных (реляционной СУБД), например SQL Server, MySQL или Oracle, в распределенную файловую систему Hadoop (HDFS), преобразовать данные в системе Hadoop с использованием MapReduce или Apache Hive, а затем экспортировать данные обратно в реляционную СУБД. В этой статье в качестве реляционной базы данных используется база данных SQL Azure.

Важно!

В этой статье описывается настройка тестовой среды для выполнения передачи данных. Затем вы выбираете метод передачи данных для этой среды из одного из методов в разделе Запуск заданий Sqoop.

Сведения о версиях Sqoop, поддерживаемых в кластерах HDInsight, см. в статье о новых возможностях в версиях кластеров HDInsight.

Ознакомление со сценарием

Кластер HDInsight имеет несколько примеров данных. Вы будете использовать два следующих образца:

  • Файл журнала Apache Log4j , расположенный по адресу /example/data/sample.log. Из файла извлекаются следующие журналы:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
  • Таблица Hive hivesampletable, которая ссылается на файл данных, расположенный по адресу /hive/warehouse/hivesampletable. Эта таблица содержит некоторые данные о мобильных устройствах.

    Поле Тип данных
    clientid строка
    querytime строка
    market строка
    deviceplatform строка
    devicemake строка
    devicemodel строка
    Состояние строка
    country строка
    querydwelltime double
    sessionid BIGINT
    sessionpagevieworder BIGINT

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

Настройка тестовой среды

Кластер, база данных SQL и другие объекты создаются через портал Azure с помощью шаблона Azure Resource Manager. Шаблон можно найти в шаблонах быстрого запуска Azure. Шаблон Resource Manager вызывает пакет BACPAC для развертывания схем таблиц в базе данных SQL. Чтобы использовать закрытый контейнер для BACPAC-файлов, используйте следующие значения в шаблоне:

"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",

Примечание

С помощью шаблона или портала Azure можно импортировать только BACPAC-файл из хранилища BLOB-объектов Azure.

  1. Выберите следующее изображение, чтобы открыть шаблон Resource Manager на портале Azure.

    Кнопка

  2. Укажите следующие свойства.

    Поле Значение
    Подписка В раскрывающемся списке выберите подписку Azure.
    Группа ресурсов Выберите группу ресурсов из раскрывающегося списка или создайте новую.
    Расположение Выберите регион из раскрывающегося списка.
    Имя кластера, Введите имя кластера Hadoop. Используйте только строчные буквы.
    Имя пользователя для входа в кластер Оставьте подставленное значение admin.
    Пароль для входа в кластер Введите пароль.
    Имя пользователя SSH Оставьте подставленное значение sshuser.
    Пароль SSH Введите пароль.
    Учетные данные администратора SQL Оставьте подставленное значение sqluser.
    Пароль администратора SQL Введите пароль.
    Расположение _artifacts Используйте значение по умолчанию, если вам не нужно использовать собственный BACPAC-файл в другом расположении.
    Токен SaS расположения _artifacts Не указывайте.
    Имя BACPAC-файла Используйте значение по умолчанию, если вам не нужно использовать собственный BACPAC-файл.
    Расположение Используйте значение по умолчанию.

    Имя логического сервера SQL<ClusterName>dbserver. Имя базы данных — <ClusterName>db. Имя учетной записи хранения по умолчанию — e6qhezrh2pdqu.

  3. Выберите Я принимаю указанные выше условия.

  4. Щелкните Приобрести. Появится новый элемент под названием "Выполняется отправка развертывания для развертывания шаблона". Процесс создания кластера и базы данных SQL занимает около 20 минут.

Выполнение заданий Sqoop

HDInsight может выполнять задания Sqoop с помощью различных методов. Используйте следующую таблицу, чтобы решить, какой метод подходит вам, а затем перейдите по ссылке к пошаговому руководству.

Используйте , если требуется... ... интерактивная оболочка ...пакетная обработка ...из этого кластера операционной системы
SSH ? ? Linux, Unix, Mac OS X или Windows
.NET SDK для Hadoop   ? Windows (сейчас)
Azure PowerShell   ? Windows

Ограничения

  • Массовый экспорт: при использовании HDInsight на основе Linux соединитель Sqoop, применяемый для экспорта данных в Microsoft SQL Server или Базу данных SQL, пока не поддерживает операции массовой вставки.
  • Пакетная обработка: при использовании HDInsight на основе Linux, когда для вставок применяется параметр -batch, Sqoop выполняет несколько вставок вместо пакетной обработки операций вставки.

Дальнейшие действия

Теперь вы узнали, как использовать Sqoop. Дополнительные сведения см. на следующих ресурсах: