【Hadoop大数据技术】——Sqoop数据迁移(学习笔记)

📖 前言:在实际开发中,有时候需要将HDFS或Hive上的数据导出到传统关系型数据库中(如MySQL、Oracle等),或者将传统关系型数据库中的数据导入到HDFS或Hive上,如果通过人工手动进行数据迁移的话,就会显得非常麻烦。为此,可使用Apache提供的Sqoop工具进行数据迁移。
在这里插入图片描述


目录

  • 🕒 1. Sqoop概述
    • 🕘 1.1 Sqoop简介
    • 🕘 1.2 Sqoop原理
  • 🕒 2. Sqoop安装配置
  • 🕒 3. 课后习题

🕒 1. Sqoop概述

🕘 1.1 Sqoop简介

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

在这里插入图片描述

目前Sqoop主要分为Sqoop1和Sqoop2两个版本,其中版本号为1.4.x属于Sqoop1,版本号为1.9.x属于Sqoop2。这两个版本的定位方向不同,体系结构具有很大的差异,它们之间互不兼容。Sqoop1相对于Sqoop2来说结构简单,易于部署和使用。

🕘 1.2 Sqoop原理

Sqoop是关系型数据库与Hadoop间进行数据同步的工具,其底层利用MapReduce并行计算模型以批处理方式加快数据传输速度,并且具有较好的容错性功能,以实现数据的导入和导出。在数据同步的过程中,MapReduce通常只涉及MapTask的处理,并不会涉及ReduceTask的处理,这是因为数据同步时,只涉及数据的读取与加载,并不会涉及到数据合并的操作。

在这里插入图片描述

导入原理:在导入数据之前,Sqoop使用JDBC检查导入的数据表,检索出表中的所有列以及列的SQL数据类型,并将这些SQL类型映射为Java数据类型,在转换后的MapReduce应用中使用这些对应的Java类型来保存字段的值,Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。

导出原理:在导出数据前,Sqoop会根据目标表的定义生成一个Java类,这个生成的类能够从文本中解析出记录数据,并能够向表中插入类型合适的值,然后启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析出记录,并且执行选定的导出方法。

🕒 2. Sqoop安装配置

1、Sqoop的下载
在Ubuntu下打开官网:🔎 Sqoop官网 进行下载,建议下载稳定版本 🔎 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

2、解压安装包sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 至路径 /opt,命令如下:

sudo tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt

3、将解压的文件夹重命名为sqoop并添加sqoop的权限

sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop
sudo chown -R hadoop:hadoop sqoop

4、修改配置文件
将/opt/sqoop/conf目录下的配置文件sqoop-env-template.sh复制一份,重命名为sqoop-env.sh,命令如下:

cd /opt/sqoop/conf
cp sqoop-env-template.sh sqoop-env.sh
sudo vim sqoop-env.sh

5、使用vim编辑器编辑sqoop-env.sh文件,找到Hadoop环境变量的配置说明,根据自己Hadoop和HBase路径,添加如下配置信息:

#Set Hadoop-specific environment variables here.
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop
#set the path to where bin/hbase is available
export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/hive
#Set the path for where zookeper config dir is
#export ZOOCFGDIR= # 如果自己配置了zookeeper,也需要在此配置zookeeper路径,没有就不用配置。

6、配置环境变量,使用vim编辑器打开.bashrc文件,在文件开头加入如下3行代码:

export SQOOP_HOME=/opt/sqoop
export CLASSPATH=$CLASSPASS:$SQOOP_HOME/lib
export PATH=$SQOOP_HOME/bin:$PATH

7、保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

8、添加mysql驱动程序。首先需要安装MySQL,前面章节已经完成该软件的安装,这里不再重复。然后需要将前面章节中已经下载的MySQL驱动程序mysql-connector-j-8.3.0.tar.gz解压缩后复制到$SQOOP_HOME/lib目录下。

sudo tar -zxvf mysql-connector-j-8.3.0.tar.gz
cp ./mysql-connector-j-8.3.0/mysql-connector-j-8.3.0.jar /opt/sqoop/lib

9、添加依赖包,使用Sqoop进行数据导入和数据导出的操作时,依赖于jar包commons-lang-2.6.jar和hive-common-3.1.3.jar,需要将改jar包上传到Sqoop安装目录的lib目录下。

🔎 commons-lang-2.6.jar

sudo tar -zxvf commons-lang-2.6-bin.tar.gz
cp ./commons-lang-2.6/commons-lang-2.6.jar /opt/sqoop/libcp /usr/local/hive/lib/hive-common-3.1.3.jar /opt/sqoop/lib

10、测试与MySQL的连接
首先保证MySQL服务已经启动,如果没有启动,请执行如下命令:

service mysql start

然后就可以测试Sqoop与MySql直接的连接是否成功,执行命令如下:

sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P

在这里插入图片描述
如果能够看到MySql数据库中的数据库列表,就表示Sqoop安装成功。例如,从上图给出的信息中就可以看到在最后几行包含了如下数据库列表:
mysql
information_schema
performance_schema
sys
hive

🕒 3. 课后习题

一、填空题
1、从数据库导入HDFS时,指定以制表符作为字段分隔符参数是_____________。

二、判断题
1、Sqoop是关系型数据库与Hadoop之间的数据桥梁,这个桥梁的重要组件是Sqoop连接器。
2、Sqoop从Hive表导出MySQL表时,首先需要在MySQL中创建表结构。
3、–target-dir参数是指定HDFS目标目录地址,因此需要提前创建目标文件。

三、选择题
1、下列选项参数是Sqoop指令的是?(多选)
A、import
B、output
C、input
D、export
2、下列语句描述错误的是()
A、可以通过CLI方式、Java API方式调用Sqoop
B、Sqoop底层会将Sqoop命令转换为MapReduce任务,并通过Sqoop连接器进行数据的导入导出操作。
C、Sqoop是独立的数据迁移工具,可以在任何系统上执行。
D、如果在Hadoop分布式集群环境下,连接MySQL服务器参数不能是localhost或127.0.0.1。

四、编程题
1、利用Sqoop将test数据库中的user表中id>5的用户导入到HDFS中的/user目录(user表字段:id,name)。
2、利用Sqoop将test数据库中的emp表导入Hive表hive.emp_test表中。

解答:
一、1、--fields-terminated-by '\t'

二、1、√ 2、√ 3、×

三、1、AD 2、C

四、1、
在这里插入图片描述

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test \
--username root \
--password 1111 \
--target-dir /user/sqoop \
--query 'SELECT id,name FROM user WHERE id>5 AND $CONDITIONS' \
--num-mappers 1 \
--bindir /opt/sqoop/lib

在这里插入图片描述

如果有如下报错,参考链接解决
在这里插入图片描述
🔎 使用sqoop将mysql数据上传至hdfs出现找不到类的问题

2、
在这里插入图片描述

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test \
--username root \
--password 1111 \
--table emp \
--hive-table hive_emp_test \
--create-hive-table \
--hive-import \
--num-mappers 1 \
--bindir /opt/sqoop/lib

在这里插入图片描述


OK,以上就是本期知识点“Sqoop数据迁移”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么看自己是不是公网IP?

当我们需要进行网络连接或者网络配置的时候,经常会遇到需要知道自己是否拥有公网IP的情况。公网IP是全球唯一的IP地址,在互联网上可直接访问和被访问,而私有IP则是在本地网络中使用,无法从互联网上直接访问。我们将介绍如何查看自…

笔记-----BFS宽度优先搜索

对于BFS:宽搜第一次搜到就是最小值,并且基于迭代,不会爆栈。 Flood Fill 模型 如果直译的话就是:洪水覆盖,意思就是像是从一个点一圈圈的往外扩散,如果遇见能够连通的就扩散,如果遇见无法联通的…

TCP三次握手,但通俗理解

如何用通俗的语言来解释TCP(传输控制协议)的三次握手过程? 想象一下你正在和朋友电话沟通,但你们之间不是心灵感应,而是需要通过清晰地听到对方的声音来确认通话质量良好。TCP三次握手就像是在电话拨通之前&#xff0…

爱普生发布一款16位MCU产品用于大电流LED驱动

精工爱普生发布一款内置Flash存储器的16位微控制器S1C17M13 该新品可以提供最大56mA的驱动电流用于驱动发光二极管(LED) 以往爱普生的微处理器大多继承了液晶驱动器电路,但近来随着工业自动化和家用设备使用7段LED显示的数量大幅增加,爱普生也推出了对应…

k8s:通过nodeSelector将pod调度到含有指定标签的结点上

一、查看node,并给node打标签 二、在资源清单文件中配置nodeSelector来指定要往满足哪个标签条件的结点进行调度 apiVersion: v1 kind: Pod metadata:name: probe-tcp spec:containers:- name: nginximage: nginxlivenessProbe:initialDelaySeconds: 5timeoutSeconds: 5tcpSo…

宝塔面板使用docker+nginx+gunicorn部署Django项目实战教程

第一步:创建Django项目 使用pip install django安装创建django项目的依赖在电脑某个根目录下执行django-admin startproject app创建一个名为app的Django项目。目录结构如下: ├── app │ ├── init.py │ ├── asgi.py │ ├── settings.py │ ├── url…

【海思Hi3516CV610】是面向新一代视频编解码标准、网络安全和隐私保护、人工智能行业应用方面的IPC SoC

海思Hi3516CV610是面向新一代视频编解码标准、网络安全和隐私保护、人工智能行业应用方面的IPC SoC,除了开发普通摄像机,还可以打造极具竞争力的枪球一体机、双目长短焦摄像机产品; 处理器内核: 支持ARM Cortex-A7 MP2 时钟速率950MHz 支持…

90年代女神返港行李失踪 怒斥国泰航空

现年51岁的童爱玲在1993年拍摄电影《火蝴蝶》入行,外形出众的她当年曾与梁朝伟、黎明等男神合作,因而被封为「男神磁石」。虽然童爱玲与台湾富商王敦民结婚诞下一子后,便淡出演艺圈,但她曾在2022年复出拍摄ViuTV剧集《季前赛》&am…

探索MATLAB在计算机视觉与深度学习领域的实战应用

随着人工智能技术的快速发展,计算机视觉与深度学习已成为科技领域中最热门、最具挑战性的研究方向之一。 它们的应用范围从简单的图像处理扩展到了自动驾驶、医疗影像分析、智能监控行业等多个领域。 在这样的背景下,《MATLAB计算机视觉与深度学习实战…

3D开发工具HOOPS助力CAM软件优化制造流程

在现代制造业中,计算机辅助制造(CAM)软件的发展已成为提高生产效率和产品质量的关键。为了满足不断增长的需求和日益复杂的制造流程,CAM软件需要具备高效的CAD数据导入、云端协作、移动应用支持以及丰富的文档生成能力。 Tech So…

nginx installed inLinux

yum install nginx [rootmufeng ~]# yum install nginx CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细) ———————————————— 版权声明:本文为博主原创文章,遵循 CC …

FPGA_verilog语法整理

FPGA_verilog语法整理 verilog的逻辑值 verilog的常数表达 位宽中指定常数的宽度(表示成二进制数的位数),单引号加表示该常数为几进制的底数符号。 二进制底数符号为b,八进制为 o,十进制为d,十六进制为 h…

Kimichat用于学习教育场景的7种高级方法

●AI作为导师 你是一个乐观、鼓励学生的导师,通过解释观点和问学生问题来帮助学生理解概念。下面每一步只一步步的执行,不要全部执行。 #向学生介绍自己,作为他们的AI导师,很高兴帮助他们解答任何问题。一次只问一个问题。 #首…

sqli-labs靶场学习(一)

一.知识点 1.数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储,可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统,按照一定的逻辑结构组织数据,以方便高效地访问和维护。 2.数据库管…

光伏无人机勘探技术应用分析

光伏无人机勘探与传统勘探想必,具有智能化作业、测控精度高、环境适应性强等明显优势;卫星勘探辅助其能更快速甚至实时完成测绘拼图;在进行勘察时,可根据需要自由更换机载设备;自动诗经建模使数据更直观,工…

深度学习每周学习总结P5(运动鞋识别)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分2. 加载数据集3.模型构建部分3.1 模型构建3.2 公式推导 4. 设置超参…

Web开发:ASP.NET CORE的前端demo(纯前端)

目录 一、建立项目 二、删除无用文件 三、样式添加 四、写一个登录页面 五、登录主界面 一、建立项目 二、删除无用文件 三、样式添加 将你的图片资源添加在wwwroot下方,例如pics/logo.png 四、写一个登录页面 将Privacy.cshtml改为 Forget.cshtml &#xff0…

【数学】深度学习中的概率基础知识记录

基于 Deep Learning (2017, MIT) 书总结了必要的概率知识 原blog 以及用到的Ipython notebook 文章目录 1 概述2 知识2.1 离散变量和概率质量函数(PMF)2.2 连续变量和概率密度函数(PDF)2.3 边缘概率2.4 条件概率2.5 条件概率的链式…

阿里云ECS服务器安装docker

首先查看阿里云ECS的服务器的版本 cat /etc/redhat-release如果是Alibaba Cloud Linux release 3,请执行以下命令 添加docker-ce的dnf源。 sudo dnf config-manager --add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Alibaba Cloud Linux 3专…

MongoDB 索引全攻略

目录 一、索引介绍 1.1 单字段索引 1.2 复合索引 1.3 多键索引 1.4 主键索引 1.5 TTL 索引 1.6 地理空间索引 1.7 哈希索引 1.8 创建索引时注意事项 1.9 索引效果查看 二、索引实现原理 2.1 为什么使用 B-Tree 三、执行计划 一、索引介绍 任何数据库都有索引这一核心功能&…