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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 大数据 | (五)通过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等你哦!😍


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
存储 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
本文全面剖析数据库课程设计 MySQL,展现其奇幻魅力与严峻挑战。通过实际案例凸显数据库设计重要性,详述数据安全要点及学习目标。深入阐述备份与恢复方法,并分享优秀实践项目案例。为开发者提供 MySQL 数据库课程设计的全面指南,助力提升数据库设计与管理能力,保障数据安全稳定。
大数据新视界--大数据大厂之MySQL 数据库课程设计:开启数据宇宙的传奇之旅
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
|
6月前
|
关系型数据库 MySQL 数据安全/隐私保护
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
本文深入探讨数据库课程设计 MySQL 的数据安全。以医疗、电商、企业案例,详述用户管理、数据加密、备份恢复及网络安全等措施,结合数据安全技术发展趋势,与《大数据新视界 -- 大数据大厂之 MySQL 数据库课程设计》紧密关联,为 MySQL 数据安全提供全面指南。
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
|
6月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
6月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
6月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
7月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
657 70
|
12月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
443 6
|
12月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
171 3

热门文章

最新文章

推荐镜像

更多