Sqoop数据迁移

一、sqoop概述

1、简介

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

2、原理

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop

二、sqoop的安装配置

1、下载

hadoop数据导入传统数据库导入 hadoop数据迁移工具_sqoop_02


hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_03


hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_04


hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_05


hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_06

2、上传服务器

hadoop数据导入传统数据库导入 hadoop数据迁移工具_sqoop_07

3、解压

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_08


hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_09

4、配置

标准的apach项目文件

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_10


将模板配置文件拷贝一份

cp sqoop-env-template.sh sqoop-env.sh

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_11


修改配置文件

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_12

5.测试

bin/sqoop list-databases \
  -connect jdbc:mysql://localhost:3306/ \
  --username root \
  --password root \

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_13

出现错误,无驱动包

6、解决错误

需要上传MySQL的java驱动包

hadoop数据导入传统数据库导入 hadoop数据迁移工具_sqoop_14

7、再次执行命令

bin/sqoop list-databases \
  -connect jdbc:mysql://hadoop01:3306/ \
  --username root \
  --password Root123! \

hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_15

三、sqoop指令介绍

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_16


hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_17

四、数据的导入

1、导入命令

bin/sqoop import \
  -connect jdbc:mysql://hadoop01:3306/azkaban \
  --username root \
  --password Root123! \
  --target-dir /azkaban/execution_logs \
  --table execution_logs \
  --num-mappers 1

2.启动hadoop

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_18

3.启动yarn

hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_19

4、执行命令

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_20


hadoop数据导入传统数据库导入 hadoop数据迁移工具_sqoop_21


在webUI上查看

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_22

五. Mysql表导入HDFS

1.数据准备

首先先新建一个目录

hadoop数据导入传统数据库导入 hadoop数据迁移工具_大数据_23


之后创建一个新的数据库

hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_24


hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_25


并且新建一个表格

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_26


并添加字段

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_27


插入数据

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_28

2.数据导入

将该表导入hdfs

bin/sqoop import \
  --connect jdbc:mysql://hadoop01:3306/sqoop \
  --username root \
  --password Root123! \
  --target-dir /sqoop/mysql_hdfs_append \
  --table salary \
  --num-mappers 1

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_29


在webUI上查看结果

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop数据导入传统数据库导入_30


hadoop数据导入传统数据库导入 hadoop数据迁移工具_big data_31

六. Mysql表数据子集导入

bin/sqoop import \
  --connect jdbc:mysql://hadoop01:3306/sqoop \
  --username root \
  --password Root123! \
  --where "jobtittle='Java工程师'"\
  --target-dir /sqoop/where \
  --table salary \
  --num-mappers 1

hadoop数据导入传统数据库导入 hadoop数据迁移工具_大数据_32


在webUI上查看运行结果

hadoop数据导入传统数据库导入 hadoop数据迁移工具_hadoop_33