Apache Sqoop
Последнее изменение этой страницы: 15:42, 1 марта 2019.
![]() | |
Разработчики: | Apache Software Foundation |
---|---|
Постоянный выпуск: | 1.4.7/ Декабрь 2017 |
Состояние разработки: | Активное |
Написана на: | Java |
Операционная система: | Кросс-платформенная |
Тип ПО: | Инструмент для управление данными |
Лицензия: | Apache License |
Веб-сайт |
sqoop |
Apache Sqoop - это инструмент, предназначенный для передачи данных между Hadoop и реляционными базами данных или мэйнфреймами. Вы можете использовать Sqoop для импорта данных из реляционных систем управления базами данных (РСУБД), таких как MySQL или Oracle или мэйнфреймов в Hadoop, преобразовывать данные в Hadoop MapReduce, а затем экспортировать данные обратно в СУБД.
Sqoop автоматизирует большую часть этого процесса, опираясь на базу данных для описания схемы данных, которые будут импортированы. Sqoop использует MapReduce для импорта и экспорта данных, что обеспечивает параллельную работу, а также отказоустойчивость.
Содержание
Описание
Sqoop поддерживает добавочную загрузку отдельной таблицы или SQL-запроса произвольной формы, а также сохраненные задания, которые можно запускать несколько раз для импорта обновлений, сделанных в базу данных с момента последнего импорта. Импорт также можно использовать для заполнения таблиц в [[Apache Hive|Hive] или HBase. Экспорт можно использовать для помещения данных из Hadoop в реляционную базу данных.
Sqoop получил название от «SQL-to-Hadoop». Sqoop стал проектом Apache высшего уровня в марте 2012 года.
Informatica предоставляет соединитель на основе Sqoop версии 10.1. Начиная с версии 4.5 программного обеспечения, Pentaho предоставляет шаги соединителя на основе Sqoop с открытым исходным кодом, Sqoop Import и Sqoop Export, в своем наборе ETL Pentaho Data Integration. Microsoft использует соединитель на основе Sqoop для передачи данных из баз данных Microsoft SQL Server в Hadoop. Couchbase, Inc. также предоставляет соединитель Couchbase Server-Hadoop с помощью Sqoop.
Системы реляционных баз данных широко используются для взаимодействия с традиционными бизнес-приложениями. Таким образом, системы реляционных баз данных стали одним из источников, генерирующих большие данные. Поскольку мы имеем дело с большими данными, Hadoop хранит и обрабатывает большие данные с использованием различных сред обработки, таких как MapReduce, Hive, HBase, Cassandra, Pig и т. Д., И сред хранения, таких как HDFS, для достижения преимуществ распределенных вычислений и распределенного хранения. Чтобы хранить и анализировать большие данные из реляционных баз данных, данные должны передаваться между системами баз данных и распределенной файловой системой Hadoop (HDFS). Sqoop действует как промежуточный уровень между Hadoop и системами реляционных баз данных. Вы можете импортировать данные и экспортировать данные между системами реляционных баз данных и Hadoop и его экосистемами напрямую, используя sqoop.
Особенности
Особенности Sqoop:
- Автоматизирует большую часть процесса.
- Использует инфраструктуру MapReduce для импорта и экспорта данных, что обеспечивает параллельный механизм и отказоустойчивость.
- Облегчает работу разработчиков, предоставляя интерфейс командной строки. Разработчики просто должны предоставить основную информацию, такую как источник, место назначения и детали аутентификации базы данных.
- Предоставляет много важных функций.
- Поддержка Apache Accumulo.
Функции
Apache Sqoop выполняет следующие действия для интеграции перемещения больших объемов данных между Hadoop и структурированными хранилищами данных:
- Импортировать последовательные наборы данных из мэйнфрейма. Удовлетворяет растущую потребность переносить данные с мэйнфреймов на HDFS;
- Импорт напрямую в ORCFile. Улучшенное сжатие и облегченное индексирование для повышения производительности запросов;
- Импорт данных. Перемещает определенные данные из внешних хранилищ и EDW в Hadoop, чтобы оптимизировать экономическую эффективность комбинированного хранения и обработки данных;
- Параллельная передача данных. Для более быстрой работы и оптимального использования системы;
- Быстрые копии данных. Из внешних систем в Hadoop;
- Эффективный анализ данных. Повышает эффективность анализа данных путем объединения структурированных данных с неструктурированными данными в озере данных схемы при чтении;
- Балансировки нагрузки. Смягчает чрезмерную нагрузку при хранении и обработке на другие системы.
Использование
Необходимы следующие знания для работы с Apache Sqoop:
- базовые знания компьютерной технологии и терминологии
- знакомство с интерфейсами командной строки, например bash
- СУБД
- знакомство с Hadoop и базовые знания по его эксплуатации
Перед тем, как начать использовать Sqoop, должен быть установлен и настроен Hadoop. Sqoop в настоящее время поддерживает следующие версии Hadoop: 0.20, 0.23, 1.0, 2.0. Предполагается, что вы используете среду Linux и Linux-подобную. В случае использования Windows, можно использовать Cygwin X для выполнения большинства задач, связанных с Sqoop. На MacOS X можно увидеть несколько ошибок совместимости. Sqoop преимущественно работает на Linux.
Основы использования
Со Sqoop вы можете импортировать данные из СУБД или мэйфремов в HDFS. Исходные данные для процесса импорта представляют собой либо таблицы баз данных, либо наборы данных для мэйнфреймов. Для баз данных Sqoop будет читать таблицу построчно в HDFS. Для наборов данных мэйнфреймов Sqoop будет читать записи из каждого набора данных в HDFS. На выходе процесса импорта получается набор файлов, содержащих копию импортированной таблицы или наборов данных. Процесс импорта выполняется параллельно. По этой причине результат импорта будет находиться в нескольких файлах. Эти файлы могут иметь вид текстовых с разделителями или двоичных Avro или SequenceFile, содержащих сериализованные данные записи.
Побочным продуктом процесса импорта является сгенерированный Java класс, который может инкапсулировать один ряд импортированной таблицы. Этот класс используется в процессе импорта. Исходный код java для этого класса нужен для использования в последующей обработке данных MapReduce. Этот класс может сериализовывать и десериализовывать данных в формат SequenceFile. Он также может разобрать текстовую форму записи с разделителями. Эти возможности позволяют быстро разрабатывать приложения MapReduce, использующие HDFS записи в конвейере обработки.
После манипуляции импортированными записями вы имеете набор данных, который может быть экспортирован обратно в СУБД. Процесс экспорта в Sqoop будет читать набор текстовых файлов с разделителями из HDFS параллельно, разбирать записи и вставлять их в виде новых строк в таблице целевой БД для использованиями внешними приложениями или пользователями.
Sqoop включает в себя некоторые другие команды, которые позволяют просматривать БД, с которой вы работаете. Например, можно получить список доступных схем баз данных и таблиц в схеме. Sqoop также имеет примитивную облоку выполнения SQL.
Большинство аспектов импорта, генерации кода, а также процессов экспорта могут быть настроены. В случае имспользования баз данных, можно контролировать определённый диапазон строк или столбцов. Можно указать отдельные разделители и управляющие символы для представления на основе файлов данных, а также используемый формат файла. Можно контролировать имена пакетов и классов, используемых в созданном коде.
Импорт данных
Следующая команда используется для импорта всех данных из таблицы с именем ORDERS из базы данных MySQL:
$ sqoop import --connect jdbc:mysql://localhost/acmedb --table ORDERS --username test --password ****
В этой команде использованы следующие параметры:
- import: подкоманда предписывает Sqoop инициализировать импорт
- --connect <строка подключения>, --username <имя пользователя>, --password <пароль>: эти параметры соединения, использующиеся для соединения с БД. Они ничем не отличаются от параметров соединения, которые используются при подключении к БД через соединения JDBC.
- --table <имя таблицы>: параметр определяет таблицу, которая будет импортирована
Импорт осуществляется в два этапа. На первом этапе Sqoop просматривает базу данных, чтобы собрать необходимые метаданные для импортируемых данных. Второй этап представляет собой работу Hadoop, которую Sqoop загружает в кластер. Это та работа, которая передает данные, используя метаданные, полученные на предыдущем шаге.
Импортируемые данные сохраняются в директории на HDFS на основе таблицы, которая была импортирована. Как и в случае с большинством аспектов работы Sqoop, пользователь может указать любой альтернативный каталог, в котором файлы должны быть заполнены.
По умолчанию эти файлы содержат поля, разделённые запятыми, с новыми строками, отделящими различные записи. Можно легко переопределить формат, в котором копируются данные, явно указав разделитель полей и символ, разбивающий записи.
Экспорт данных
В некоторых случаях данные, обработанные с помощью Hadoop могут быть необходимы в работащих системах, чтобы помочь запустить дополнительные критически важные бизнес-функции. Sqoop может быть использован для экспорта таких данных во внешние хранилища, если это необходимо. Если данные, полученные Hadoop, соответствуют таблице ORDERS в базе данных где-либо еще, можно заполнить её следующей командой:
$ sqoop export --connect jdbc:mysql://localhost/acmedb --table ORDERS --username test --password **** --export-dir /user/arvind/ORDERS
В этой команде использованы следующие параметры:
- --connect <строка подключения>, --username <имя пользователя>, --password <пароль>: это параметры соединения, которые используются для соединения с базой данных. Они ничем не отличаются от тех, которые используются для подключения к базе данных через соединение JDBC.
- --table <имя таблицы>: этот параметр определяет таблицу, которая будет заполняться.
- --export-Dir <путь к каталогу>: это каталог, из которого будут экспортированы данные.
Экспорт осуществляется в два этапа. Первый шаг состоит в просмотре базы данных на наличие метаданных, использующихся на втором этапе передачи данных. Sqoop разделяет входной массив данных на части и затем использует индивидуальные задачи, чтобы загрузть части в базу данных. Каждая задача выполняет передачу в течение многих операций, чтобы обеспечить оптимальную пропускную способность и минимальное использование ресурсов.
Некоторые соединения поддерживают перемещение таблиц, что позволяет изолировать таблицы для работающих систем от возможных повреждений в случае сбоев работы по какой-либо причине.
Подключение к серверу базы данных
Sqoop предназначен для импорта таблиц из базы данных в HDFS. Для этого необходимо указать строку соединения, которая описывает, как подключиться к базе данных. Строка соединения похожа на URL и передается Sqoop с параметром --connect. Это описывает сервер и базу данных для подключения; можно также указать порт. Например:
$ sqoop import --connect jdbc:mysql://database.example.com/employees
Эта строка будет подключаться к указанной базе данных MySQL сотрудников на хосте database.example.com. Очень важно не использовать URL localhost, если вы собираетесь использовать Sqoop с распределённым кластером Hadoop. Строка соединения будет использоваться на узлах TaskTracker всего кластера MapReduce. Если указать буквенное имя локального адреса, каждый узел подключиться к разным базам (или, наиболее вероятно, не подключиться совсем). Вместо этого вы должны использовать полное имя хоста или IP-адрес хоста базы данных, которые можно увидеть на всех удаленных узлах.
Вам может понадобиться аутентифицироваться в базе данных, прежде чем вы получите к ней доступ. Вы можете использовать --username, чтобы ввести имя пользователя в базу данных. Sqoop предоставляет несколько различных способов предоставить пароль, безопасный и небезопасный, в базу данных.
Установка Apache Sqoop
Чтобы установить Sqoop версии 1.4.6, следуйте следующим шагам:
1. Скачайте Sqoop
wget www.apache.org/dyn/closer.cgl/sqoop/1.4.6
2. Распакуетйе tar архив
sudo tar -zxvf sqoop-1.4.6.bin hadoop1.0.0.tar.gz
3. Перенесите файлы в директорию Sqoop
sudo mv sqoop-1.4.6.bin hadoop1.0.0 /usr/lib/sqoop
4. Перейдите в директорию Sqoop
cd /usr/lib/sqoop/sqoop-1.4.6.bin_hadoop-1.0.0
5. Выполните команду
sudo mv ./* /usr/lib/sqoop
6. Открыть файл .bashrc
sudo nano ~/.bashrc
7. Добавить следующие строки в конец файла
export SQOOP_HOME=/usr/lib/sqoop export PATH=$PATH:$SQOOP_HOME/bin
8. Проверить успешность установки Sqoop следующей командой
sqoop version
Источники
- Официальный сайт Sqoop // sqoop.apache [2011-2019]. Дата обновления: 18.01.2019. URL: http://sqoop.apache.org/ (дата обращения: 22.02.2019)
- Apache Sqoop OVERVIEW // hortonworks [2011-2019]. URL: https://hortonworks.com/apache/sqoop/ (дата обращения: 22.02.2019)
- Sqoop Wikipedia // wikipedia [2001-2019]. URL: https://en.wikipedia.org/wiki/Sqoop (дата обращения: 22.02.2019)
- Fundamentals of Apache Sqoop // dezyre [2019]. URL: https://www.dezyre.com/hadoop-tutorial/hadoop-sqoop-tutorial (дата обращения: 22.02.2019)
Ссылки
- Страница Sqoop (англ.)
- User Guide Sqoop (англ.)
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.