数据迁移工具Sqoop

2020-04-11 10:39:28 浏览数 (1)

熬过去,出众。

熬不过,出局。

这是最真实的人生,人都是熬过来的。

Sqoop 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,它是Hadoop环境下连接关系数据库与Hadoop存储系统的桥梁,支持多种关系型数据源和Hive、HDFS、Hbase的相互导入。支持全表导入,也支持增量数据导入机制,Sqoop工作机制利用MapReduce分布式批处理,加快了数据传输速度和容错性。

选择Sqoop理由:

1、可以高效的利用资源,可以通过调整任务数来控制任务的并发度。

2、可以自动地完成数据类型映射与转换。导入的数据是有类型的,它可以自动根据数据库中的类型转换到Hadoop中,当然也可以自定义他们的映射关系。

3、它支持多种数据库,eg:mysql、Oracle、PostgreSQL。

Sqoop工作原理:

Sqoop利用MapReduce并行特点以批处理的方式加快数据传输,从而提供并发特征和容错。Sqoop主要通过jdbc连接关系型数据库,理论上只有关系型数据库支持JDBC都可以使用Sqoop与HDFS进行数据交互。

1、Sqoop从关系型数据库导入HDFS的原理:用户先输入一个Sqoop import 命令,Sqoop会从关系型数据库中获取元数据信息,包括库信息、表有哪些字段及字段类型等,获取信息后会将导入命令转换为基于Map的MapReduce任务。会开启很多map任务,每个map任务读取一部分数据,多个map任务并行完成数据复制到HDFS分布式文件系统上。

2、Sqoop导出功能原理:用户输入export命令,Sqoop会获取关系型数据表结构信息,建立与Hadoop字段有关系型数据库表字段的映射关系,将命令转换为基于Map的MapReduce作用,生产很多Map任务,并行地从HDFS中读取数据文件,将这个数据复制到数据库中。

Sqoop版本和架构

Sqoop存在两个版本,1.4.x和1.99.x,通常简称为sqoop1和sqoop2

Sqoop1架构师使用Sqoop客户端直接提交的方式,访问方式是CLI控制台方式进行访问,在命令或脚本中指定数据库名及密码。

Sqoop2架构引入了Sqoop Server,集中化管理Connector,提供多种访问方式,如CLI、Web UI、REST API,同时Sqoop2通过CLI方式访问会有一个交互式界面,使输入的密码信息不被看到。

Sqoop不仅可以用于关系型数据库与HDFS文件系统之间进行数据转换,也可以将数据从关系型数据库传输至Hive或Hbase,而对于数据从Hive或者Hbase 传输到关系型数据库来说,则可以从Hive或者Hbase将数据提取至HDFS,然后使用Sqoop将上一步的输出导入到关系数据库。

使用Sqoop增量导入有append 和 lastmodified两种模式,lastmodified模式区别于apend是可以指定一个时间戳字段,按时间顺序导入,这个模型可以指定增量数据在HDFS的方式,比如最终增量结果为一个文件。

需要在应用的主要参数:

-check-column:指定增量导入的依赖字段,通常为自增的主键id或者时间戳

-incremental:指定导入模式(append 或者lastmodified)

-last-value:指定导入的上次最大值,也是这次的开始值。

0 人点赞