当前位置: 代码网 > it编程>数据库>Mysql > 【Hadoop】通过Sqoop实现从MySQL导入数据到HDFS

【Hadoop】通过Sqoop实现从MySQL导入数据到HDFS

2024年07月31日 Mysql 我要评论
一文带你了解MySQL通过Sqoop导入数据到Hdfs的详细过程。

一、前言

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

事情是这样的:要实现从关系型数据库(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 目录下

  • 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

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

至此,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

五、导入mysql数据到hdfs

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

5.1 准备mysql数据

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

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

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

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

  • 3.查看表及数据

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

四张表和数据均正常,至此,我们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官网

**啊?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,有可能是他确实已经够成熟了

七、结语

这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 本文由初心原创,首发于csdn博客, 博客主页:🏠
🍻 理想主义的花,终究会盛开在浪漫主义的土壤里!😍
🏠 我在csdn等你哦!😍

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com