学习Hadoop——Sqoop的介绍

sqoop 是一个开源工具,它允许用户将数据库提取到Hadoop 中用于进一步得处理,提取到HDFS 的数据可以被Mapreduce 程序使用,也可以被其他类似于Hive 的工具用,在得到这些分析结果之前,sqoop 还可以将这些结果再导回到数据库

Sqoop 概述

 Hadoop 数据传输工具Sqoop 是Apache 顶级项目,主要用于Hadoop 和关系型数据库、数据仓库、Nosql数据库间传递数据。通过Sqoop 可以方便的将数据从关系数据库·导入到HDFS,HBase,Hive 或者将数据从HDFS 导出到关系型数据库。

Hadoop 架构非常简单,它整合了Hive,HBase,和Oozie,通过Mapreduce 任务传输数据,并能提供并发特性和容错能力。Sqoop 集成了工作流协调的Apache Ooize ,可自定义安排或者自动导入/导出任务。

JDBC  Java 数据库连接(Java Database connectinty)

Sqoop 主要通过JDBC 和关系型数据库进行交互,理论上但凡支持JDBC 关系型数据库都可以使用Sqoop 和HDFS 进行数据交互。以下是经过Sqoop 官方测试过得情况:

 

主要分为sqoop1和sqoop2 ,这两个版本完全不兼容。

Sqoop1 和Sqoop2 的区别:

工作模式

Sqoop1 基于客户端模式,用户模式时需要在客户端节点安装Sqoop 和连接器/驱动器。Sqoop 2基于服务模式,是sqoop1下一代版本,服务模式主要分为sqoop1 Server 和Client ,用户模式使用时需要在Sqoop2 Server 安装连接器/驱动器,所有配置信息都在Sqoop2 Server 进行配置。

MR角度透视及其区别

Sqoop 只要提交一个Map作业,数据的传输和转换都由Mapreduce 来完成。

Sqoop2 提交一个Mapreduce 作业,Mappers 负责从数据源传输数据,Reducers 负责根据指定的数据源来转换数据。

从安全角度

sqoop2 有针对的进行设计,管理员配置数据的来源和目标,操作者直接使用已经建好的链接,不需要了解该链接的具体详细信息,按需获取即可。

其他方面

Web UI:sqoop 只提供CLI 方式,sqoop 2 同时也支持web UI 的方式,Sqoop2  Server 以REST 服务提供CLI 和Web UI 。

另外。Sqoop2 REST  服务接口能更容易的集成其他框架进来,比如Oozie ,用来定义Sqoop2工作流

sqoop1 和sqoop2 的功能差异
功能sqoop1sqoop2
用于所有主要RDBMS的连接器支持不支持。解决办法,使用通用JDBC连接器,支持SQLServer,PostgreSQL,MYSQL和Oracle,此连接器可用于任何符合JDBC要求的数据库运行,但是,性能可能无法与sqoop1 中专用连接器相比
Kerberos支持不支持
从RDBMS 安装至Hive 或HBase支持不支持。解决办法:将数据从RDBMS 导入HDFS;在Hive 中使用相应的工具和命令手动将数据载入Hive 或HBase
数据从Hive 或HBase 传输至RDBMS不支持,解决办法:从Hive或HBase将数据提取至HDFS;使用sqoop将上一步输出导出至RDBMS不支持,按照Sqoop1 相同的解决方法操作

由上图可以看出,sqoop1 架构非常简单,整合了Hive,HBase 和Oozie ,通过Map任务来传输数据,Map 负责数据的加载,转换,并存储到HDFS ,HBase或者Hive 中。

数据流程

1.sqoop 读取导入数据的表结构,生成运行类,默认是QueryResult ,打成jar 包,然后提交给Hadoop。

2.设置好job,主要设置sqoop 的各个参数

3.由Hadoop 来通过Mapreduce 来执行Import 命令:

   a.首先要进行数据切分

   b.切好范围后,写入范围,以便读取

  c.读取上一步写入的范围

  d.然后创建RecordReader 葱数据库中读取数据

  e.创建Map

  f.RecordReader 一行一行从关系型数据库中读取数据,设置好Map 的key 和value,交给Map

  g.运行map

最后生成的key 是行数据,由QueryResult 生成,value 是NullWritable.get()


数据的导入导出

sqoop2架构

sqoop2是基于服务器的工具,是在迁移Hadoop 和关系型数据库之间的数据。

sqoop2 除了继续支持命令行交互方式外,重点增加基于Web 的UI 功能,使用这个界面接口,用户可以通过简单的UI 设置进行导入,导出,避免了繁琐的冗余选项,各种连接器已经被添加到应用程序中,用户就不再负责安装和配置连接器,这些连接器由sqoop 框架负责以界面以外的形式展示给用户。Web 的UI 模式保证了平台的安全性,并限制终端用户的操作。

Sqoop1 需要在客户端进行安装和配置,Sqoop2的安装和配置只在服务器端。这就意味着,连接器会在一个地方进行配置,并由管理员进行管理。同样,jdbc 驱动程序和数据库的链接信息也由服务器进行管理。Sqoop 2 提供基于Web 的服务,前端的命令行接口,浏览器和后端的元数据存储数据库。此外Hive 和HBase 也在服务器端进行集成Oozie 将会使用RESET API 管理sqoop 任务。

Sqoop2 的连接浏览器不再局限于JDBC 模式,Sqoop2 基于Web 的用户界面交互将引导用户进行导入/导出设置,消除冗余出错的步骤。

sqoop1 和sqoop2 的优缺点
比较sqoop1

sqoop2

 

架构仅仅使用一个sqoop客户端

引入sqoop server集中化管理

connector ,以及rest api,web,UI ,并引入权限安全机制

部署部署简单,安装需要root权限,connetcor 必须符合JDBC 模型架构稍复杂,部署更繁琐
使用命令行方式容易出错,格式仅耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴露多种交互方式,命令行,web UI,rest API ,connetcor 集中化管理,所有链接安装在sqoop server 上,完善权限机制,connector 规范化,仅仅负责数据的读写

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值