Sqoop学习(一) —— 简单理论总结
一、前言
最近项目中需要用到sqoop,刚开始还以为是之前完全没接触过的技术,后面用上之后才发现本科毕设那会帮实验室跑测试用过,顿时感受到遗忘的力量,不过当时也就只是搜了几个需要用到的命令执行完成任务就完事了,也没去具体的学习,最近利用时间快速的过了一下,在此进行简单的总结。
二、参考链接
- 官网链接:http://sqoop.apache.org/
- 用户手册:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
- 知识点参考学习:https://www.cnblogs.com/qingyunzong/p/8807252.html
- https://blog.****.net/qq_26803795/article/details/80905651
三、知识点
3.1 Sqoop产生背景
在基于Hadoop生态框架的大数据技术来临之后,需要将数据导入大数据平台中,然而当时数据基本上都存储在传统的关系型数据库中,如何将数据从RDBMS转入Hadoop生态环境中(HDFS、Hive、HBase等)是个难题,Sqoop工具由此诞生。
3.2 Sqoop概念介绍
Sqoop是连接RDBMS和Hadoop的桥梁、数据ETL工具 ,主要操作涉及两个方面,即导入import和导出export。其中import是指将数据从RDBMS中传送到Hadoop(HDFS、Hive、HBase)中,export指将数据从Hadoop中传送到RDBMS中。
Sqoop支持数据的全量和增量更新,这里简单解释一下全量和增量,全量和增量是数据同步的两种方式,前者是一次性导入数据,后者支持将新数据以append方式进行同步。
3.3 Sqoop的优势
- 可自动完成数据映射和转换,也可用户自定义映射关系
- 支持多种数据库(RDBMS如MySQL、Oracle;Hadoop下如Hive、HBase)
- 高效可控,可通过调整任务数来控制任务的并发度(根据后续实战此处猜测是命令中的--num-mappers 1中对于这个数值的定义来控制任务并发数)
3.4 Sqoop的版本说明
- Sqoop1:部署简单,Sqoop工具接收到客户端的shell命令或者java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据拷贝
- Sqoop2:相较于Sqoop1来讲,Sqoop2添加了Sqoop Server机制,同时支持web ui和rest api,部署较为复杂
说明:一般练习使用Sqoop1足以,对Sqoop的需求如果只是一个转换RDBMS和Hive数据的工具的话安装部署Sqoop1即可,如果对其有更高的性能等要求可选择安装部署Sqoop2
3.5 Sqoop的工作机制
从本质上讲,Sqoop就是一个数据ETL工具,具体来讲是将Sqoop的数据转换命令转为MapReduce任务(job),所以也就依赖于Hadoop基础环境,数据格式的转换主要是通过对MR程序中的InputFormat和OutputFormat进行定制实现
四、总结
此篇博客算是通过学习他人博客关于Sqoop的总结然后自己做的一个小总结,后续如果有其他方面的深入学习会继续更新~