Sqoop1的安装配置及入门案例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: Sqoop1的安装配置及入门案例

0x00 教程内容


  1. Sqoop的下载与解压
  2. Sqoop的配置及校验
  3. Sqoop的入门案例

说明:

1、Sqoop版本有1和2,这里教程是1版本

2、因为Sqoop其实跑的就是MapReduce作业,所以需要确保HDFS、YARN有没有安装配置成功

3、此教程演示导入MySQL数据到HDFS,所以需先安装好MySQL


0x01 Sqoop的下载与解压


1. 下载

a. 网站

http://www.apache.org/dyn/closer.lua/sqoop/1.4.7

image.png


b. 其他镜像下载

http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/

c. 这里统一下载(版本没有特别要求hadoop-2.6.0适用于2.7.x)

sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz


2. 解压

a. 上传安装包到master,并解压到~/bigdata


image.png


0x02 Sqoop的配置及校验


1. 配置Sqoop环境变量

a. 配置Sqoop环境变量

vi ~/.bash_profile

添加内容:

export SQOOP_HOME=/home/hadoop-sny/bigdata/sqoop-1.4.7.bin__hadoop-2.6.0
PATH=$PATH:$SQOOP_HOME/bin


使环境变量生效

source ~/.bash_profile

2. 校验Sqoop

a. 将Mysql的JDBC驱动jar包上传到$SQOOP_HOME/lib目录


image.png


b. 查看版本号(有则表示成功,警告信息可以忽略,还没有启动相关的组件而已)

sqoop version


image.png


c. 查看帮助列表(具体命令的帮助可再加命令,如:sqoop help list-databases

sqoop help


image.png


d. 通过Sqoop列出Mysql的数据库(命令可以参考上面help的提示)

前提:需要安装好Mysql(我安装在master机器,账号密码都是:root)

sqoop list-databases --connect jdbc:mysql://master:3306 --username root --password root


image.png


0x03 Sqoop的入门案例之MySQL到HDFS


1. 准备MySQL数据

a. 为了演示,我在MySQL里新建一张演示表:sny_teacher

CREATE TABLE `sny_teacher` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '教师表id',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
  `email` varchar(50) DEFAULT NULL COMMENT 'email',
  `wechat` varchar(50) DEFAULT NULL COMMENT '微信',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '最后一次更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_name_unique` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;


微信图片_20220618205840.png


b. 插入几条数据

INSERT INTO `sny_teacher` VALUES 
('1', 'shaonaiyi', '427338237BD929443EC5D48E24FD2B1A', 'shaonaiyi@163.com', 'shaonaiyi888', '2019-09-06 16:56:45', '2019-09-07 19:27:36'), 
('2', 'shaonaier', '427338237BD929443EC5D48E24FD2B1A', 'shaonaier@163.com', 'shaonaier888', '2019-09-06 16:56:46', '2019-09-07 19:27:37');


微信图片_20220618205859.png


2. 导入MySQL数据到HDFS

a. 启动HDFS和YARN(start-dfs.shstart-yarn.sh

image.png


b. 将Mysql中的sny_teacher表数据导入到HDFS中

sqoop import --connect jdbc:mysql://master:3306/sny --username root --password root --table sny_teacher

image.png


没有报错,但是我们没有指定导入数据到哪里,也没有其他的限制,均是使用默认的。


3. 校验是否导入成功

a. 查看HDFS上的数据

hadoop fs -ls /user/hadoop-sny/

hadoop fs -ls /user/hadoop-sny/sny_teacher


image.png


其实数据是默认放到了/user/用户名/表名这个路径下面的。


b. 继续查看里面的内容

hadoop fs -cat /user/hadoop-sny/sny_teacher/part-m-00000

hadoop fs -cat /user/hadoop-sny/sny_teacher/part-m-00001


image.png


4. 彩蛋之实现导入HDFS数据到Hive

a. 启动Hive客户端

hive

b. 在Hive中新建对应MySQL表sny_teacher的Hive表


CREATE DATABASE IF NOT EXISTS sny;
USE sny;
DROP TABLE IF EXISTS sny_teacher;
CREATE TABLE sny_teacher(
    id INT,
    username STRING,
    password STRING,
    email STRING,
    wechat STRING,
    create_time STRING,
    update_time STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
LOAD DATA INPATH 'hdfs://master:9999/user/hadoop-sny/sny_teacher' OVERWRITE INTO TABLE sny_teacher;


执行完此步骤,其实已经没有 hdfs://master:9999/user/hadoop-sny/sny_teacher 此文件夹了。

微信图片_20220618210013.png


0x04 Sqoop的入门案例之HDFS到MySQL


1. 准备HDFS数据

a. 因为刚刚将/user/hadoop-sny/sny_teacher是文件夹和数据都删除了,所以需要再导入一份进来

sqoop import --connect jdbc:mysql://master:3306/sny --username root --password root --table sny_teacher


2. 新建MySQL对应表

b. 在MySQL中新建sny_teacher1表,用于等下将HDFS上的数据导入到此表中:


 CREATE TABLE `sny_teacher1` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '教师表id',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
  `email` varchar(50) DEFAULT NULL COMMENT 'email',
  `wechat` varchar(50) DEFAULT NULL COMMENT '微信',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '最后一次更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_name_unique` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;


3. 从HDFS导出数据到MySQL

a. 从MySQL导出数据到HDFS上,默认是以逗号进行分割,所以此处是使用逗号


sqoop export  --connect jdbc:mysql://master:3306/sny  \
--username root  --password root  \
--table sny_teacher1  --m 1  \
--export-dir /user/hadoop-sny/sny_teacher/  \
--input-fields-terminated-by ','


0x05 Sqoop的入门案例之Hive到MySQL


1. 创建MySQL表
CREATE TABLE `sny_teacher2` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '教师表id',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
  `email` varchar(50) DEFAULT NULL COMMENT 'email',
  `wechat` varchar(50) DEFAULT NULL COMMENT '微信',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '最后一次更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_name_unique` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;


2. 导出Hive表中的数据到MySQL

a. Hive的默认存储路径为/user/hive/warehouse/sny.db/sny_teacher


sqoop export  --connect jdbc:mysql://master:3306/sny  \
--username root  --password root  \
--table sny_teacher2  --m 1  \
--export-dir /user/hive/warehouse/sny.db/sny_teacher  \
--input-fields-terminated-by ','


其实,导完后,Hive中还是有数据的。


0xFF 总结


更多教程,可参考:使用Sqoop导出MySQL数据到Hive(实战案例)

Sqoop1导入表数据命令的参数可以输入:sqoop help import 查看

如根据id进行分区:

sqoop import --connect jdbc:mysql://master:3306/movie --username root --password root --table movie --split-by id

还有其他参数,如:--target-dir、--warehouse-dir等等

在MySQL中添加几条数据,然后重新执行命令,以进行增量导入,如:sqoop import --connect jdbc:mysql://master:3306/sny --username root --password root --table sny_teacher --split-by id --check-column id --last-value 2 --incremental append


--check-column 核实数据类型
--last-value 上一次导入数据检查列的最大值
--incremental 增量导入的模式
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
分布式计算 关系型数据库 MySQL
Sqoop实操案例-互联网招聘数据迁移
Sqoop实操案例-互联网招聘数据迁移
93 0
|
3月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
165 7
|
SQL 分布式计算 Hadoop
使用Sqoop导出Mysql数据到Hive(实战案例)
使用Sqoop导出Mysql数据到Hive(实战案例)
524 0
使用Sqoop导出Mysql数据到Hive(实战案例)
|
SQL 大数据 关系型数据库
【Sqoop】(二)Sqoop 的简单使用案例
【Sqoop】(二)Sqoop 的简单使用案例
191 0
|
分布式计算 关系型数据库 MySQL
|
3月前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
207 2
|
数据采集 SQL 分布式计算
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
1294 0
|
2月前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
|
3月前
|
SQL Java 数据库
Sqoop【付诸实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)
【2月更文挑战第10天】Sqoop【付诸实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)
57 0
|
3月前
|
分布式计算 关系型数据库 Hadoop
使用Sqoop将数据从Hadoop导出到关系型数据库
使用Sqoop将数据从Hadoop导出到关系型数据库