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

Что такое SQOOP в Hadoop?

Апач СКООП (SQL-to-Hadoop) — это инструмент, предназначенный для поддержки массового экспорта и импорта данных в HDFS из структурированных хранилищ данных, таких как реляционные базы данных, корпоративные хранилища данных и системы NoSQL. Это инструмент миграции данных, основанный на архитектуре соединителя, который поддерживает плагины для обеспечения подключения к новым внешним системам.

Примером использования Hadoop Sqoop является предприятие, которое каждую ночь выполняет импорт Sqoop для загрузки дневных данных из производственной транзакционной СУБД в Hive хранилище данных для дальнейшего анализа.

Далее в этом руководстве по Apache Sqoop мы узнаем об архитектуре Apache Sqoop.

Скуп Archiтекстура

Все существующие Системы управления базами данных разработаны с SQL стандарт в виду. Однако каждая СУБД в некоторой степени различается по диалекту. Таким образом, эта разница создает проблемы, когда речь идет о передаче данных между системами. Соединители Sqoop — это компоненты, которые помогают преодолеть эти проблемы.

Передача данных между Sqoop Hadoop и внешней системой хранения данных стала возможной с помощью коннекторов Sqoop.

Sqoop имеет коннекторы для работы с рядом популярных реляционных баз данных, включая MySQL, PostgreSQL, Oracle, SQL-сервер и DB2. Каждый из этих соединителей знает, как взаимодействовать со связанной с ним СУБД. Существует также универсальный соединитель JDBC для подключения к любой базе данных, поддерживающей Javaпротокол JDBC. Кроме того, Sqoop Big data обеспечивает оптимизацию MySQL и PostgreSQL соединители, которые используют API-интерфейсы для конкретных баз данных для эффективного выполнения массовых передач.

Скуп Archiтекстура
Скуп Archiтекстура

В дополнение к этому, Sqoop в области больших данных имеет различные сторонние коннекторы для хранилищ данных, начиная от корпоративных хранилища данных (включая Netezza, Teradata и Oracle) в магазины NoSQL (например, Couchbase). Однако эти разъемы не входят в комплект Sqoop; их необходимо загружать отдельно, и их можно легко добавить к существующей установке Sqoop.

Зачем нам нужен Sqoop?

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

Главные проблемы:

1. Загрузка данных с помощью скриптов

Традиционный подход с использованием сценариев для загрузки данных не подходит для массовой загрузки данных в Hadoop; такой подход неэффективен и требует очень много времени.

2. Прямой доступ к внешним данным через приложение Map-Reduce.

Предоставление прямого доступа к данным, находящимся во внешних системах (без загрузки в Hadoop), для приложений сокращения карты усложняет эти приложения. Таким образом, такой подход невозможен.

3. Помимо возможности работать с огромными данными, Hadoop может работать с данными в нескольких различных формах. Поэтому для загрузки таких разнородных данных в Hadoop были разработаны различные инструменты. Скуп и акведук — два таких инструмента загрузки данных.

Далее в этом уроке по Sqoop с примерами мы узнаем о разнице между Sqoop, Flume и HDFS.

Sqoop против Flume против HDFS в Hadoop

Скуп акведук HDFS
Sqoop используется для импорта данных из источников структурированных данных, таких как СУБД. Flume используется для перемещения массовых потоковых данных в HDFS. HDFS — это распределенная файловая система, используемая экосистемой Hadoop для хранения данных.
Sqoop имеет архитектуру на основе коннекторов. Коннекторы знают, как подключиться к соответствующему источнику данных и получить данные. Flume имеет агентную архитектуру. Здесь пишется код (который называется «агент»), который обеспечивает получение данных. HDFS имеет распределенную архитектуру, в которой данные распределяются по нескольким узлам данных.
HDFS — это место для импорта данных с помощью Sqoop. Данные передаются в HDFS через ноль или более каналов. HDFS — идеальное место для хранения данных.
Загрузка данных Sqoop не управляется событиями. Загрузка данных Flume может управляться событием. HDFS просто хранит данные, предоставленные ей любым способом.
Чтобы импортировать данные из источников структурированных данных, нужно использовать только команды Sqoop, поскольку его коннекторы умеют взаимодействовать с источниками структурированных данных и извлекать данные из них. Для загрузки потоковых данных, таких как твиты, созданные в Твиттере, или файлы журналов веб-сервера, следует использовать Flume. Агенты Flume созданы для получения потоковых данных. HDFS имеет собственные встроенные команды оболочки для хранения в ней данных. HDFS не может импортировать потоковые данные