大数据技术之Hadoop(十)——Sqoop数据迁移

目录

一、Sqoop概述

1、Sqoop认识

2、Sqoop原理

(1)导入原理

(2)导出原理

二、Sqoop安装配置

1、下载安装

2、MySQL配置启动

3、配置Sqoop环境

4、Sqoop 效果测试

 三、Sqoop数据导入

1、MySQL表数据导入HDFS

2、MySQL表数据增量导入 HDFS

3、MySQL表数据导入Hive

4、MySQL表数据子集导入 

四、Sqoop 数据导出

参考书籍


一、Sqoop概述

1、Sqoop认识

        Sqoop 是 Apache 旗下的一款开源工具,该项目开始于2009年,最早是作为 Hadoop 的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速迭代开发,在2013年,独立成为 Apache 的一个顶级开源项目。

        Sqoop 主要用于在 Hadoop 和关系数据库或大型机器之间传输数据,可以使用 Sqoop 工具将数据从关系数据库管理系统导入到 Hadoop 分布式文件系统中,或者将 Hadoop 中的数据转换导出到关系数据库管理系统。

        目前 Sqoop 主要分为 Sqoop1 和 Sqoop2 两个版本,其中版本号为 1.4.x 属于Sqoop1,而版本号 1.99.x 属于 Sqoop2。这两版本开发时的定位方向不同,体系结构具有很大的差异,因此它们之间互不兼容。

        Sqoop1 功能结构简单,部署方便,提供命令行操作方式,主要适用于系统服务管理人员进行简单的数据迁移操作;Sqoop2 功能完善、操作简便,同时支持多种访问模式(命令行操作、Web 访问和 Rest API),引入角色安全机制增加安全性等多种优点,但是结果复杂,配置部署更加繁琐。

2、Sqoop原理

        Sqoop是传统关系数据库服务器与Hadoop间进行数据同步的工具,其底层利用 MapReduce 并行计算模型以批处理方式加快了数据传输速度,并且具有较好的容错性功能。

        通过客户端CLI(命令行界面)方式或Java API方式调用 Sqoop 工具,Sgoop可以将指令转换为对应的 MapReduce作业(通常只涉及Map任务,每个Map任务从数据库中读取一片数据,这样多个 Map 任务实现并发地复制,可以快速地将整个数据复制到 HDFS上),然后将关系数据库和 Hadoop中的数据进行相互转换,从而完成数据的迁移。

        可以说,Sqoop是关系数据库与 Hadoop 之间的数据桥梁,这个桥梁的重要组件是 Sqoop 连接器,它用于实现与各种关系数据库的连接,从而实现数据的导人和导出操作。 Sqoop连接器能够支持大多数常用的关系数据库,如MySQL、Oracle、DB2 和 SQL Server等,同时它还有一个通用的 JDBC 连接器,用于连接支持JDBC协议的数据库。

(1)导入原理

        在导人数据之前,Sqoop 使用 JDBC 检查导人的数据表,检索出表中的所有列以及列的 SQL 数据类型,并将这些 SQL 类型映射为 Java 数据类型,在转换后的 MapReduce 应用中使用这些对应的 Java 类型来保存字段的值,Sqoop 的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。

(2)导出原理

        在导出数据之前,Sqoop 会根据数据库连接字符串来选择一个导出方法,对于大部分系统来说,Sqoop 会选择 JDBC。Sqoop 会根据目标表的定义生成一个 Java 类,这个生成的类能够从文本中解析出记录数据,并能够向表中插入类型合适的值,然后启动一个 MapReduce 作业,从 HDFS 中读取源数据文件,使用生成的类解析出记录,并且执行选定的导出方法。

二、Sqoop安装配置

1、下载安装

将sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz下载到/export/software/目录下。

        官网地址

http://sqoop.apache.org/icon-default.png?t=MBR7http://sqoop.apache.org/      

          sqoop-1.4.7载地址

http://archive.apache.org/dist/sqoop/1.4.7/

你可能感兴趣的:(大数据技术之Hadoop学习,大数据,hadoop,sqoop)