Учебное пособие по 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-интерфейсы для конкретных баз данных для эффективного выполнения массовых передач.
В дополнение к этому, 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 не может импортировать потоковые данные |