Учебники

8) Sqoop

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

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

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

Sqoop Architecture

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

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

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

Что такое Sqoop?  Что такое FLUME - учебник по Hadoop

Sqoop Architecture

В дополнение к этому, Sqoop имеет различные сторонние разъемы для хранения данных,

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

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

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

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

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

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

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

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

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

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

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