大数据 | (五)通过Sqoop实现从MySQL导入数据到HDFS

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 大数据 | (五)通过Sqoop实现从MySQL导入数据到HDFS

74076a32c0a64a10b4883b549ce51c11.png


一、前言


各位CSDN的朋友们大家好!这篇文章是在困扰了我三天(甚至更久),经过不断尝试与踩坑总结出来的通过 Sqoop 从Mysql数据库导入数据到 Hadoop hdfs 的详细笔记与感想,希望能帮助到大家!本篇文章收录于 初心大数据 专栏。


🏠 个人主页:初心%个人主页

🧑 个人简介:大家好,我是初心,和大家共同努力

💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺🍺🍺

💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘


事情是这样的:要实现从关系型数据库(RDBMS)导入数据到数据仓库中(比如说Hive、HBase等),就要借助 Hadoop 集群的 Hdfs 来实现,而数据要从关系型数据库(这里以MySQL为例)到 hdfs ,则需要借助 Sql to Hadoop 工具,也就是本篇文章的主角——Sqoop。


二、导入前的准备


2.1 Hadoop集群搭建


上面我们提到,要导入数据到 Hdfs ,那么 Hdfs 我们肯定得有吧?于是我们首先就得有 Hadoop 集群,Hadoop集群搭建,大家可以参考我的这篇文章,这里就不再重复讲啦, Hadoop集群搭建(完全分布式)。


2.2 Hadoop启停脚本


在使用Hadoop集群的过程中,我们不可避免的遇到一个问题:


当我们一打开虚拟机,总是要在 NameNode 节点上启动 Hdfs ,在 ResourceManager 节点上启动 yarn ,关闭的时候也是,这可能是一个烦人的操作!有没有能够让我们在一个节点上,执行一个命令,就可以把 Hdfs 、yarn以及历史服务器打开呢?答案是有! ,大家可以参考我的这篇文章——Hadoop启停脚本分享Hadoop启停脚本笔记。


三、docker安装MySQL


使用Docker安装MySQL,我本来是打算放在这里的,但是因为文章较为详细,放在此处使得可阅读性有所下降,所以我将笔记放在了另外一篇文章,供大家参考!点击查看Docker安装MySQL


四、安装Sqoop


4.1 Sqoop准备

  • 1.将Sqoop压缩包上传到 Hadoop102的/opt/software 目录下

e77a6023f5ec458fac8012b62c3578b3.png


  • 2.解压到 /opt/module 目录下
tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/


  • 3.将Sqoop重命名
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6 sqoop


  • 4.重命名Sqoop的模板文件

进入到Sqoop的conf目录下,将sqoop-env-template.sh重命名。

mv sqoop-env-template.sh sqoop-env.sh


  • 5.在Sqoop的配置文件末尾添加上Hadoop_Home目录
vim /opt/module/sqoop/conf/sqoop-env.sh
# hadoop_home
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3


c9ff6c89d2324163bac62f533f46f2fe.png


  • 6.上传jdbc的jar包到Sqoop的lib目录下


f44a46ec6273413e94bb59dcb99ed934.png

至此,Sqoop的安装工作我们就准备好了!接下来我们来测试Sqoop是否能正常连接到MySQL。


4.2 Sqoop连接Mysql数据测试


通过在Sqoop安装目录下,执行以下命令,如果能够显示MySQL数据库中的所有数据库,那么证明Sqoop可以和Mysql正常通信,即代表安装成功。

  • 1.进入到Sqoop安装目录
cd /opt/module/sqoop/
  • 2.执行以下命令测试
bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3307/ --username root --password sky


186eb5a1aa1247be8ac8495e5e072dd4.png


五、导入MySQL数据到hdfs


现在,我们所有的准备工作都已经准备好了!Hadoop集群的 hdfs,yarn,历史服务器,MySQL数据库,Sqoop工具,现在我们就可以开始从MySQL导入数据到 hdfs 了。


5.1 准备MySQL数据


  • 1.在Navicat中新建数据库mysql_to_hive

e69a5fa5331d4670a924c0673a42a01b.png


  • 2.在mysql_to_hive数据库执行 sql 文件

SQL文件我放在了百度网盘上,点击即可下载。


执行完gmall_report.sql之后,我们的mysql_to_hive数据库就会新建四张表,分别是order_by_province,order_spu_stats,order_total,user_total,并且插入了一些数据。


3.查看表及数据


185afd5c26eb40eebc589b072d79da34.png


这是order_by_province表中的部分数据展示。

bff958937cf64651baf0cba5890a667a.png



四张表和数据均正常,至此,我们MySQL的数据就准备好了!


5.2 导入数据


首先进入到Sqoop的安装目录:

cd /opt/module/sqoop/


从Sqoop导入全部数据,我们只需要执行以下命令即可。

在执行下面的代码之前,如果你的MySQL不是在hadoop102上,需要修改;用户名和密码也是以自己的为准。

  • 导入表order_by_province
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3307/mysql_to_hive \
--username root \
--password sky \
--target-dir /mysql/gmall_report/order_by_province \
--table order_by_province \
--num-mappers 1 \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 5 \
--bindir /opt/module/sqoop/lib \
--split-by dt
  • 导入表order_spu_stats
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3307/mysql_to_hive \
--username root \
--password sky \
--table order_spu_stats \
--target-dir /mysql/gmall_report/order_spu_stats \
--num-mappers 1 \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 5 \
--bindir /opt/module/sqoop/lib \
--split-by dt


  • 导入表order_total
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3307/mysql_to_hive \
--username root \
--password sky \
--table order_total \
--target-dir /mysql/gmall_report/order_toal \
--num-mappers 1 \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 5 \
--bindir /opt/module/sqoop/lib \
--split-by dt


  • 导入表user_total
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3307/mysql_to_hive \
--username root \
--password sky \
--table user_total \
--target-dir /mysql/gmall_report/user_toal \
--num-mappers 1 \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 5 \
--bindir /opt/module/sqoop/lib \
--split-by dt


至此,通过Sqoop实现从MySQL导入数据到 Hdfs 就结束了!希望这篇文章对你有帮助。


六、Sqoop现状


讲完了Sqoop导入MySQL数据到Hdfs,接下来我们再聊聊些别的,首先看一下下面这张图片(来源于Apache Sqoop官网)Sqoop官网:

a32aca33af434b56877a653b397a321d.png



**啊?Sqoop要退役了吗?这不科学啊,这么好用的工具,怎么就退役了呢。**仔细看了下,原来Apache Sqoop在2021年6月就已经进入Attic了,就是最近的事情。


不过,「Attic」(英文翻译是阁楼,有些束之高阁的意思了)是啥啊?并没有听说过,进入到Attic的项目会咋样?,我们继续探索下。


Apache Attic原来就相当于Apache的小黑屋,如果Apache托管的项目长时间不活跃(超过2年没有release新版本,没有committer、contributer并且没有未来roadmap),就会选择将项目移动到Attic中,这也就相当于Apache的项目管理了,掌管整个项目的生命周期。


目前将Sqoop做数据迁移工具公司不在少数,当Sqoop移动到Attic后,单单使用来说是完全不受影响的;Apache Attic依旧会提供代码库的下载;但是不会再修复任何的bug,release新版本了,并且也不会再重启社区。


看到这里其实就没有这么慌了,我们还能继续用,不过如果遇到问题,我们只能自己建个分支去fix了,从侧面来说,也能说明Sqoop在某个角度是成功的,毕竟曾经成为Apache顶级项目,如果真的是长时间没有release,有可能是他确实已经够成熟了。


七、结语


😎 本文主要讲解了如何通过Sqoop将RDBMS的数据导入到 Hdfs ,导入到了 Hdfs 之后,我们可以导入数据到数据仓库(HBase、Hive等),进行大数据的下一步学习啦!😊


这就是今天要分享给大家的全部内容了,我们下期再见!😊

🏠 本文由初心原创,首发于CSDN博客, 博客主页:初心%🏠

🍻 理想主义的花,终究会盛开在浪漫主义的土壤里!😍

🏠 我在CSDN等你哦!😍


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
【2月更文挑战第14天】DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
59 8
|
3月前
|
关系型数据库 MySQL Serverless
高顿教育:大数据抽数分析业务引入polardb mysql serverless
高顿教育通过使用polardb serverless形态进行数据汇总,然后统一进行数据同步到数仓,业务有明显高低峰期,灵活的弹性伸缩能力,大大降低了客户使用成本。
|
1月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
95 7
|
3月前
|
存储 关系型数据库 MySQL
Mysql 存储大数据量问题
Mysql 存储大数据量问题
96 1
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
59 0
|
2月前
|
SQL 分布式计算 关系型数据库
Dataphin实现MaxCompute外表数据快速批量同步至ADB MySQL
当前大数据时代背景下,企业对数据的处理、分析和实时应用的需求日益增强。阿里云MaxCompute广泛应用于海量数据的ETL、数据分析等场景,但在将处理后的数据进一步同步至在线数据库系统,如ADB MySQL 3.0(阿里云自研的新一代云原生关系型数据库MySQL版)以支持实时查询、业务决策等需求时,可能会遇到数据迁移速度缓慢的问题。 DataphinV3.14版本支持外表导入SQL的带参调度,实现通过MaxCompute外表的方式将数据批量同步至ADB MySQL 3.0中,显著提升数据迁移的速度和效率。
286 1
|
4月前
|
SQL 分布式计算 Hadoop
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
|
4月前
|
关系型数据库 MySQL 大数据
程序员小sister的烦恼_快速上手大数据ETL神器Kettle(xls导入mysql)
程序员小sister的烦恼_快速上手大数据ETL神器Kettle(xls导入mysql)
53 0
|
2月前
|
分布式计算 DataWorks IDE
MaxCompute数据问题之忽略脏数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
47 0
|
2月前
|
SQL 存储 分布式计算
MaxCompute问题之下载数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0