赞
踩
在实习过程中,遇到了数据库迁移项目,对于数据仓库,大数据集成类应用,通常会采用ETL工具辅助完成,公司和客户使用的比较多的是Sqoop, DataX和Kettle这三种工具。简单的对这三种ETL工具进行一次梳理。
ETL工具,需要完成对源端数据的抽取(exat), 交互转换(transform), 加载(load)至目标端的过程。
Sqoop, SQL to Hadoop, 可以实现SQL 和Hadoop之间的数据转换。
Apache开源的一款在Hadoop和关系数据库服务器之间传输数据的工具,可以将一个关系型数据库(MySQL, Oracle等)中的数据库导入到Hadoop中的HDFS中,也可以将HDFS的数据导出到关系数据库中。
Sqoop命令的底层就是转化为MapReduce程序。 Sqoop分为import和export,策略分为table和query,模式分为增量和全量。
Sqoop支持全量数据导入和增量数据导入,增量数据导入又可以分为两种,一是基于递增列的增量式数据导入(Append),而是基于时间列的增量数据导入(LastModified),另外还可以指定数据是否以并发形式导入。
DataX是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源,以此实现新数据源与已有数据源之间的无缝数据同步。
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象为Reader和Writer插件,纳入到整个同步框架中。
一款国外开源免费的,可视化的,功能强大的ETL工具,纯Java编写,主流系统上都可以运行,数据抽取高效稳定,支持各种数据源,如关系型数据库、NoSQL、文件。
Kettle现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成。
kettle的执行分为两个层次:
简单理解, 一个转换(Trans)就是一个ETL的过程,而作业(Job)是多个转换的集合, 在作业中可以对转换或作业进行调度,定时任务。
核心组件
功能 | DataX | Sqoop |
---|---|---|
运行模式 | 单进程 多线程 | MR |
分布式 | 不支持 | 支持 |
流控 | 有流控功能 | 没有 |
统计信息 | 有部分统计,上报需定制 | 没有 |
数据校验 | 在core部分有 | 没有,分布式数据收集不方便 |
监控 | 需要定制 | 需要定制 |
功能 | DataX | Kettle |
---|---|---|
数据源 | 少数关系型数据库和大数据非关系型数据库 | 多数关系型数据库 |
底层架构 | 支持单机部署和集群部署两种方式 | 主从结构非高可用,扩展性差,架构容错性低,不适用大数据场景 |
CDC机 | 离线批处理 | 基于时间戳、触发器等 |
对数据库的影响 | 通过sql select 采集数据,对数据源没有侵入性 | 对数据库表结构有要求,存在一定侵入性 |
数据清洗 | 需要根据自身清晰规则编写清洗脚本,进行调用(DataX3.0 提供的功能)。 | 围绕数据仓库的数据需求进行建模计算,清洗功能相对复杂,需要手动编程 |
抽取速度 | datax对于数据库压力比较小 | 小数据量的情况下差别不大,大数据量时datax比kettle快。 |
社区活跃度 | 阿里开源,社区活跃度低 | 开源软件,社区活跃度高 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。