Для хранилищ данных и приложений интеграции больших данных обычно используются инструменты ETL. ETL, аббревиатура Extract-Transform-Load на английском языке, используется для описания процесса извлечения, интерактивного преобразования и загрузки данных из источника в пункт назначения. Многие текущие приложения также имеют большое количество моделей приложений ELT. Существует множество распространенных инструментов ETL или ETL-подобных инструментов интеграции и синхронизации данных. Ниже приводится краткий обзор и сравнение Sqoop с открытым исходным кодом, dataX, Kettle, Canal и StreamSetst.
После анализа лично автор рекомендует отдать приоритет DataX.
Sqoop, SQL-to-Hadoop означает «SQL в Hadoop и Hadoop в SQL». Это инструмент с открытым исходным кодом от Apache для передачи данных между Hadoop и серверами реляционных баз данных. Он в основном используется для передачи данных между Hadoop и реляционными базами данных. Он может импортировать данные из реляционной базы данных (MySQL, Oracle и т. д.) в HDFS Hadoop, а также экспортировать данные HDFS в реляционную базу данных. Суть команды sqoop заключается в преобразовании ее в программу MapReduce. Sqoop разделен на импорт и экспорт, стратегии — на табличные и запросные, а режимы — на инкрементальный и полный.
image.png
Простой пример команды:
image.png
Sqoop поддерживает полный импорт данных и инкрементальный импорт данных (инкрементальный импорт данных делится на два типа: один — инкрементный импорт данных на основе инкрементных столбцов (метод Append). Другой — инкрементный импорт данных на основе столбца времени (метод LastModified)). также можно указать, импортируются ли данные одновременно.
1、может бытьреляционная база данныхсерединаимпорт данныхhdfs、hiveилиhbaseждатьhadoopкомпонентысередина,Вы также можете импортировать данные компонента Hadoop середина в реляционную базу данныхсередина;
2. Когда sqoop импортирует и экспортирует данные,полностью принятmap-reduceвычислитьрамка,Создайте задание по уменьшению карты на основе входных условий.,Работает на кластере Hadoop середина. Используйте map-reduceramka для выполнения операций импорта или экспорта на нескольких узлах одновременно.,Это быстрее и эффективнее, чем выполнение нескольких параллельных операций импорта и экспорта на одном узле.,В то же время он обеспечивает хорошую одновременную производительность и отказоустойчивость;
3、поддерживатьinsert、updateмодель,Параметры можно выбрать,Обновить, если содержимое существует,Если он не существует, вставьте его;
4. Лучшая поддержка основных внешних реляционных баз данных.
https://github.com/apache/sqoop
DataX — это широко используемый инструмент/платформа для автономной синхронизации данных в Alibaba Group. Он реализует различные типы данных, включая MySQL, Oracle, SqlServer, Postgre, HDFS, Hive, ADS, HBase, TableStore (OTS), MaxCompute (ODPS), DRDS. и т. д. Эффективная функция синхронизации данных между источниками структурированных данных.
githubадрес:https://github.com/alibaba/DataX
Поддерживаемые источники данных:
image.png
Сам DataX, как платформа автономной синхронизации данных, построен с использованием архитектуры Framework + плагин. Абстрактное чтение и запись источников данных в подключаемые модули Reader+Writer и включение их во всю структуру синхронизации.
В настоящее время разработана структура datax3.0:
image.png
Пример использования Datax, суть которого заключается в написании задания файла конфигурации json:
image.png
Платформа DataX централизованно решает проблемы, возникающие при высокоскоростном обмене данными, с помощью таких технологий, как очереди двойной буферизации и инкапсуляция пула потоков, а также предоставляет простой интерфейс для взаимодействия с плагинами. Плагины разделены на две категории: Reader и. Writer на основе интерфейса плагинов, предоставляемого фреймворком, позволяет очень удобно разрабатывать необходимые плагины. Отсутствие встроенной поддержки добавочных обновлений, поскольку благодаря гибкой архитектуре DataX добавочную синхронизацию можно легко реализовать с помощью сценариев оболочки и других методов.
1. Обмен данными между разнородными базами данных и файловыми системами;
2. Используйте фреймворк + построение архитектуры плагина,Framework обрабатывает буферизацию,контроль потока,одновременно,Большинство технических проблем быстрого обмена данными, таких как загрузка контекста.,Предоставляет простой интерфейс для взаимодействия с плагинами.,Плагины нужны только для реализации доступа к системе обработки данных;
3. Процесс передачи данных выполняется за один процесс, с полной операцией памяти, без чтения и записи диска и без IPC;
4、открытьрамка,Разработчики могут в очень короткие сроки разработать новый плагин для быстрой поддержки новых баз данных/файловых систем.
https://github.com/alibaba/DataX
Kettle, китайское название: Kettle, — это зарубежный бесплатный, визуальный и мощный инструмент ETL с открытым исходным кодом. Он написан на чистой Java и может работать в Windows, Linux и Unix. Извлечение данных эффективно и стабильно.
В настоящее время семейство чайников включает в себя 4 изделия: ложку, сковороду, CHEF и Kitchen.
Компоненты:
Spoon: позволяет использовать графический интерфейс для реализации процесса преобразования данных ETL.
Pan: запускайте процесс преобразования данных Spoon в пакетном режиме.
Chef: задание (с сохранением состояния, может отслеживать, выполняется ли оно, скорость выполнения и т. д.)
Кухня: запускайте шеф-повара порциями
https://github.com/pentaho/pentaho-kettle/
canal — это проект с открытым исходным кодом компании Alibaba, разработанный исключительно на Java. На основе инкрементного анализа журналов базы данных он обеспечивает подписку и потребление инкрементных данных в реальном времени. В настоящее время он в основном поддерживает MySQL и mariaDB.
Он используется в производственной среде многих крупномасштабных интернет-проектов, включая Alibaba, Meituan и т. д. Это очень зрелое решение для синхронизации баз данных, требующее только простой настройки.
Текущий канал поддерживает исходные версии MySQL, включая 5.1.x, 5.5.x, 5.6.x, 5.7.x и 8.0.x.
image.png
Принцип работы канала заключается в том, чтобы замаскироваться под ведомое устройство MySQL, имитировать протокол взаимодействия ведомого устройства MySQL и отправить протокол дампа MySQL Mater. MySQL mater получает запрос на дамп, отправленный каналом, и затем начинает отправлять двоичный журнал в канал. canal анализирует двоичный журнал, а затем отправляет его в места хранения, такие как MySQL, Kafka, Elastic Search и т. д.
Вместо того, чтобы спрашивать, что может делать канал, лучше спросить, что делает синхронизация данных.
нодаcanalсинхронизация данныхНе полную сумму, а постепенно。на основеbinary Регистрировать дополнительную подписку и потребление, canal может делать:
Canal получает данные, имитируя работу в качестве подчиненного устройства MySQL и отслеживая журнал binlog MySQL. После того, как binlog установлен в режим строки, он может не только получать данные о каждом выполненном сценарии добавления, удаления и изменения, но также получать данные до и после изменений. Благодаря этой функции канал может получать изменения в данных MySQL с высокой производительностью.
githubадрес:https://github.com/alibaba/canal
Streamsets — это ETL-инструмент для сбора больших данных в реальном времени, который может собирать и передавать данные без написания строчки кода. Через визуальный интерфейс перетаскивания реализовано проектирование конвейеров данных (Pipelines) и планирование задач по расписанию.
Источник данных поддерживает структурированные и полу-/неструктурированные данные, такие как MySQL и Oracle, а целевой источник поддерживает HDFS, Hive, Hbase, Kudu, Solr, Elasticserach и т. д. Для создания конвейеров требуется настроить три части: источники данных (источники), операции (процессоры) и пункты назначения (назначения).
image.png
image.png
Возможности Streamsets:
адрес:https://github.com/streamsets/
1. Sqoop использует вычислительную среду с сокращением карты для импорта и экспорта, в то время как datax извлекает и загружает данные только на одной машине, на которой работает datax, что намного медленнее, чем sqoop;
2. Лопатку можно использовать только в реляционной база данныхиhadoopкомпонентымежду Миграция данных, но его нельзя использовать между компонентами, связанными с Hadoop, такими как hive и hbase. Sqoop импортирует и экспортирует данные друг в друга, причём одновременно в реляционную база Между данными, например между MySQL и Oracle, данные не могут быть импортированы и экспортированы через sqoop.
Напротив, datax может реализовать миграцию данных между компонентами Hadoop реляционных баз данных, между реляционными базами данных и между компонентами Hadoop соответственно;
3. Sqoop специально разработан для Hadoop и имеет хорошую поддержку Hadoop, тогда как datax может не поддерживать более высокие версии Hadoop;
4. Sqoop поддерживает обмен данными только между несколькими официально предоставленными реляционными базами данных и компонентами Hadoop. В datax пользователям нужно только изменить файлы в соответствии со своими потребностями, сгенерировать соответствующий пакет RPM, а затем использовать свои собственные настройки после установки. в;
Сгенерируйте 50 000 000 фрагментов данных в mysql, импортируйте эти данные в hdfs, используя datax и sqoop соответственно, и сравните их параметры производительности соответственно:
Сгенерируйте 50 000 000 фрагментов данных в mysql, импортируйте эти данные в hdfs, используя datax и sqoop соответственно, и сравните их параметры производительности соответственно:
свойство | ценить |
---|---|
Время процессора (мс) | 325500 |
Чтение размера снимка физической памяти (байт) | 3045625856 |
Чтение размера снимка виртуальной памяти (байт) | 10975498240 |
Средняя скорость (МБ/с) | 20.0809 |
Общее время(а) | 99.2047 |
5. Сравнение производительности DataX — рисунок 1.
свойство | ценить |
---|---|
Средняя загрузка ЦП (%) | 21.99 |
Средняя скорость (МБ/с) | 4.95 |
Общее время(а) | 202 |
image.png
Сгенерируйте 50 000 000 фрагментов данных в Oracle, импортируйте эти данные в HDFS с помощью datax и sqoop соответственно и сравните их параметры производительности соответственно:
свойство | ценить |
---|---|
процессорное время | 86510 миллисекунд |
Чтение размера снимка физической памяти | 2865557504 |
Чтение размера снимка виртуальной памяти | 10937077760 |
средняя ставка | 6.4137MB/s |
общее время | 94.9979s |
image.png
свойство | ценить |
---|---|
Среднее использование ЦП | 15.50% |
средняя ставка | 5.14MB/s |
общее время | 122s |
image.png
1. Совместим с версией Hadoop в TDH и может импортировать данные из реляционных баз данных в HDFS в TDH;
2. у datax есть функция, которой нет у sqoop,Сразуда Преобразование данных изhdfsИмпортировать вhbase,Однако в настоящее время эта функция поддерживает только две версии hbase: 0.94.x и 1.1.x. Hbase-версия TDHсерединагипербазы — 0.98.6.,Так же и Не мероприятияTDH Hyperbase.
Сравните размеры | продукт | Kettle | DataX |
---|---|---|---|
дизайн и архитектура | Применимые сценарии | Традиционные инструменты ETL для моделирования хранилищ данных | Традиционные инструменты ETL для моделирования хранилищ данных |
Поддержка источников данных | Большинство реляционных баз данных | Несколько реляционных баз данных и нереляционных баз данных больших данных. | |
язык разработки | Java | Python、Java | |
Визуальный веб-интерфейс | Код KettleOnline заряжает код Kettle-manager бесплатно | Веб-код данных бесплатно | |
базовая архитектура | Структура «главный-подчиненный» не отличается высокой доступностью, имеет плохую масштабируемость и низкую архитектурную отказоустойчивость и не подходит для сценариев с большими данными. | Поддерживает автономное развертывание и развертывание кластера. | |
Функция | машина CDC | На основе временных меток, триггеров и т. д. | Автономная пакетная обработка |
Стратегия добычи | Поддержка поэтапного и полного извлечения | Поддерживает полное извлечение. Добавочное извлечение не поддерживается и должно быть реализовано с помощью сценариев оболочки. | |
Влияние на базу данных | Есть требования к структуре таблиц базы данных, что несколько навязчиво. | Собирайте данные через sql select, который не мешает источнику данных | |
Автоматически возобновлять загрузку с точек останова | Не поддерживается | Не поддерживается | |
Очистка данных | Моделирование и расчет требований к данным хранилища данных,Функция очистки относительно сложна.,Требуется ручное программирование | Необходимо написать скрипт очистки по своим четким правилам и вызвать его (DataX3.0 предусмотренная функция). | |
преобразование данных | Настройка сопоставления схемы вручную | Выполните сопоставление схемы, написав сценарии JSON. | |
характеристика | Данные в режиме реального времени | не в реальном времени | время |
Сложность приложения | высокий | высокий | |
Нужно ли его развивать? | да | да | |
Простота использования | Низкий | Низкий | |
стабильность | Низкий | середина | |
Скорость извлечения | Нет большой разницы, когда объем данных небольшой. Когда объем данных большой, datax работает быстрее, чем чайник. | datax оказывает меньшую нагрузку на базу данных | |
другой | Внедрение и послепродажное обслуживание | Программное обеспечение с открытым исходным кодом, общественная активность. | Открытый исходный код Alibaba,Общественная деятельность |
(4) Синхронизация данных (Sqoop, dataX, Kettle, Canal, StreamSets) https://www.modb.pro/db/86290
(1) Сравнение инструментов извлечения данных: Kettle, Datax, Sqoop, StreamSets. https://blog.csdn.net/xiaozm1223/article/details/89670460
(2) Краткое описание обучения ETL (2) — Инструменты интеграции данных ETL: чайник, scoop, datax,streamSets Сравнивать https://zhanghaiyang.blog.csdn.net/article/details/104446610
(3)интеграция данныхинструментKettle、Sqoop、DataXиз Сравнивать https://www.cnblogs.com/bayu/articles/13335917.html
(5) Сравнение Datax и Sqoop https://blog.csdn.net/lzhcoder/article/details/107902791
(6) Сравнение Datax и Kettle https://blog.csdn.net/lzhcoder/article/details/120830522
(7) Чтобы получить очень подробное представление о Canal, просто прочитайте эту статью! https://blog.csdn.net/yehongzhi1994/article/details/107880162