Что такое 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 для больших данных имеет различные сторонние соединители для хранилищ данных, начиная от корпоративных хранилищ данных (включая 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 не может импортировать потоковые данные |