系列专题:数据湖系列文章


Sqoop(SQL-to-Hadoop)是Apache旗下的一款开源工具,该项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,并在2013年,独立成为Apache的一个顶级开源项目。

1. 概述

Apache Sqoop项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从Hadoop系统里抽取并导出到关系型数据库里。

Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是MySQL、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。

在特定场景下,抽取过程会有很大的性能提升。如果要用Sqoop,必须正确安装并配置Hadoop,因依赖于本地的Hadoop环境启动MR程序;MySQL、Oracle等数据库的JDBC驱动也要放到Sqoop的lib目录下。

其功能如下图所示

2. Sqoop1和Sqoop2

目前Sqoop主要分为Sqoop1和Sqoop2两个版本,其中,版本号为1.4.x属于Sqoop1,而版本号为1.99.x的属于Sqoop2。这两个版本开发时的定位方向不同,体系结构具有很大的差异,因此它们之间互不兼容。

        架构方面:

  • Sqoop1:仅仅使用一个Sqoop客户端;
  • Sqoop2:引入了Sqoop Server,对Connector实现了集中的管理,其访问方式也变得多样化了,其可以通过REST API、JAVA API、WEB UI以及CLI控制台方式进行访问。

        安全性能方面:

  • Sqoop1:经常用脚本的方式将HDFS中的数据导入到MySQL中,或者反过来将MySQL数据导入到HDFS中,其中在脚本里边都要显示指定MySQL数据库的用户名和密码的,安全性做的不是太完善。
  • Sqoop2:如果是通过CLI方式访问的话,会有一个交互过程界面,输入的密码信息不被看到,同时Sqoop2引入基于角色的安全机制。

        优缺点:
Sqoop1

  • 优点:架构部署简单;
  • 缺点:命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,安装需要root权限,connector必须符合JDBC模型;

Sqoop2

  • 优点:多种交互方式,命令行,Web UI,REST API,Conncetor集中化管理,所有的链接安装在Sqoop Server上,完善权限管理机制,Connector规范化,仅仅负责数据的读写;
  • 缺点:架构稍复杂,配置部署更繁琐。

3. 工作原理

Sqoop是传统关系数据库服务器与Hadoop间进行数据同步的工具,其底层利用MapReduce并行计算模型以批处理方式加快了数据传输速度,并且具有较好的容错性功能,工作流程如下图所示。

从上图中可以看出,通过客户端CLI(命令行界面)方式或Java API方式调用Sqoop工具,Sqoop可以将指令转换为对应的MapReduce作业(通常只涉及Map任务,每个Map任务从数据库中读取一片数据,这样多个Map任务实现并发地复制,可以快速地将整个数据复制到HDFS上),然后将关系数据库和Hadoop中的数据进行相互转换,从而完成数据的迁移。

可以说,Sqoop是关系数据库与Hadoop 之间的数据桥梁,这个桥梁的重要组件是Sgoop连接器,它用于实现与各种关系数据库的连接,从而实现数据的导人和导出操作。

Sqoop连接器能够支持大多数常用的关系数据库,如MySQL、Oracle、DB2和SQL Server等,同时它还有一个通用的JDBC连接器,用于连接支持JDBC协议的数据库。

3.1 导入原理

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

3.2 导出原理

在导出数据之前,Sqoop会根据数据库连接字符串来选择一个导出方法,对于大部分系统来说,Sqoop会选择JDBC。Sqoop会根据目标表的定义生成一个Java类,这个生成的类能够从文本中解析出记录数据,并能够向表中插人类型合适的值,然后启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析出记录,并且执行选定的导出方法。

4. 参考文档

[01] https://blog.csdn.net/suyuan12365/article/details/122409036

[02]https://copyfuture.com/blogs-details/20210316135025527a

数据湖:数据库数据迁移工具Sqoop相关推荐

  1. 数据湖基本概念--什么是数据湖,数据湖又能干什么?为什么是Hudi

    一.什么是数据湖 对于经常跟数据打交道的同学,初步听到数据湖这个概念的时候,肯定有点懵,但是相信大家对于数据仓库 这个概念并不陌生. 到了20世纪80年代以后,基于关系型数据库的事务处理成为了企业IT ...

  2. [转]关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析

    前言 2010年左右,还是在上学的时候,学过一门课程叫<数据仓库与数据挖掘>,那还是属于传统数据的时代,我们会讨论什么是数据仓库?什么是数据集市?数据仓库和数据库有什么区别?等等,当我还在 ...

  3. 如何避免数据湖变成数据沼泽

    本文转载自 www.dbta.com,作者李栋 今年,Gartner 发布了<分析查询加速的市场引导报告>(Market Guide for Analytics Query Acceler ...

  4. 数据如何变成知识,第 2 部分 数据湖和数据沼泽

    数据湖概念已存在多年.它最初引起了一些争议,而且被贴上了营销炒作的标签.术语数据湖不是任何传统数据存储架构的一部分,所以供应商可以自由地使用它来表示许多不同的事物. 数据存储术语,比如流.池.储备库和 ...

  5. 数据如何变成知识(2):数据湖和数据沼泽

    转发自IBM社区:https://www.ibm.com/developerworks/cn/analytics/library/ba-data-becomes-knowledge-2/index.h ...

  6. 关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析

    前言 2010年左右,还是在上学的时候,学过一门课程叫<数据仓库与数据挖掘>,那还是属于传统数据的时代,我们会讨论什么是数据仓库?什么是数据集市?数据仓库和数据库有什么区别?等等,当我还在 ...

  7. 万字详解数据仓库、数据湖、数据中台和湖仓一体

    本文目录: 一.前言 二.概念解析 数据仓库 数据湖 数据中台 三.具体区别 数据仓库 VS 数据湖 数据仓库 VS 数据中台 总结 四.湖仓一体 目前数据存储方案 Data Lakehouse(湖仓 ...

  8. 震惊!这篇文章解读数据仓库、数据湖、数据中台等概念,竟然写了4万字!

    点击上方 "zhisheng"关注, 星标或置顶一起成长 Flink 从入门到精通 系列文章 如今,随着诸如互联网以及物联网等技术的不断发展,越来越多的数据被生产出来-据统计,每天 ...

  9. 辨析BI、数据仓库、数据湖和数据中台内涵及差异点(建议收藏)

    前言 随着大数据技术的不断更新和迭代,数据管理工具得到了飞速的发展,相关概念如雨后春笋一般应运而生,如从最初决策支持系统(DSS)到商业智能(BI).数据仓库.数据湖.数据中台等,这些概念特别容易混淆 ...

  10. 数据仓库,数据集市,数据孤岛,数据湖,数据中台

    数据仓库,数据集市,数据孤岛,数据湖,数据中台 文章目录 数据仓库,数据集市,数据孤岛,数据湖,数据中台 1.数据仓库 2.数据集市 3.数据孤岛 4.数据湖 5.数据中台 1.数据仓库 定义:数据仓 ...

最新文章

  1. 修改input的text 通过jquery的html获取值 未变化
  2. html iframe php,html iframe使用的实战总结分享
  3. 用位运算实现求绝对值-有效避开if-else判断
  4. 使用IDEA+MVN 编译Spark 1.5.2 without hive
  5. 服务器不能安装exe文件,云服务器安装exe文件
  6. 跨域通信——多窗口通信
  7. “阿里云核心竞争力”峰会首日中奖小伙伴名单公布!机械键盘等豪礼下午继续放出!...
  8. 弱电机房如何理线整理机柜?值得收藏学习
  9. vue第四天笔记02——axios请求
  10. 360极速浏览器、360浏览器如何清除缓存、清除历史记录、清除cookies
  11. 闭着眼学基础python 保姆教程:组合数据类型(2)映射与集合类型
  12. EdgeX(1)研究 开源边缘计算框架 EdgeX Foundry
  13. 双向链表list(十二)
  14. usage.txt-1
  15. 了解TSP(Tik Tok Shop Partner),这篇详细阅读不容错
  16. Java生成图形验证码,并传输至前端
  17. DCA、NRI、IDI
  18. gui界面文本输入存入mysql中_把“文本框输入的内容”全部变成“********”,然后存入数据库,如何做到?...
  19. 计算机相关的外文翻译,计算机外文翻译
  20. 从零开始学数据结构和算法:java从大到小排列数组

热门文章

  1. stata面板数据单位根检验llc_STATA计量研究/面板单位根检验分析(含代码)
  2. 苹果(mac)电脑安装eclipse步骤
  3. 域名、IP地址和URL
  4. python 循环嵌套例子,【python实例练习1】循环嵌套——“百鸡百钱”问题
  5. 【计算与人工智能概论】(进阶)
  6. Talib中文文档(四):Volatility Indicators 波动性指标
  7. 华为鸿蒙显示屏,8分钟,京东用户喜提全球首台华为鸿蒙系统荣耀智慧屏!
  8. Linux常用命令——ldd命令
  9. 论键盘上F9键的功能
  10. idea的xml文件Tag name expected