Учебное пособие по Apache Sqoop - импорт / экспорт данных между HDFS и СУБД



Учебное пособие по Apache Sqoop: Sqoop - это инструмент для передачи данных между Hadoop и реляционными базами данных. В этом блоге рассматривается импорт и экспорт Sooop из MySQL.

Прежде чем начать изучение этого руководства по Apache Sqoop, давайте сделаем шаг назад. Можете ли вы вспомнить важность приема данных, как мы обсуждали в нашем предыдущем блоге на Apache Flume . Теперь, когда мы знаем, что Apache Flume - это инструмент для приема данных из неструктурированных источников, но организации хранят свои рабочие данные в реляционных базах данных. Итак, возникла потребность в инструменте, который может импортировать и экспортировать данные из реляционных баз данных. Вот почему родился Apache Sqoop. Sqoop может легко интегрироваться с Hadoop и выгружать структурированные данные из реляционных баз данных в HDFS, дополняя мощь Hadoop. Вот почему, требует хороших знаний Apache Sqoop и Flume.

Изначально Sqoop разрабатывался и поддерживался Cloudera. Позже, 23 июля 2011 года, он был инкубирован Apache. В апреле 2012 года проект Sqoop был продвинут как проект высшего уровня Apache.





В этом учебном блоге Apache Flume мы рассмотрим:



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

Учебное пособие по Apache Sqoop: Введение в Sqoop

Apache Sqoop - Учебное пособие по Apache Sqoop - EdurekaОбычно приложения взаимодействуют с реляционной базой данных с помощью реляционной СУБД, и, таким образом, это делает реляционные базы данных одним из наиболее важных источников, генерирующих большие данные. Такие данные хранятся на серверах RDB в реляционной структуре. Здесь Apache Sqoop играет важную роль в , обеспечивая реальное взаимодействие между сервером реляционной базы данных и HDFS.

Итак, Apache Sqoop - это инструмент в который предназначен для передачи данных между HDFS (Хранилище Hadoop) и серверы реляционных баз данных, такие как MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres и т. Д. Apache Sqoop импортирует данные из реляционных баз данных в HDFS и экспортирует данные из HDFS в реляционные базы данных. Он эффективно передает объемные данные между Hadoop и внешними хранилищами данных, такими как корпоративные хранилища данных, реляционные базы данных и т. Д.



Так Sqoop получил свое название - « SQ L to Had открыто & Hadoop в SQL ».

Кроме того, Sqoop используется для импорта данных из внешних хранилищ данных в такие инструменты экосистемы Hadoop, как Улей & HBase .

Теперь, когда мы знаем, что такое Apache Sqoop. Итак, давайте продвинемся в нашем руководстве по Apache Sqoop и поймем, почему Sqoop широко используется организациями.

Учебное пособие по Apache Sqoop: почему именно Sqoop?

Для разработчика Hadoop настоящая игра запускается после загрузки данных в HDFS. Они обыгрывают эти данные, чтобы получить различную информацию, скрытую в данных, хранящихся в HDFS.

Итак, для этого анализа данные, хранящиеся в системах управления реляционными базами данных, необходимо передать в HDFS. Задача написания код для импорта и экспорта данных из реляционной базы данных в HDFS неинтересен и утомителен. Здесь на помощь приходит Apache Sqoop и устраняет их боль. Он автоматизирует процесс импорта и экспорта данных.

Sqoop упрощает жизнь разработчикам, предоставляя интерфейс командной строки для импорта и экспорта данных. Им просто нужно предоставить основную информацию, такую ​​как аутентификация базы данных, источник, место назначения, операции и т. Д. Об остальной части они позаботятся.

Sqoop внутренне преобразует команду в задачи MapReduce, которые затем выполняются через HDFS. Он использует структуру YARN для импорта и экспорта данных, что обеспечивает отказоустойчивость поверх параллелизма.

Продвигаясь вперед в этом блоге, посвященном Sqoop Tutorial, мы поймем ключевые особенности Sqoop, а затем перейдем к архитектуре Apache Sqoop.

Учебное пособие по Apache Sqoop: основные характеристики Sqoop

Sqoop предоставляет множество важных функций, таких как:

  1. Полная нагрузка : Apache Sqoop может загрузить всю таблицу с помощью одной команды. Вы также можете загрузить все таблицы из базы данных с помощью одной команды.
  2. Инкрементальный Загрузить : Apache Sqoop также предоставляет возможность инкрементной загрузки, при которой вы можете загружать части таблицы всякий раз, когда она обновляется.
  3. Параллельный импорт Экспорт : Sqoop использует структуру YARN для импорта и экспорта данных, что обеспечивает отказоустойчивость поверх параллелизма.
  4. импорт Результаты из SQL запрос : Вы также можете импортировать результат, полученный из запроса SQL, в HDFS.
  5. Сжатие : Вы можете сжать свои данные, используя алгоритм deflate (gzip) с аргументом –compress или указав аргумент –compression-codec. Вы также можете загрузить сжатую таблицу в Apache Hive .
  6. Разъемы для все главный СУБД Базы данных : Apache Sqoop предоставляет соединители для нескольких баз данных СУБД, покрывающих почти всю окружность.
  7. Kerberos Безопасность Интеграция : Kerberos - это протокол проверки подлинности компьютерной сети, который работает на основе «билетов», позволяя узлам, обменивающимся данными по незащищенной сети, безопасно подтверждать друг другу свою личность. Sqoop поддерживает аутентификацию Kerberos.
  8. Загрузить данные прямо в HIVE / HBase : Вы можете загружать данные прямо в Apache Hive для анализа, а также выгрузите ваши данные в HBase, которая является базой данных NoSQL.
  9. Поддержка для Накопление : Вы также можете указать Sqoop импортировать таблицу в Accumulo, а не каталог в HDFS.

Архитектура - это та, которая наделяет Apache Sqoop этими преимуществами. Теперь, когда мы знаем особенности Apache Sqoop, давайте двигаться дальше и разбираться в архитектуре и работе Apache Sqoop.

Учебное пособие по Apache Sqoop: архитектура и работа с Sqoop

Давайте разберемся, как работает Apache Sqoop, используя диаграмму ниже:

Инструмент импорта импортирует отдельные таблицы из СУБД в HDFS. Каждая строка в таблице рассматривается как запись в HDFS.

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

Аналогичным образом работает и экспорт.

Инструмент экспорта экспортирует набор файлов из HDFS обратно в СУБД. Файлы, передаваемые в Sqoop в качестве входных данных, содержат записи, которые называются строками в таблице.

Когда мы отправляем нашу работу, она отображается в Map Tasks, которая переносит фрагмент данных из HDFS. Эти фрагменты экспортируются в место назначения структурированных данных. Объединив все эти экспортированные фрагменты данных, мы получаем все данные в месте назначения, которым в большинстве случаев является СУБД (MYSQL / Oracle / SQL Server).

В случае скоплений требуется фаза уменьшения. Но Apache Sqoop просто импортирует и экспортирует данные, а не агрегации. Задание карты запускает несколько картографов в зависимости от количества, определенного пользователем. Для импорта Sqoop каждой задаче сопоставления будет назначена часть импортируемых данных. Sqoop равномерно распределяет входные данные между картографами для достижения высокой производительности. Затем каждый сопоставитель создает соединение с базой данных с помощью JDBC и извлекает часть данных, назначенных Sqoop, и записывает их в HDFS, Hive или HBase на основе аргументов, предоставленных в CLI.

Теперь, когда мы понимаем архитектуру и работу Apache Sqoop, давайте поймем разницу между Apache Flume и Apache Sqoop.

Учебное пособие по Apache Sqoop: Flume против Sqoop

Основное различие между Flume и Sqoop заключается в следующем:

  • Flume загружает в HDFS только неструктурированные или полуструктурированные данные.
  • В то время как Sqoop может импортировать, а также экспортировать структурированные данные из РСУБД или корпоративных хранилищ данных в HDFS или наоборот.

Теперь, переходя к нашему руководству по Apache Sqoop, самое время перейти к командам Apache Sqoop.

как выйти из программы java

Учебник по Apache Sqoop: Команды Sqoop

  • Sqoop - команда IMPORT

Команда импорта используется для импорта таблицы из реляционных баз данных в HDFS. В нашем случае мы собираемся импортировать таблицы из баз данных MySQL в HDFS.

Как вы можете видеть на изображении ниже, у нас есть таблица сотрудников в базе данных сотрудников, которую мы будем импортировать в HDFS.

Команда для импорта таблицы:

sqoop import --connect jdbc: mysql: // localhost / employee --username edureka --table Сотрудники

Как вы можете видеть на изображении ниже, после выполнения этой команды задачи карты будут выполняться в серверной части.

После выполнения кода вы можете проверить веб-интерфейс HDFS, то есть localhost: 50070, куда импортируются данные.

  • Sqoop - команда IMPORT с целевым каталогом

Вы также можете импортировать таблицу в определенный каталог в HDFS, используя следующую команду:

sqoop import --connect jdbc: mysql: // localhost / employee --username edureka --table employee --m 1 --target-dir / employee

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

Sqoop параллельно импортирует данные из большинства источников баз данных. Вы можете указать количество задач карты (параллельных процессов), которые будут использоваться для выполнения импорта, с помощью или –Num-mappers аргумент. Каждый из этих аргументов принимает целочисленное значение, соответствующее применяемой степени параллелизма.

Вы можете контролировать количество картографов независимо от количества файлов в каталоге. Производительность экспорта зависит от степени параллелизма. По умолчанию Sqoop будет использовать четыре задачи параллельно для процесса экспорта. Это может быть неоптимально, вам нужно будет поэкспериментировать со своей настройкой. Дополнительные задачи могут обеспечить лучший параллелизм, но если база данных уже имеет узкие места при обновлении индексов, вызове триггеров и т. Д., Дополнительная нагрузка может снизить производительность.

На изображении ниже вы можете видеть, что число задач картографа равно 1.

Количество файлов, создаваемых при импорте таблиц MySQL, равно количеству созданных мапперов.

  • Sqoop - команда IMPORT с предложением Where

Вы можете импортировать подмножество таблицы с помощью предложения «where» в инструменте импорта Sqoop. Он выполняет соответствующий запрос SQL на соответствующем сервере базы данных и сохраняет результат в целевом каталоге в HDFS. Вы можете использовать следующую команду для импорта данных с помощью ‘ где Пункт:

sqoop import --connect jdbc: mysql: // localhost / employee --username edureka --table employee --m 3 --where 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - добавочный импорт

Sqoop предоставляет режим инкрементного импорта, который можно использовать для извлечения только тех строк, которые новее, чем некоторый ранее импортированный набор строк. Sqoop поддерживает два типа инкрементного импорта: добавить и Последнее изменение . Вы можете использовать аргумент –incremental, чтобы указать тип выполняемого добавочного импорта.

Вы должны указать добавить режим при импорте таблицы, в которую постоянно добавляются новые строки с увеличением значений идентификатора строки. Вы указываете столбец, содержащий идентификатор строки, с помощью –Check-column . Sqoop импортирует строки, в которых контрольный столбец имеет значение больше, чем указанное с помощью –Последняя стоимость .

Альтернативная стратегия обновления таблиц, поддерживаемая Sqoop, называется Последнее изменение Режим. Вы должны использовать это, когда строки исходной таблицы могут быть обновлены, и каждое такое обновление будет устанавливать значение последнего измененного столбца на текущую метку времени.

При последующем импорте следует указать –Последняя стоимость таким образом, чтобы гарантировать, что вы импортируете только новые или обновленные данные. Это выполняется автоматически путем создания добавочного импорта как сохраненного задания, что является предпочтительным механизмом для выполнения повторяющегося добавочного импорта.

Сначала мы вставляем новую строку, которая будет обновлена ​​в нашей HDFS.

Команда для инкрементного импорта:

sqoop import --connect jdbc: mysql: // localhost / employee --username edureka --table employee --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999

Вы можете видеть на изображении ниже, что создается новый файл с обновленными данными.

  • Sqoop - Импортировать все таблицы

Вы можете импортировать все таблицы с сервера базы данных СУБД в HDFS. Данные каждой таблицы хранятся в отдельном каталоге, а имя каталога совпадает с именем таблицы. Обязательно, чтобы каждая таблица в этой базе данных имела поле первичного ключа. Команда для импорта всей таблицы из базы данных:

sqoop import-all-tables --connect jdbc: mysql: // localhost / employee - имя пользователя edureka

  • Sqoop - список баз данных

Вы можете вывести список баз данных, присутствующих в реляционной базе данных, с помощью Sqoop. Инструмент списков баз данных Sqoop анализирует и выполняет запрос SHOW DATABASES на сервере базы данных. Команда для вывода списка баз данных:

sqoop list-databases --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - список таблиц

Вы также можете перечислить таблицы конкретной базы данных на сервере базы данных MySQL с помощью Sqoop. Инструмент таблиц списков Sqoop анализирует и выполняет запрос SHOW TABLES. Команда для перечисления таблиц в базе данных:

sqoop list-tables --connect jdbc: mysql: // localhost / employee - имя пользователя edureka

  • Sqoop - Экспорт

Как мы обсуждали выше, вы также можете экспортировать данные из HDFS в базу данных СУБД. Целевая таблица должна существовать в целевой базе данных.Данные хранятся в виде записей в HDFS. Эти записи читаются, анализируются и разделяются указанным пользователем разделителем.Операция по умолчанию - вставить всю запись из входных файлов в таблицу базы данных с помощью оператора INSERT. В режиме обновления Sqoop генерирует оператор UPDATE, который заменяет существующую запись в базе данных.

Итак, сначала мы создаем пустую таблицу, в которую будем экспортировать наши данные.

имеет отношения в Java

Команда для экспорта данных из HDFS в реляционную базу данных:

sqoop export --connect jdbc: mysql: // localhost / employee --username edureka --table emp --export-dir / user / edureka / employee

  • Sqoop - Codegen

В объектно-ориентированном приложении каждая таблица базы данных имеет один класс объектов доступа к данным, который содержит методы «getter» и «setter» для инициализации объектов. Codegen автоматически генерирует класс DAO. Он генерирует класс DAO в Java на основе структуры схемы таблицы.

Команда для генерации кода Java:

sqoop codegen --connect jdbc: mysql: // localhost / members --username edureka --table Сотрудники

Вы можете увидеть путь на изображении выше, где генерируется код. Пойдем по пути и проверим созданные файлы.

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

Теперь, когда вы разобрались с Apache Sqoop, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Учебный курс Edureka Big Data по сертификации Hadoop помогает учащимся стать экспертами в области HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume и Sqoop, используя примеры использования в реальном времени в области розничной торговли, социальных сетей, авиации, туризма, финансов.

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.