Sqoop相关概念

一、概念

    Sqoop是一款开源的工具,主要用于在HADOOP和传统的数据库(mysql、postgresql等)进行数据的传递,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。它是 Hadoop 发展到一定程度的必然产物,它主要解决的是传统数据库和Hadoop之间数据的迁移问题。

二、背景

Sqoop 的产生主要源于以下几种需求:

1、多数使用 Hadoop 技术处理大数据业务的企业,有大量的数据存储在传统的关系型数据库(RDBMS)中。
2、由于缺乏工具的支持,对 Hadoop 和 传统数据库系统中的数据进行相互传输是一件十分困难的事情。
3、基于前两个方面的考虑,亟需一个在 RDBMS 与 Hadoop 之间进行数据传输的项目。

三、核心设计思想

 Sqoop 的核心设计思想是利用 MapReduce 加快数据传输速度。也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的。所以它是一种批处理方式进行数据传输,难以实现实时的数据进行导入和导出。

四、为什么选择Sqoop

我们为什么选择 Sqoop 呢?通常基于三个方面的考虑:

1、它可以高效、可控地利用资源,可以通过调整任务数来控制任务的并发度。另外它还可以配置数据库的访问时间等等。
2、它可以自动的完成数据类型映射与转换。我们往往导入的数据是有类型的,它可以自动根据数据库中的类型转换到 Hadoop 中,当然用户也可以自定义它们之间的映射关系。
3、它支持多种数据库,比如,Mysql、Oracle和PostgreSQL等等数据库。

五、Sqoop1 和Sqoop2 比较

1、sqoop1和sqoop2是两个不同的版本,它们是完全不兼容的。
2、版本划分方式:Apache 1.4.x 之后的版本属于sqoop1,1.99.x之上的版本属于sqoop2.
3、与sqoop1相比,sqoop2有以下优势:
    1)它引入的sqoop Server,便于集中化的管理Connector或者其它的第三方插件;
    2)多种访问方式:CLI、Web UI、REST API;
    3)它引入了基于角色的安全机制,管理员可以在sqoop Server上配置不同的角色
整体对比:

功能 Sqoop1 sqoop2
用于所有主要 RDBMS 的连接器 支持 不支持。解决办法: 使用已在以下数据库上执行测试的通用 JDBC 连接器: Microsoft SQL Server 、 PostgreSQL 、 MySQL 和 Oracle 。此连接器应在任何其它符合 JDBC 要求的数据库上运行。但是,性能可能无法与 Sqoop 中的专用连接器相比
Kerberos 安全集成 支持 不支持
数据从 RDBMS 传输至 Hive 或 HBase 支持 不支持。解决办法: 按照此两步方法操作:1、将数据从 RDBMS 导入 HDFS;2、在 Hive 中使用相应的工具和命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 HBase
数据从 Hive 或 HBase 传输至 RDBMS 不支持。解决办法: 按照此两步方法操作。 从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件)使用 Sqoop 将上一步的输出导出至 RDBMS 不支持。按照与 Sqoop 1 相同的解决方法操作

sqoop1的架构,仅仅使用一个sqoop客户端。
sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章