主页 > 新闻资讯 > 大数据培训:Sqoop数据迁移过程

大数据培训:Sqoop数据迁移过程

作者:张老师 浏览次数: 2020-11-26 17:14
众所周知,在大数据技术生态当中,Sqoop工具主要是为数据迁移服务的,通过Sqoop可以将关系型数据库当中的数据和Hadoop集群当中的数据进行迁移,解决企业传统数据存储到Hadoop的传输难题。今天的大数据培训分享,我们就主要来讲讲Sqoop数据迁移过程。

大数据培训:Sqoop数据迁移过程

通常来说,使用Sqoop进行数据迁移,分为导入和导出。

导入数据:从MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;

导出数据:从Hadoop的文件系统中导出数据到关系数据库。

Sqoop作业执行过程

Sqoop作业的实质,其实是将导入或导出命令翻译成Mapreduce程序来实现。

抛开MR的执行过程,Sqoop执行时用到的关键类总共有5个,Initializer、Partitioner、Extractor、Loader、Destroyer。

Initializer:初始化阶段,源数据校验,参数初始化等工作;

Partitioner:源数据分片,根据作业并发数来决定源数据要切分多少片;

Extractor:开启extractor线程,根据用户配置从内存中构造数据写入队列;

Loader:开启loader线程,从队列中读取数据并抛出;

Destroyer:资源回收,断开sqoop与数据源的连接,并释放资源;

Sqoop作业进程,每次新建一个连接器都要实现上述5个类。

MapReduce执行过程

实际运行当中,结合MR的执行过程,一个Sqoop迁移作业流程如下:

初始化

1)作业初始化阶段,Sqoop Input Format读取给源端数据分片的过程

Sqoop Input Format的getSplits方法会调用Partitioner类的getPartitions方法

将返回的Partition列表包装到SqoopSplit中;

默认分片个数为10,这里每个Partition分片会交给一个Mapper执行。每个Mapper分别启动一个extractor线程和Loader线程迁移数据。

Mapper

2)作业执行阶段的Mapper过程

SqoopMapper包含了一个SqoopMapDataWriter类,

Mapper的run()调用Extractor.extract方法,该方法迭代的获取源端数据再调用DataWriter写入Context中。

Reducer

3)作业执行阶段的Reduce过程,

Sqoop Output Format Load Executor包装了Sqoop Ouput Format DataReader,Sqoop Record Writer,ConsumerThread三个内部类;

Sqoop Null Output Format调用get RecordWriter时创建一个线程:ConsumerThread;

ConsumerThread集成了Runnable接口,线程内部调用Loader.load(...)方法,该方法用DataReader迭代的从Context中读取出SqoopWritable,并将其写入一个中间数据格式再写入目的端数据库中。

关于大数据培训,Sqoop数据迁移过程,以上就为大家做了简单的介绍了。Sqoop作为一个数据迁移工具,解决了企业在转向大数据平台的过程中,所面临的Hadoop和关系型数据库之间数据传输问题,组件虽小,但是用处不小。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,本月正在招生中,课程大纲及试学视频,可联系客服获取!
热点排行
推荐文章
立即申请>>