Sqoop概述 第1关:Sqoop概述

news2024/11/24 18:53:27

为了完成本关任务,你需要掌握: 1.Sqoop 概述; 2.Sqoop 基本架构。

Sqoop 概述

设计动机

Sqoop 从工程角度,解决了关系型数据库与 Hadoop 之间的数据传输问题,它构建了两者之间的“桥梁”,使得数据迁移工作变得异常简单。在实际项目中,如果遇到以下任务,可尝试使用 Sqoop 完成:

  • 数据迁移:公司内部商用关系型数据仓库中的数据以分析为主,综合考虑扩展性、容错性和成本开销等方面。若将数据迁移到 Hadoop 大数据平台上,可以方便地使用 Hadoop 提供的如 Hive、SparkSQL 分布式系统等工具进行数据分析。为了一次性将数据导入 Hadoop 存储系统,可使用 Sqoop。
  • 可视化分析结果:Hadoop 处理的输入数据规模可能是非常庞大的,比如 PB 级别,但最终产生的分析结果可能不会太大,比如报表数据等,而这类结果通常需要进行可视化,以便更直观地展示分析结果。目前绝大部分可视化工具与关系型数据库对接得比较好,因此,比较主流的做法是,将 Hadoop 产生的结果导入关系型数据库进行可视化展示;
  • 数据增量导入:考虑到 Hadoop 对事务的支持比较差,因此,凡是涉及事务的应用,比如支付平台等,后端的存储均会选择关系型数据库,而事务相关的数据,比如用户支付行为等,可能在 Hadoop 分析用到(比如广告系统,推荐系统等)。为了减少 Hadoop 分析过程中影响这类系统的性能,通常不直接让 Hadoop 访问这些关系型数据库,而是单独导入一份到 Hadoop 存储系统中。

为了解决上述数据收集过程中遇到的问题,Apache Sqoop 项目诞生了,它是一个性能高、易用、灵活的数据导入导出工具,在关系型数据库与 Hadoop 之间搭建了一个桥梁,让关系型数据收集变得异常简单。

 

Sqoop 的“桥梁”作用

Sqoop 基本思想及特点

Sqoop 采用插拔式 Connector 架构,Connector 是与特定数据源相关的组件,主要负责(从特定数据源中)抽取和加载数据。用户可选择 Sqoop 自带的 Connector ,或者数据库提供商发布的 native Connector,甚至根据自己的需要定制 Connector,从而把 Sqoop 打造成一个公司级别的数据迁移统一管理工具。Sqoop 主要具备以下特点:

  • 性能高:Sqoop 采用 MapReduce 完成数据的导入导出,具备了 MapReduce 所具有的优点,包括并发度可控、容错性高、扩展性高等。

  • 自动类型转换:Sqoop 可读取数据源元信息,自动完成数据类型映射,用户也可以根据需要自定义类型映射关系;

  • 自动传播元信息:Sqoop 在数据发送端和接收端之间传递数据的同时,也会将元信息传递过去,保证接收端和发送端有一致的元信息。

Sqoop基本架构

Sqoop 目前存在两个版本(2021.3.24截至),两个版本分别以版本号 1.4x 和1.99x 表示,通常简称为“Sqoop1”和“Sqoop2”,Sqoop2 在架构和设计思路上对 Sqoop1 做了重大改进,因此两个版本是完全不兼容的。在这一节中,我们重点关注这两个版本的设计原理和架构。

Sqoop1 基本架构

Sqoop1 是一个客户端工具,不需要启动任何服务即可使用,非常简便。Sqoop1 实际上是一个只有 Map 的 MapReduce 作业,它充分利用 MapReduce 高容错性、扩展性好等优点,将数据迁移任务转换为 MapReduce 作业,如下图:

 

Sqoop1 基本架构

当用户通过 shell 命令提交迁移作业后,Sqoop 会从关系型数据库中读取元信息,并根据并发度和数据表大小将数据划分成若干分片,每片交给一个 Map Task 处理,这样,多个 Map Task 同时读取数据库中的数据,并行将数据写入目标存储系统,比如HDFS、HBase 和 Hive 等。

Sqoop 允许用户通过定制各种参数控制作业,包括任务并发度、数据源、超过时间等。总架构上讲,Sqoop1 只是一个客户库工具,windows 下绿色版软件大多是对原始软件的破解,但如果你的数据迁移很多,Sqoop1则会暴露很多缺点,包括:

  • Connector 定制麻烦:Sqoop1 仅支持基于 JDBC 的 Connector;Connector 开发复杂,通用的功能也需要自己开发而不是提前提供好;Connector 与 Hadoop 耦合度过高,使得开发一个 Connector 需要对 Hadoop 有充分的理解和学习。

  • 客户端软件繁多:Sqoop1 要求对依赖的软件必须安装在客户端上,包括MySQL 客户端、Hadoop/HBase/Hive 客户端、JDBC 驱动、数据库厂商提供的 Connector 等,这使得 Sqoop 客户端不容易部署和安装。

  • 安全性差:Sqoop1 需要用户明文提供数据库的用户名和密码,但未考虑如何利用 Hadoop 安全机制提供可靠且安全地数据迁移工作。

Sqoop2 基本架构

为了解决 Sqoop1 客户端架构所带来的问题,Sqoop2 对其进行了改进,如下架构图:

 

Sqoop2 基本架构

其中引入了Sqoop Server,将所有管理工作放到Server端,包括 Connector 管理、MySQL/Hadoop 相关的客户端、安全认证等,这使得 Sqoop 客户端变得非常轻,更易于使用。Sqoop1 到 Sqoop2 的变迁,类似于传统软件架构到云计算架构的变迁,将所有软件运行“云端”(Sqoop Server),而用户只需通过命令和或浏览器便可随时随处使用 Sqoop。

Sqoop2 主要组件及功能如下:

  • Sqoop Client

定义了用户使用 Sqoop 的方式,包括客户端命令行(CLI)和浏览器两种方式,其中浏览器方式允许用户直接通过HTTP方式完成Sqoop 的管理和数据的导入导出。

  • Sqoop Server

Sqoop1 中 Client 端大部分功能在 Sqoop2 中转移到了 Sqoop Server端,包括: ①Connector:所有 Connector 的实现放置到 Sqoop Server 端,且 Connector 被进一步抽象化和模块化,它的通用部分被抽取出来,本身只关注数据解析和加载相关的功能,包括 Partitioner、Extractor 和 Loader 等主要模块。具体功能如下:

Partitioner:决定如何对源数据进行分片(SqoopSplit),以便启动 Map Task 并行处理; Extractor:将一个分片中的数据解析成一条条记录,并输出; Loader:读取Extractor 输出的数据,并以特定格式写入目标数据源中。

从前面介绍可容易看出,整个过程只需要一个 MapReduce 作业即可完成:Partitioner 和 Extractor 在 Map 阶段完成,Loader 在 Reduce 阶段完成。

Metadata: Sqoop 中的元信息,包括可用的 Connector 列表、用户创建的作业和 Link (实例化的一个 Connector ,以便创建作业时使用)等。元信息被存储在数据仓库中,默认使用轻量级数据库 Apache Derby,用户也可根据需要替换成 MySQL 等其它数据库。

②RESTful 和 HTTP Server:与客户端对接,响应客户端发出的 RESTful 请求和 HTTP 请求

③Sqoop Server 会根据用户创建的 Sqoop Job 生成一个 MapReduce 作业,提交至 Hadoop 集群中分布式执行

Sqoop1 与 Sqoop2 对比

Sqoop2 在 Sqoop1 的基础上进行了重大改进,分别从易用性、扩展性和安全性三个方面对比 Sqoop1 和 Sqoop2 。

易用性:

Sqoop1Sqoop2
Client-Only 架构,所有软件依赖部署至客户端Clinet/Server 架构,所有软件依赖部署到服务器端,进而使得客户端很轻量级
客户端仅支持命令行访问方式(CLI)客户端支持命令行和Web两种方式
客户端需访问Hive、HBase等数据源服务器端访问 Hive、HBase 等数据源,客户端只需发送请求即可

扩展性:

Sqoop1Sqoop2
Connector 必须遵循 JDBC 模型Connector 被进一步泛化,只需实现若干组件即可
Connector 实现需考虑通用功能模块,比如下游数据流的文件格式转化、与其他系统(比如 HDFS、Hive等)集成等通用功能模块被独立出来,用户设计Connector 时只需考虑与特定数据源相关的数据抽取、数据加载等功能即可
Sqoop 根据配置隐式地为用户选择Connector,很容易导致 Connector 误用用户可显示为作业指定 Connector,避免误用

安全性:

Sqoop1Sqoop2
仅支持 Hadoop Security增加对基于角色的安全访问控制
无任何资源管理机制增加资源管理机制,用户可更细粒度地管理作业所占用的资源,比如同时打开的连接数、显示删除连接等

总结起来,Sqoop2 通过将访问入口服务化,将所有的复杂功能放到服务器端,大大简化了客户端实现,使其更轻量级,进而变得更加易用。

1、Sqoop 是一个性能高、易用、灵活的数据导入导出工具,能够使得 Hadoop 和关系型数据库之间数据传输非常方便。以上说法是否正确:

A、正确 *

B、错误

2、以下对于 Sqoop 说法正确的是:

A、Sqoop 采用 MapReduce 完成数据的导入导出 *

B、Sqoop 可读取数据源元信息,自动完成数据类型映射,用户也可以根据需要自定义类型映射关系;*

C、Sqoop 在数据发送端和接收端之间传递数据的同时,也会将元信息传递过去,保证接收端和发送端有一致的元信息。*

D、Sqoop 具备了 MapReduce 所具有的优点,包括并发度可控、容错性高、扩展性高等。*

3、对于 Sqoop1 与 Sqoop2 区别错误的是:

A、Sqoop1 客户端需访问Hive、HBase等数据源,Sqoop2 服务器端访问 Hive、HBase 等数据源,客户端只需发送请求即可。

B、Sqoop1 客户端仅支持命令行访问方式(CLI),Sqoop2 客户端支持命令行和 Web 两种方式。

C、Sqoop1     增加资源管理机制,Sqoop2 无任何资源管理机制。*

D、Sqoop1 仅支持 Hadoop Security,Sqoop2 可以增加对基于角色的安全访问控制。

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

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

相关文章

【Linux】ls命令

ls:List Directory Contents,显示目录下内容。 .表示当前目录 …表示上一级目录 .开头文件为隐藏文件 说明: 查看文件大小 ls -asSh ls -al ls -alh fan

门面/外观模式

一、门面模式 1、定义 门面模式(Facade Pattern)又称作外观模式,是指提供一个统一的接口,用来访问子系统中的一群接口,属于结构型设计模式。 门面模式的主要特征是定义了一个高层接口,让子系统更容易使用。…

PHP基于thinkphp的网上图书管理系统#毕业设计

本论文主要论述了如何使用php语言开发一个网上图书管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,将论述网上图书管理系统的当前背景以及系统开发的目的,后续章节将严格按照软…

基于PHP+MySQL协同办公系统的设计与实现

随着全球经济一体化进程的加快和信息技术的飞速发展,Internet技术及其应用给人们的日常生活和工作等各个方面带来了深刻的影响。网络应用技术的不断提高,企业对于相互之间的通讯能力提出了更高的要求。许多企业都具有一定信息化基础,有一定数…

HTML文本溢出处理

有时在做某些需求布局时,需要处理文本溢出时的情况,如果不处理可能会重新重叠的效果,关于设置文本溢出,主要就是多行/单行的处理,代码如下 1.处理单行文本溢出 /* 设置文本溢出时的处理模式 */text-overflow:ellipsis;overflow: hidden;white-space: nowrap; 2.处理多行文本溢出…

视频播放 (三) 视频列表

1. 配置信息 1.1 AndroidManifest.xml 添加网络权限 <uses-permission android:name"android.permission.INTERNET" /> 1.2 使用 Http 明文设置 android:usesCleartextTraffic"true" 1.3 使用竖屏设置 android:screenOrientation"portrait&q…

FCP第二题:数据库中有一张地区数据统计表,但是并不规则

【题目要求】 数据库中有一张地区数据统计表,但是并不规则 ,记录类似于,225100:02:3:20160725是一串代码,以:分割,第1位为地区代码,第2位为分类代码,第3位为数量,第4位为日期 地区代码含义225100-上海 225200-江苏 225300-浙江 为可能有某些位不存在,缺位时计算规…

很多up主都在使用的Editplus,强大的编辑器-并附有编译执行配置 java编译(新款发放)

趣味拓展 邻居老李家的屋顶为什么有时漏雨&#xff0c;有时不漏雨&#xff1f; (答案在文末) 引言 不晓得你们怎么认识Editplus的&#xff0c;小编最初认识Editplus是在老杜的javaSE视频中 杜老师SE视频中也分享的有Editplus&#xff0c;不过这款是新版本~ 软件介绍 1.EditPl…

【密码加密原则】

目录 1. 什么是密码加密 2. 典型的消息摘要算法 1. 什么是密码加密 用户在使用软件时所提交的密码&#xff0c;不应该被记录下来&#xff0c;如果将用户的密码记录&#xff0c;这是不安全的做法&#xff01; 当用户提交注册信息时&#xff0c;密码必须被记录下来&#xff0…

MYSQL中AS(取别名)

文章目录0 写在前面1 格式2 举例2.1 设置表别名2.2 设置字段别名3 写在末尾0 写在前面 在做业务&#xff0c;在mybatis中手写sql中再多表查询去映射实体时&#xff0c;总会用到AS这个关键字。 或者我们在数据库大量字段测试数据时&#xff0c;很多字段都有相同的前缀&#xff…

【虹科方案】虹科数字化仪——机械测量的最佳方案!(二)

前文回顾 【虹科方案】虹科数字化仪——机械测量的最佳方案&#xff01;&#xff08;一&#xff09; 前文介绍了在对机械设备和系统进行测量时如何选择数字化仪及传感器&#xff0c;并以小型三叶片冷却风扇的基本机械测量作为案例&#xff0c;说明传感器和数字化仪如何一起使…

如何走出自动化测试第一步?

1、我想问一下关于自动化测试工具Selenium和QTP的区别。假如一个系统现在需要一款自动化测试工具&#xff0c;要求可以重复提交表单进行功能性测试&#xff0c;不用纯手工去做&#xff08;因为工作量过大&#xff09;&#xff0c;现在有两个工具&#xff08;Selenium和QTP&…

为什么说“分布式架构”才是AR眼镜的未来

近两年消费级AR眼镜得到了快速发展&#xff0c;无论是基于BB的分体式&#xff0c;还是基于光波导方案的一体机都在加快迭代&#xff0c;不断地在产品形态和软件使用体验上带来创新。然而从长期来看&#xff0c;消费级AR/VR仍处于早期阶段&#xff0c;未来有非常多的可能性。 其…

【C++】并查集

并查集这个数据结构本身并不难&#xff0c;其主要是提供一个思路&#xff0c;方便我们编写图的代码&#xff0c;和一些OJ题 文章目录1.什么是并查集&#xff1f;2.思路2.1 合并集合2.2 压缩路径3.代码4.OJ题4.1 剑指 Offer II 116. 省份数量4.2 等式方程的可满足性1.什么是并查…

高精度工厂人员定位,打造数字化智慧工厂

工厂人员定位&#xff0c;通过对工业厂区人员、物资、车辆进行精准的定位&#xff0c;实现对人员、物资、车辆的智慧管控&#xff0c;从而实现工厂安全生产管理智能化。 人工智能的推广使得工厂的生产效率不断提升&#xff0c;企业对安全生产和降本增效的需求也越来越大。高精度…

跨境电商迎来销售旺季,APS计划排产帮助企业提升生产效率

根据报道称&#xff0c;我国跨境电商的进出口规模5年来增长了近10倍&#xff0c;为了商品能够顺利“出海”&#xff0c;不少物流企业开辟了新的物流专线。 据海关统计&#xff0c;我国跨境电商进出口规模5年增长近10倍。为了保障商品顺利“出海”&#xff0c;今年&#xff0c;不…

Tableau 入门系列之各种图形绘制

文章目录What熟悉Tableau绘制各种图形柱状图 &#x1f4ca;折线图&#x1f4c8;饼图文字云气泡图热图突出显示图筛选器参考线地图制作DashboardWhat Tableau 是一个可视化分析平台&#xff0c;它改变了我们使用数据解决问题的方式&#xff0c;使个人和组织能够充分利用自己的数…

虚拟内存系统【页面置换算法】

页面置换算法&#x1f4d6;1. 最优页面置换算法(OPT)&#x1f4d6;2. 先入先出置换算法(FIFO)&#x1f4d6;3. 随机(Random)&#x1f4d6;4. 最近最少使用的置换算法(LRU)&#x1f4d6;5. 近似LRU 时钟页面置换算法&#x1f4d6;6. 最不常用算法&#x1f4d6;7. 考虑脏页在虚拟…

CleanMyMac X2022苹果电脑专业清理Mac加速器软件

CleanMyMac X2023最新免费版苹果电脑专业清理软件&#xff0c;对于Mac电脑用户来说&#xff0c;Cleanmymac X是一款再熟悉不过的电脑清理软件&#xff0c;它是由苹果认证并对外承认的一款第三方清理软件&#xff0c;几乎有95%的Mac用户都会安装并使用&#xff0c;Cleanmymac X究…