Sqoop原本是Hadoop的一个第三方模块,后期为了用户能够快速部署,完成更快速地迭代开发,Sqoop独立出来,成为Apache项目。
Sqoop作为一款开源工具,主要应用于Hadoop(Hive)与我们的传统结构型数据库之间的数据传递,比如我们可以将HDFS上的数据通过Sqoop导入到关系型数据库(MySQL、Oracle、DB2),同时也可以将数据从数据库导入到HDFS中。
由于Sqoop最早期是Hadoop的模块,所以Sqoop底层做的是MapReduce任务,通过将我们的导入导出命令翻译成MapReduce程序来完成作业,通过MapReduce将数据从数据库导到HDFS,或是从HDFS导入数据库。这一点和我们的Hive类似。
Sqoop发行了两个版本,Sqoop1和Sqoop2,Sqoop1.99.*之后的都是Sqoop2的版本,这两个版本各有优缺点:
Sqoop1:架构部署简单,但是sqoop1的命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏, 安装需要root权限。
Sqoop2:有多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。但是架构稍复杂,配置部署更繁琐。
Sqoop1架构
Sqoop2架构
为大家总结的Sqoop的常用指令:
Sqoop与Flume区别:
昨天我们聊到了,我们可以通过Flume采集网络日志数据,文件夹中的数据,mysql数据库的数据然后将采集过来的数据采集到HDFS、HBase、磁盘文件中。今天我们说到的Sqoop似乎也同样可以完成相同的工作,那么两者的区别是什么呢?
Flume和Sqoop是Hadoop数据集成和收集系统,两者的定位不一样。Flume有集群的概念,是一种分布式,可靠且可用的服务,主要用于高效地收集,汇总和移动大量日志数据。而我们的Sqoop是一种用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具(没有集群的概念)。Sqoop有助于在hadoop和其他数据库之间移动数据,并且可以并行传输数据以提高性能。两者可以做同样的工作,但是各自擅长的领域不同,因此应用场景也不同。
关注我们
领取专属 10元无门槛券
私享最新 技术干货