概述
sqoop是什么?
sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等
Sqoop 是连接传统关系型数据库和 Hadoop 的桥梁。它包括以下两个方面:
1、 将关系型数据库的数据导入到 Hadoop 及其相关的系统中,如 Hive和HBase。
2、 将数据从 Hadoop 系统里抽取并导出到关系型数据库。
核心设计思想是利用 MapReduce 加快数据传输速度。也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的。所以它是一种批处理方式进行数据传输,难以实现实时的数据进行导入和导出。
为什么使用 Sqoop?
可以高效、可控地利用资源,可以通过调整任务数来控制任务的并发度。另外还可以配置数据库的访问时间等。
可以自动的完成数据类型映射与转换。我们往往导入的数据是有类型的,它可以自动根据数据库中的类型转换到 Hadoop 中,当然用户也可以自定义它们之间的映射关系。
支持多种数据库,比如,Mysql、Oracle和PostgreSQL等等数据库。
sqoop1与sqoop2架构对比
sqoop1和sqoop2是两个不同的版本,它们是完全不兼容的。
Apache 1.4.x 之后的版本属于sqoop1,1.99.x之上的版本属于sqoop2。
sqoop1架构
sqoop2架构
sqoop2有以下优势:
引入的sqoop Server,便于集中化的管理Connector或者其它的第三方插件;
具有多种访问方式:CLI、Web UI、REST API;
引入了基于角色的安全机制,管理员可以在sqoop Server上配置不同的角色。
工作机制
将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。