返回 导航

大数据

hangge.com

Sqoop - 数据库离线数据采集工具使用详解1(基本介绍、安装配置)

作者:hangge | 2024-04-07 08:55

一、基本介绍

1,什么是 Sqoop?

    Sqoop 是由 Apache 开源的一个可以将 Hadoop 和关系型数据库中的数据相互转移的工具,可以将关系型数据库(例如 MySQLOracle 等)中的数据导入 Hadoop,也可以将 Hadoop 中的数据导出到关系型数据库中。

2,Sqoop 的版本说明

(1)Sqoop 目前有两个版本,完全不兼容。可以从版本号进行区分:1.4.x Sqoop 11.99.xSqoop2
  • Sqoop 1 中,Sqoop 只是一个客户端工具,负责将用户提交的命令转换为 MapReduce 任务去执行,从而实现关系型数据库和 Hadoop 的相互导入/导出。
  • Sqoop 2 中,引入了 Sqoop 服务端,对 Connector 实现了集中的管理,完善了权限管理机制,支持多种交互方式:命令行、Web UI REST API
使用建议:在实际使用过程中发现,Sqoop 1 的稳定性要优于 Sqoop 2Sqoop 2 中有很多未知的问题。所以建议大家在使用时优先选择 Sqoop 1

(2)相对来说,Sqoop 1 更加简洁,轻量级。但是在安全性能方面 Sqoop 1 不如 Sqoop 2
  • Sqoop 1 中,经常用脚本的方式将 Hadoop 中的数据导入 MySQL,或者将 MySQL 数据导入Hadoop。此时在脚本中要显式指定 MySQL 数据库的用户名和密码,安全性不是太完善。
  • Sqoop 2 中,如果通过命令行方式进行访问,则有一个输入密码的交互过程,输入的密码信息不会直接暴露出来。
说明:不过一般使用 Sqoop 1 也没有什么问题,因为在生产环境下访问 MySQL 时,是需要申请访问权限的,就算你知道 MySQL 的用户名和密码,但是你没有权限访问 MySQL 的那台机器,所以这样也是安全的,只要运维人员把权限控制到位就可以了。

3,Sqoop 1 的架构分析

(1)Sqoop 1 仅使用了一个 Sqoop 客户端,属于 Hadoop 生态系统中架构最简单的框架了。
(2)Sqoop 1 中产生的 MapReduce 任务只有 Map 阶段没有 Reduce 阶段,因为数据读取和数据转换都在 Map 阶段执行。

4,Sqoop 2 架构分析

(1)Sqoop 2 中引入了服务端,所以 Sqoop 2 的架构比 Sqoop 1 的架构复杂。
(2)Sqoop 2 中产生的 Mapreduce 任务既有 Map 阶段也有 Reduce 阶段,数据读取在 Map 阶段执行,数据转换在 Reduce 阶段执行,这样便于扩展。

5,Sqoop 核心功能架构分析

(1)以 Sqoop 1 版本为例,Sqoop 中的两大核心功能是导入和导出:
  • 导入:从关系型数据库将数据导入 Hadoop 中。
  • 导出:从 Hadoop 中将数据导出到关系型数据库中。

(2)Sqoop 导入功能的流程如下图所示:

(3)Sqoop 导出功能的流程如下图所示:

6,Sqoop 1 和 Sqoop 2 的优缺点对比

(1)Sqoop 1 优缺点:
  • 优点:架构非常简单。
  • 缺点:命令行方式需要配置过多的参数,容易出错,格式紧耦合,安全机制不够完善。
(2)Sqoop 2 优缺点:
  • 优点:支持多种交互方式(命令行、Web UIREST API),Conncetor 集中化管理,所有的链接被安装在 Sqoop 服务端上,拥有完善权限管理机制。
  • 缺点:架构稍复杂,配置较烦琐。

附:安装配置

1,准备工作

    要使用 Sqoop,除需要 JDK(建议使用 JDK 1.8 版本)外,还需要保证 Sqoop 所在的机器能正常操作 Hadoop 集群,因为 Sqoop 底层会将命令转换为 MapReduce 代码,然后将其提交到 Hadoop 集群中去执行。

2,下载安装包

(1)访问 Sqoop 的官网地址(点击访问),选择合适的版本下载,比如我这里下载的是 1.4.7 版本:
wget https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

(2)然后将 Sqoop 安装包解压即可:
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

(3)最后将解压出来的文件夹拷贝到指定目录(这个可以根据习惯调整目录的位置):
mv sqoop-1.4.7.bin__hadoop-2.6.0 /usr/local/sqoop

3,修改配置

(1)首先进入 sqoopconf 目录:
cd /usr/local/sqoop/conf

(2)接着执行如下命令修改配置文件的名称:
mv sqoop-env-template.sh sqoop-env.sh

(3)然后编辑 profile 文件:
vi /etc/profile

(4)在末尾处添加如下 SQOOP 环境变量参数后保存退出:
export SQOOP_HOME=/usr/local/sqoop
export PATH=$SQOOP_HOME/bin:$PATH

(5)最后执行如下命令让配置生效:
source /etc/profile

4,MySQL 相关工作

(1)假设我们需要使用 Sqoop 操作 MySQL,所以需要把 MySQL 的驱动程序 Jar 包添加到 Sqooplib 目录下(其他数据库同理)。

(2)同时我们还需要开放 MySQL 的远程访问权限,这样Hadoop 集群中的机器才可以连接远程机器上的 MySQL 服务。具体操作步骤可以参考我之前写的文章:
评论

全部评论(0)

回到顶部