数据转换工具Sqoop的安装与实战操作
JunLeon——go big or go home

目录
前言:
随着Hadoop大数据平台的广泛应用,用户将数据集在Hadoop和传统数据库之间转移的需求也越来越大。传统ETL工具对于Hadoop平台的兼容性相对不高,所以Apache推出了Sqoop,它可以在Hadoop和关系型数据库之间转移数据。Sqoop项目开始于2009年,最早是作为Hadoop的第三方模块存在,后来为了让使用者能够快速部署,开发人员能够更快速地迭代开发,Sqoop独立成为一个Apache项目,并于2012年成为顶级项目。
Sqoop用于在结构化数据存储和Hadoop大数据平台(如大型主机或关系型数据库MySQL、Oracle、Postgres等)之间高效传输批量数据。用户可以使用Sqoop将数据从外部结构化数据存储导入Hadoop平台,如Hive和HBase。同时,Sqoop也可用于从Hadoop中提取数据,并将其导出到外部结构化数据存储(如关系型数据库和企业数据仓库)
一、Sqoop的概述
1、什么是Sqoop?
Sqoop 是 SQL to Hadoop 的缩写,是一款开源、免费的数据转换工具,主要用在 Hadoop 与传统关系数据库之间进行高效块数据的转移。可以将一个关系数据库中的数据导入到 Hadoop 的 HDFS 文件系统、 HBase 数据库、 Hive 数据仓库中,也可以将 Hadoop 的数据导入到关系数据库中。
2、Sqoop的功能与特性
(1)Sqoop的功能
Sqoop是Hadoop中简单高效的数据传输工具。主要功能为以下两个。
import : RDBMS-->Hadoop
-
将数据从关系型数据库或大型主机导入到Hadoop平台,导入进程中的输入内容是数据库表或主机数据集。对于数据库,Sqoop将逐行读取表格到Hadoop。对于主机数据集,Sqoop将从每个主机数据集读取记录到HDFS。导入过程的输出是一组文件,其中包含导入的表或数据集的副本。导入过程是并行执行的。因此,输出将在多个文件中产生。
export: Hadoop -- > RDBMS
-
将数据从Hadoop平台导出到关系数据库或大型主机,Sqoop的导出过程会并行地从HDFS读取所需数据,将它们解析为记录,如果导出到数据库,则将它们作为新行插入到目标数据库表中,如果导出到大型主机,则直接形成数据集,供外部应用程序或用户使用。
用户使用Sqoop时,只需要通过简单的命令进行操作,Sqoop会自动化数据传输中的大部分过程。Sqoop使用MapReduce导入和导出数据,提供并行操作和容错功能。 在使用Sqoop的过程中,用户可以定制导入、导出过程的大多数方面,可以控制导入的特定行范围或列,也可以为数据的基于文件的表示以及所使用的文件格式指定特定的分隔符和转义字符。
(2)Sqoop的特性
Sqoop专门用于Hadoop平台与外部数据源的数据交互,对Hadoop生态系统是一个有力的补充。Sqoop具有以下特性。
-
并行处理
Sqoop充分利用了MapReduce的并行特点,以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。
-
适用性高
通过JDBC接口和关系型数据库进行交互,理论上支持JDBC接口的数据库都可以使用Sqoop和Hadoop进行数据交互。
-
使用简单
用户通过命令行的方式对Sqoop进行操作,一共只有15条命令。其中13条命令用于数据处理,操作简单,用户可以轻松地完成Hadoop与RDBMS的数据交互。
二、Sqoop的环境搭建
1、环境准备
(1)sqoop下载
官方下载:Index of /dist/sqoop
注:Sqoop 分为 1.x 和 2.x 两个版本序列 (称为 Sqoop1 和 Sqoop2)二者完全不兼容,当前 Sqoop1 的最新稳定版本为 1.4.7,故下载 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 即可。
(2)上传至虚拟机Hadoop集群的主节点
使用XShell或者其他远程连接工具将下载好的sqoop压缩包上传Hadoop主节点的虚拟机的/opt目录中,方便接下来的安装。
2、安装配置
(1)解压上传的压缩包
cd /opt
# 如果压缩包不在/opt目录中,则需要使用[-C /opt]指定解压到/opt目录下
[root@BigData01 opt]# tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz # 解压压缩包
[root@BigData01 opt]# mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7 # 更改sqoop安装的目录名
(2)配置Sqoop
1.配置环境变量
vi /etc/profile
export SQOOP_HOME=/opt/sqoop-1.4.7
export PATH=$SQOOP_HOME/bin:$PATH
使环境变量配置生效:
source /etc/profile
2.配置sqoop-env.sh文件
复制模板文件:
[root@BigData01 conf]# cd $SQOOP_HOME/conf
[root@BigData01 conf]# cp sqoop-env-template.sh sqoop-env.sh
配置:vi sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/hadoop-2.7.3
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/hadoop-2.7.3
#set the path to where bin/hbase is available
export HBASE_HOME=/opt/hbase-1.4.13
#Set the path to where bin/hive is available
export HIVE_HOME=/opt/hive-2.3.3
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/opt/zookeeper-3.4.12
(3)复制MySQL驱动包到$SQ OOP_HOME/lib目录下
1.上传MySQL驱动包
将MySQL驱动包 mysql-connector-java-5.1.49.jar 上传至/opt目录下
2.复制到$SQOOP_HOME/lib目录下
cd /opt
cp mysql-connector-java-5.1.49.jar $SQOOP_HOME/lib/
3、sqoop测试
(1)启动MySQL服务
systemctl start mysqld # CentOS 7 启动MySQL服务
service mysqld start # CentOS 6 启动MySQL服务
(2)测试--连接MySQL
[root@BigData01 ~]# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root -P

Sqoop 是一款用于在 Hadoop 和 RDBMS 之间高效转移批量数据的工具。它提供了并行处理、高适用性和简单易用的特性。在环境搭建中,需要下载 Sqoop 压缩包,解压并配置环境变量,复制 MySQL 驱动到指定目录。在实战部分, Sqoop 支持 import 导入数据、export 导出数据,以及各种命令参数来定制数据处理。例如,使用 `--connect` 指定数据库连接,`--table` 指定表名,`--fields-terminated-by` 定义字段分隔符。在遇到问题时,可能需要检查数据库权限、字段分隔符和字符编码设置。
978

被折叠的 条评论
为什么被折叠?



