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

Содержание:

Anonim

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

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

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

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

Архитектура Sqoop

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

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

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

Архитектура Sqoop

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

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

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

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

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

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

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

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

3. Помимо возможности работы с огромными объемами данных, Hadoop может работать с данными в нескольких различных формах. Итак, чтобы загрузить такие разнородные данные в Hadoop, были разработаны разные инструменты. Sqoop и Flume - два таких инструмента для загрузки данных.

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

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

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