![自己动手做大数据系统(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/236/32375236/b_32375236.jpg)
2.4 Sqoop
Sqoop是一个用Java编程语言开发的数据同步工具,主要用来同步关系型数据库(如MySQL、Oracle、SQL Server等)的数据到大数据平台,当然其也支持把大数据平台计算的结果数据同步到关系型数据库。所以,我们也可以将Sqoop理解为SQL+Hadoop。在企业大数据平台中选用Sqoop来做数据同步工具,主要有以下3个原因。
第一,Sqoop可以保证数据类型的兼容性,从而保证可以把数据不失真地采集到大数据平台。Sqoop在抽取各种数据库的数据时,会先获取该数据库所对应的数据类型。Sqoop会使用目标数据库所自带的数据库驱动程序来读取数据类型,从而保证数据类型的可靠性。比如,Sqoop要从MySQL数据库读取数据时,用户要从MySQL官网下载对应的连接驱动,并将该驱动文件放至Sqoop的lib类库文件夹下,以供后续连接使用。
第二,Sqoop区别于其他传统的ETL(Extract-Transform-Load)工具的一个主要优势是,在Sqoop的源码中通过使用MapReduce分布式并行算法的调用,可以进行多任务的数据同步。这在同步效率上会比传统的单任务执行得好。
第三,Sqoop支持多种文件格式。除了常见的文本格式外,其还可以支持Hadoop环境中便于动态脚本使用的Avro类型和可压缩、可切分的SequenceFile数据类型,这样就可以满足在HDFS中根据特定的业务场景来选用对应的文件存储格式。
Sqoop在生产应用中主要有两个版本,即以1.4.*开头的Sqoop 1和以1.99.*开头的Sqoop 2。从选型角度来看,如果大数据平台有统一的安全平台和调度系统,采用Sqoop 1部署比较简单。这时对应的Sqoop任务直接接入调度系统,这样就减少了与生产系统相关的依赖和运维排查(对于Hadoop 2.2以后的版本,Sqoop 1需要根据具体的版本进行编译)。Sqoop 2相对于Sqoop 1增加了安全机制和任务调度管理。如果大数据平台没有统一的安全平台和调度系统,就可以基于该Sqoop 2形成统一的Sqoop数据同步、任务调度接口来进行运维。Sqoop 1和Sqoop 2的架构及部署对比说明如图2-4、图2-5和表2-2所示。
![](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_41.jpg?sign=1738884171-L9Hj7R4uIVeBvwOgL9GeSDKwV5xmtMoq-0-286c36637585970109fd4b2076aeff1e)
图2-4 Sqoop 1架构图
![](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_42.jpg?sign=1738884171-cAJZS2fTCPd3Sya6fUnJmXD3YWxdvQsC-0-e7e74cfcfd55a4c3de2a9cdf0f9471e8)
图2-5 Sqoop 2架构图
表2-2 Sqoop 1和Sqoop 2的架构及部署对比说明
![img](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_43.jpg?sign=1738884171-kWqp2IWO3NODqHrK1vZ2oGjw1TIawtFL-0-a23c883203532f42e247cb71a044414d)
2.4.1 Sqoop安装文件的准备
具体准备如下:
• Sqoop 1.4.*版本的安装文件为sqoop-1.4.5.bin-hadoop-2.0.4-alpha.tar.gz。
• Sqoop 2的安装文件为sqoop-1.99.6-bin-hadoop200.tar.gz。
• MySQL的连接驱动也可以在Oracle官网找到。
2.4.2 Sqoop的安装及配置
1.Sqoop 1的安装及配置
Sqoop 1的安装与配置比较简单,直接解压缩并重命名解压缩后的文件夹,具体配置可参考Sqoop 2。只需设置基本环境变量和对应的连接jar包即可。
![](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_44.jpg?sign=1738884171-RMXmLJxdTz3XOXw3gGEH1bJDYzSuiRh7-0-e7e3f879e5d9c978e8c0dd6daf03deb1)
2.Sqoop 2的安装及配置
在要安装Sqoop的服务器上解压缩安装包并重命名,然后修改相关参数:
![](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_45.jpg?sign=1738884171-KKDQJfWwwVXXeWFjHW2GshNYcFEvXYRA-0-f4b3578b9f44a392cbd30be1758bb522)
2.4.3 Sqoop运行验证
启动Sqoop的服务器和客户端(Client):
![](https://epubservercos.yuewen.com/EE9D0A/17493186606224406/epubprivate/OEBPS/Images/txt003_46.jpg?sign=1738884171-Wr6CyBmdU3czzr99cy1HjYsWPKnWvUWR-0-826479afc38ff67c24f64b1f68d1dcf0)