Sqoop数据交互工具——笔记
一、概念篇
Sqoop产生背景
随着企业的发展,企业数据的剧增,需要对海量数据进行分析挖掘。
(1) 将关系型数据库的数据导入到Hadoop,便于廉价处理和分析
(2) 在Hadoop进行海量数据分析挖掘
(3) Hadoop分析挖掘完的数据结果,导出到关系型数据库,利用强大的sql进行进一步分析和展示。
sqoop是什么
Sqoop 就是一个ETL 工具;
内部还是使用MR框架来处理数据的导入和导出;
因为mr框架是适用于海量数据的离线分析框架,所以决定了sqoop更适合做离线的海量数据、批量数据的传输。
Postgre数据库,国外非常受欢迎的开源的关系型数据库;
从不同的外部数据源当中,通过sqoop抽取数据,导入到Hadoop;
每一种数据源,可以理解为一个map、各自并行导入到Hadoop(各个数据管理组件)
还可以从Hadoop中,重新导出到外部数据源;
Hadoop内部包含了hdfs、hbase、hive 以及其他工具cloudera;
为什么选择sqoop
Sqoop支持任务的并行,以及有超时机制;
用户可以使用sqoop的数据转换,也可以自定义自己的数据转换;
Sqoop1 和 sqoop2
这是完全不同,不兼容的两个版本,因为他们有着完全不同的架构!
如何区分 sqoop的2个版本:如上
如何区分Hadoop的2个版本:
0.22 以及 1.X —— Hadoop1
0.23 以及 2.0以后 —— Hadoop2
引入sqoop-server 可以集中化管理connector;
sqoop1 需要在每个sqoop客户端配置connectors
Connector 本质上是一个连接器,针对不同的外部数据源有不同的连接器;
sqoop1客户端配置connectors,只是配置了连接串的用户密码,而且是明文,存在安全隐患;
REST
REST模式的Web服务 ;越来越多web服务开始采用REST风格设计和实现
rest即表述性状态传递(英文:Representational State Transfer,简称REST)
rest接口,知道如何去处理URI的原因在于所有的资源都支持同样的接口,一套同样的方法(只要你乐意,也可以称为操作)集合,叫做 verb(动词);
除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS,这些方法的含义连同行为许诺都一起定义在HTTP规范之中。
所以,rest接口是一套结合了方法的定义和行为的标准操作集合。
可以想象到RESTful HTTP方案中的所有资源都继承自类似于这样的一个类(采用类Java、C#的伪语法描述,请注意关键的方法):
class Resource {
Resource(URI u);
Response get();
Responsepost(Request r);
Responseput(Request r);
Responsedelete();
}
统一的接口resource,对于不同的子类资源,都继承了相同的操作接口(get、post、put、delete)
Sqoop1 架构与存在的问题
只能通过CLI的命令,提交任务给sqoop。
Sqoop提交给Hadoop中,只有map 任务处理数据,并没有reducer任务;
Map任务,从文本系统的文件、数据库、企业的数据仓库获取数据,导入到Hadoop的数据管理组件。
反过来,也可以通过map 任务,从Hadoop的数据管理组件获取数据,导出到外部数据源。
数据源所在的主机,端口,数据源的数据库,表。
Sqoop 2 架构
l 提供了多于一种(CLI)的访问方式;
l 提供了sqoop-server,集中管理connectors;管理元数据仓库。
元数据仓库,包括了整个sqoop的配置信息,connectors信息,以及安全管理的配置信息。
Sqoop-client 可以部署在任意的需要连接的外部数据源主机当中;
Sqoop-server 可以部署在和Hadoop的数据管理组件hbase、hive所在的主机上。
l 提供了reduce 任务
二、loader 与 sqoop
1、组件构成
l Sqoop-client
l Sqoop-server
l Sqoop-connector
l Sqoop-transformat
l Sqoop-security
l Sqoop-request (CLI、webUI、Rest)