Fork me on GitHub

Sqoop组件详细介绍

目录

  • 背景

  • 第一部分 Sqoop原理

  • 第一部分 Sqoop安装

  • 第二部分

  • 第三部分

  • 第四部分 总结

  • 参考文献及资料

背景

在信息系统中,应用程序背后通常是关系型数据库(RDBMS),这类数据成为大数据的重要来源,在这样的需求背景下,诞生了Sqoop项目。

Apache Sqoop(发音:skup)是一个用于Hadoop生态系统(HDFS、Hive、HBase)和关系型数据库(RDBMS)(例如:Mysql、Oracle、Postgres、Tidb等)之间传输数据的工具。Sqoop是Apache Software Foundation的开源软件产品,官网介绍如下:

Apache Sqoop(TM) is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.

另外sqoop的命名取自:SQl+hadOOP=SQOOP。Sqoop项目开始于2009年(最初由Cloudera开发和维护),最早作为Hadoop的一个第三方模块,后来为了方便用户快速部署使用、开发人员快速开发和迭代,Sqoop独立成为Apache的项目(时间轴上,2011年7月23日,开始由Apache孵化;到2012年4月,Sqoop项目被提升为Apache的顶级项目)。

Latest stable release is 1.4.7 (download, documentation). Latest cut of Sqoop2 is 1.99.7 (download, documentation). Note that 1.99.7 is not compatible with 1.4.7 and not feature complete, it is not intended for production deployment.

Sqoop的两代版本

Sqoop目前有两代版本,分别是是Sqoop1(1.4.x)和Sqoop2(1.99.x),两个版本不兼容,架构和用法上已经完全不同。Sqoop1最新稳定版为1.4.7,Sqoop2最新版本为1.99.7(1.99.7这个版本官网不建议部署生产系统)。

Sqoop2相对于Sqoop1主要改进有:

  • 引入Sqoop Server,集中化管理Connector
  • 支持多种访问方式:CLI、WEB UI、Rest Api、Java API
  • 引入基于角色的安全机制

两代Sqoop主要功能差异如下:

Feature(功能) Sqoop 1 Sqoop 2
Connectors for all major RDBMS(连接所有主流RDBMS数据库) Supported(支持) Not supported.Workaround: Use the generic JDBC Connector which has been tested on the following databases: Microsoft SQL Server, PostgreSQL, MySQL and Oracle.This connector should work on any other JDBC compliant database. However, performance might not be comparable to that of specialized connectors in Sqoop.不再支持。但是使用通用连接器(generic JDBC Connector),性能上无法和专用连接器相比。
Kerberos Security Integration(Kerberos安全集成) Supported(支持) Supported(支持)
Data transfer from RDBMS to Hive or HBase(数据从RDBMS传输到hive或者Hbase) Supported(支持) Not supported.Workaround: Follow this two-step approach.Import data from RDBMS into HDFSLoad data into Hive or HBase manually using appropriate tools and commands such as the LOAD DATA statement in Hive。不支持。解决办法: 按照此两步方法操作。 将数据从 RDBMS 导入 HDFS 在 Hive 中使用相应的工具和命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 HBase。
Data transfer from Hive or HBase to RDBMS(数据从Hive或者Hbase传输到RDBMS) Not supported.Workaround: Follow this two-step approach.Extract data from Hive or HBase into HDFS (either as a text or Avro file)Use Sqoop to export output of previous step to RDBMS。解决办法: 按照此两步方法操作。 从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件) 使用 Sqoop 将上一步的输出导出至 RDBMS Not supported.Follow the same workaround as for Sqoop 1.(参考Sqoop1)

Sqoop1支持集成Kerberos认证,Sqoop2的1.99.3版本还不支持(Sqoop 1.99.6版本已经支持)。

两代Sqoop的架构数据流图如下:

  • Sqoop1

    Sqoop1属于单机模式部署形态,使用客户端(CLI控制台)直接提交命令给hadoop集群,命令和脚本需要显示指定用户数据库名和密码。主要数据流如下:

1556454954148

  • Sqoop2

    Sqoop2属于C/S模式部署的形态,架构上引进了Server框架,对Connector实现集中管理。主要数据流如下:

    1556456420252

Sqoop的metadata保存在Derby数据库中。

两代版本的优缺点比较:Sqoop1使用客户端架构,用户需要在客户端部署Sqoop和相关连接器,而Sqoop2使用服务框架,连接器部署在Sqoop服务器上。从MR角度看,Sqoop1只是提交maper only作业,而Sqoop2提交了MapReduce作业,map完成从源传输数据,reduce根据指定的源转换数据,这是一个完整的MR抽象。另外从安全角度,Sqoop1每次任务都需要输入用户名和密钥,Sqoop2中由管理员设置源和目标的连接,普通用户只需要使用已经创建的连接,无需知道连接的详细信息。

第一部分 Sqoop原理

Sqoop将导入和导出命令翻译成Mapreduce程序来实现。

第二部分 Sqoop的安装

Sqoop只是一个工具,只需要在一个节点上安装部署即可。

Sqoop只能在Linux系统上部署。

目前那部分

2.1 Sqoop1的部署

2.2 Sqoop2的部署

2.3 部署总结

第三部分 Sqoop的使用

3.1 Sqoop1的使用

3.2 Sqoop2的使用

3.3 使用总结

第四部分 华为hadoop集群中Loader产品的使用

华为Loader组件产品基于Sqoop开源组件进行封装和优化,并且Loader提供一个可视化的配置管理界面,有效的降低的用户使用门槛。

参考文献及资料

1、Sqoop项目官网 链接:http://sqoop.apache.org

2、Sqoop User Guide (v1.4.6) 链接:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

3、sqoop1vs sqoop2 链接:https://www.wikitechy.com/tutorials/sqoop/sqoop1-vs-sqoop2

4、Feature Differences - Sqoop 1 and Sqoop 2 https://www.cloudera.com/documentation/enterprise/5-6-x/topics/cdh_ig_sqoop_vs_sqoop2.html

5、sqoop关系型数据迁移原理以及map端内存为何不会爆掉窥探

6、重拾初心——Sqoop1和Sqoop2的刨析对比 链接:https://blog.csdn.net/gamer_gyt/article/details/55225700

7、sqoop2基本架构、部署和个人使用感受 https://cloud.tencent.com/info/d865fe6ed0d92d03bdf8512a4c9e4212.html

https://blog.csdn.net/qq_38776653/article/details/77802871

0%