大数据ETL工具对比(Sqoop, DataX, Kettle)

news2024/11/16 1:40:42

前言

在实习过程中,遇到了数据库迁移项目,对于数据仓库,大数据集成类应用,通常会采用ETL工具辅助完成,公司和客户使用的比较多的是Sqoop, DataXKettle这三种工具。简单的对这三种ETL工具进行一次梳理。
ETL工具,需要完成对源端数据的抽取(exat), 交互转换(transform), 加载(load)至目标端的过程。

1. Sqoop

1.1 介绍

Sqoop, SQL to Hadoop, 可以实现SQLHadoop之间的数据转换。
Apache开源的一款在Hadoop关系数据库服务器之间传输数据的工具,可以将一个关系型数据库(MySQL, Oracle等)中的数据库导入到Hadoop中的HDFS中,也可以将HDFS的数据导出到关系数据库中。
Sqoop命令的底层就是转化为MapReduce程序。 Sqoop分为importexport,策略分为tablequery,模式分为增量全量
在这里插入图片描述

Sqoop支持全量数据导入增量数据导入,增量数据导入又可以分为两种,一是基于递增列的增量式数据导入(Append),而是基于时间列的增量数据导入(LastModified),另外还可以指定数据是否以并发形式导入。

1.2 特点

  1. 可以将关系型数据库中的数据导入hdfshive或者hbase等组件中,也可以将hadoop组件中的数据导入到关系型数据库中。
  2. Sqoop采用map-reduce计算框架,根据输入条件生成一个map-reduce作业,在hadoop集群中运行。可以在多个节点进行import或者export操作,速度比单节点运行多个并行导入导出效率高,有良好的并发性和容错性。

2. DataX

2.1 介绍

DataX是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源,以此实现新数据源与已有数据源之间的无缝数据同步。
在这里插入图片描述
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象为ReaderWriter插件,纳入到整个同步框架中。

  • Reader: 数据采集模块,负责采集数据源的数据,将数据发送给Framework。
  • Writer: 数据写入模块, 负责不断向Framework取数据,并将数据写入到目的端。
    在这里插入图片描述

2.2 特点

  1. 异构数据库和文件系统之间的数据交换
  2. 采用Framework+plugin架构构建,Framework处理了缓冲,流控,并发,上下文加载等高速数据交换的大部分技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问。
  3. 数据传输过程在单进程内完成,全内存操作。
  4. 拓展性强,开发者可以开发一个新插件支持新的数据库文件系统。

3. Kettle

3.1 介绍

一款国外开源免费的,可视化的,功能强大的ETL工具,纯Java编写,主流系统上都可以运行,数据抽取高效稳定,支持各种数据源,如关系型数据库、NoSQL、文件。
Kettle现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成。
kettle的执行分为两个层次:

  • Transformatiobn:完成对数据的基本转换。
  • Job: 完成整个工作流的控制。

在这里插入图片描述

简单理解, 一个转换(Trans)就是一个ETL的过程,而作业(Job)是多个转换的集合, 在作业中可以对转换或作业进行调度,定时任务。

核心组件

  • Spoon是一个可视化的EPL设计工具,用户可以使用Spoon中的可视化界面来创建源、目标和转换的连接,以及定义数据集成的转换和逻辑。
  • Pan:运行转换的命令工具。
  • Kitchen: 运行作业的命令工具。
  • Carte: 轻量级别的Web容器,用于建立专用、远程的ETL Server。

3.2 特点

  1. 免费开源,可跨平台(因为是纯java编写)
  2. 图形界面设计,无需写代码
  3. 两种脚本文件,trans负责数据转化,job负责整个工作流的调度控制。
  4. 支持作业调度和监控,可以自动化执行数据集成任务。

4. 工具对比

DataX 与 Sqoop

功能DataXSqoop
运行模式单进程 多线程MR
分布式不支持支持
流控有流控功能没有
统计信息有部分统计,上报需定制没有
数据校验在core部分有没有,分布式数据收集不方便
监控需要定制需要定制
功能DataXKettle
数据源少数关系型数据库和大数据非关系型数据库多数关系型数据库
底层架构支持单机部署和集群部署两种方式主从结构非高可用,扩展性差,架构容错性低,不适用大数据场景
CDC机离线批处理基于时间戳、触发器等
对数据库的影响通过sql select 采集数据,对数据源没有侵入性对数据库表结构有要求,存在一定侵入性
数据清洗需要根据自身清晰规则编写清洗脚本,进行调用(DataX3.0 提供的功能)。围绕数据仓库的数据需求进行建模计算,清洗功能相对复杂,需要手动编程
抽取速度datax对于数据库压力比较小小数据量的情况下差别不大,大数据量时datax比kettle快。
社区活跃度开源软件,社区活跃度高阿里开源,社区活跃度低

总结

  1. DataX和Kettle都是通用的数据集成工具,支持多种数据源和目标,提供了强大的数据转换和清洗功能。
  2. DataX和Kettle的区别在于开发者和用户群体,DataX在阿里巴巴内部得到广泛应用,而Kettle则是一个独立的开源项目。
  3. Sqoop主要用于Hadoop和关系型数据库之间的数据传输,适用于大规模数据的导入导出任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无法更新iPhone,提示“无法检查更新”怎么办?

当我们需要 iPhone更新系统时,可以前往iPhone设置-通用-软件更新中获取更新推送。不过一些用户可能会遇到无法更新的问题,例如会提示“无法检查更新,检查软件更新时出错”。 以上情况可能是网络问题,可以尝试重新打开设置&#xf…

vue2实现公式规则编辑校验弹窗功能

文章目录 需求描述技术栈最终效果演示功能实现逻辑拆分代码目录结构实现思路光标实现底部单个符号或字段结构设计监听键盘事件&处理光标公式规则校验 总结 需求描述 需要一个弹窗,弹窗内部需要能够进行公式规则的配置并进行公式规则合法性校验。 技术栈 vue2e…

Thymeleaf的常用语法

🌟 Thymeleaf的常用语法 Thymeleaf是一个Java模板引擎,用于处理HTML、XML、JavaScript、CSS等文件。它可以与Spring框架无缝集成,为Web应用程序提供优雅的模板解决方案。本文将介绍Thymeleaf的常用语法,包括th属性、表达式、内置…

Spring Boot 中的 @RestController 注解,如何使用

Spring Boot 中的 RestController 注解 在 Spring Boot 中,我们经常需要编写 RESTful Web 服务,以便于客户端与服务器之间的通信。为了简化 RESTful Web 服务的开发,Spring Boot 提供了 RestController 注解,它可以让我们更方便地…

Jmeter实现参数加密

目录 一、使用__digest自带函数 以md5加密算法演示使用方法 二、在BeanShell 中使用JAVA代码实现算法加密 规避BUG的方法 JMeter有两种方法可以实现算法加密 一、使用__digest自带函数 参数说明: Digest algorithm:算法摘要,可输入值&a…

如何避免在处理数据时出现错误?

介绍 当业务运营管道中发生大量事情时,数据输入任务的优先级往往较低。但是,数据输入被认为是所有行业部门中经常发生的最重要的任务之一。从销售数据到客户分析,从财务数据到库存管理,每项工作都依赖于数据输入,这意…

前端vue入门(纯代码)16

【18.如何在Vue中配置代理服务器】 vue脚手架配置代理总结:修改了vue.config.js文件后必须重启项目【npm run serve】 方法一 ​ 在vue.config.js中添加如下配置: devServer:{proxy:"http://localhost:5000" }说明: 优点&#…

家政上门预约小程序;

家政上门预约小程序开发是一款本地生活类服务上门预约系统,覆盖家政保洁、保姆月嫂、上门维修、管道疏通、上门安装等各种到家服务。可以帮助创业者在不需要相关技术人员及大量资金投入的情况下,就能够轻松搭建并运营一个上门家政服务平台。 那么开发一…

【零基础入门学习Python---Python错误处理和异常保姆级教程】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【图像处理OpenCV(C++版)】——5.3 图像平滑之均值平滑(滤波)

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

Flutter学习四:Flutter开发基础(一)Widget

目录 0 引言 1 Widget 简介 1.1 Widget 概念 1.2 Widget 接口 1.3 Flutter中的四棵树 1.4 StatelessWidget 1.4.1 简介 1.4.2 Context上下文 1.5 StatefulWidget 1.6 State 1.6.1 简介 1.6.2 State生命周期 1.7 在 widget 树中获取State对象 1.7.1 通过Context…

详解如何使用nvm管理Node.js多版本

目录 NVM进行NodeJS多版本管理 背景 安装步骤 1. 下载nvm安装包 2. 安装nvm 使用步骤 下载nodejs 切换版本nodejs ​编辑 常用命令 NVM进行NodeJS多版本管理 背景 有的时候开发环境需要多个NodeJS的版本,这个时候就可以用NVM进行管理。 安装步骤 1. 下载n…

9 从0开始学PyTorch | 过拟合欠拟合、训练集验证集、关闭自动求导

这一小节在开始搞神经网络之前,我们先熟悉几个概念,主要还是把模型训练的流程打通。 过拟合和欠拟合 我们在日常的工作中,训练好的模型往往是要去评价它的准确率的,通过此来判断我们的模型是否符合我的要求。 几个可能的方案是&…

国外学位论文去哪里查找下载

查找下载国外博士论文最合适的文献数据库就是ProQuest学位论文全文数据库。 ProQuest学位论文全文数据库覆盖了大部分北美地区高等院校以及世界其他地区数千个高等院校每年获得通过的博硕士论文。是将ProQuest公司PQDD文摘库(现名PQDT)中适合中国科研人…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2023)

Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2023 年 6 月更新) 在虚拟机、Mac 电脑和 TPM 不符合要求的旧电脑上安装 Windows 11 的通用方法总结 请访问原文链接:https://sysin.org/blog/windows-11-no-tpm/,查看最新版。原创作品…

nuxt3 多级动态路由

需求: 写法: 对应 文件目录 pages\product\[class]\[brand]\[SPU].vue pages/ --| product/ ----| [class] ------| [brand] --------| [SPU].vue script 内跳转方法 const router useRouter() const nuxtApp useNuxtApp()const jumpSPU () >…

caffeine和google-guava cache缓存使用详解和源码介绍

google-guava cache 1.pom引入其依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency> 2.具体使用 com.google.common.cache.LoadingCache<Strin…

【selenium】问题记录

1、驱动和浏览器版本不一致 报错&#xff1a;selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 106 问题原因&#xff1a; chrome版本114&#xff0c;Chromedriver版本106 …

机器学习之深度神经网络

目录 卷积神经网络与全连接神经网络 前向后向传播推导 通用手写体识别模型 人脸识别模型 电影评论情感分析模型 卷积神经网络与全连接神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;和全连接神经网络&#xff08;Fully Conn…

Django学习笔记-用户名密码登录

笔记内容转载自 AcWing 的 Django 框架课讲义&#xff0c;课程链接&#xff1a;AcWing Django 框架课。 CONTENTS 1. 扩充Django数据库2. 实现获取用户信息3. 渲染登录与注册界面4. 实现登录与登出功能5. 实现注册功能6. 修改获取用户信息 1. 扩充Django数据库 首先我们先在 s…