Sqoop介绍、搭建、安装、部署

本文介绍了如何在CentOS环境下安装配置Sqoop,并演示了从MySQL导入数据到HDFS及Hive的具体步骤。涵盖环境搭建、Sqoop版本对比、安装部署及数据迁移等内容。

1、搭建环境

部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app),来源:CUUG官网

Hadoop搭建环境:

l 虚拟机操作系统: CentOS6.6 64位,单核,1G内存

l JDK:1.7.0_55 64位

l Hadoop:1.1.2

2、Sqoop介绍

2.1 Sqoop简介

Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1和Sqoop2。

Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive、hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入。

那么为什么选择Sqoop呢?

l 高效可控的利用资源,任务并行度,超时时间。

l 数据类型映射与转化,可自动进行,用户也可自定义

l 支持多种主流数据库,MySQL,Oracle,SQL Server,DB2等等

2.2 Sqoop1和Sqoop2比较

2.2.1 Sqoop1和Sqoop2异同

l 两个不同的版本,完全不兼容

l 版本号划分区别,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2) CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)

l Sqoop2比Sqoop1的改进

(1)引入Sqoop server,集中化管理connector等

(2)多种访问方式:CLI,Web UI,REST API

(3)引入基于角色的安全机制

2.2.2 Sqoop1与Sqoop2的架构图

Sqoop架构图1

 

 

Sqoop架构图2

 

 

2.2.3 Sqoop1与Sqoop2的优缺点

比较Sqoop1Sqoop2

架构仅仅使用一个Sqoop客户端引入了Sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制

部署部署简单,安装需要root权限,connector必须符合JDBC模型架构稍复杂,配置部署更繁琐

使用命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在Sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写

 

 

3、安装部署Sqoop

3.1 下载Sqoop

可以到apache基金sqoop官网http://hive.apache.org/,选择镜像下载地址:http://mirror.bit.edu.cn/apache/sqoop/下载一个稳定版本,如下图所示下载支持Hadoop1.X的1.4.5版本gz包:

 

 

也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app目录中

cd /home/shiyanlou/install-pack

tar -xzf sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz

mv sqoop-1.4.5.bin__hadoop-1.0.0 /app/sqoop-1.4.5

ll /app

 

 

3.2 设置/etc/profile参数

编辑/etc/profile文件,加入sqoop的Home路径和在PATH加入bin的路径:

export SQOOP_HOME=/app/sqoop-1.4.5

export PATH=$PATH:$SQOOP_HOME/bin

 

 

编译配置文件/etc/profile,并确认生效

source /etc/profile

echo $PATH

3.3 设置bin/configure-sqoop配置文件

修改bin/configure-sqoop配置文件

cd /app/sqoop-1.4.5/bin

sudo vi configure-sqoop

注释掉HBase和Zookeeper等检查(除非使用HBase和Zookeeper等HADOOP上的组件)

 

 

3.4 设置conf/sqoop-env.sh配置文件

如果不存在sqoop-env.sh文件,复制sqoop-env-template.sh文件,然后修改sqoop-env.sh配置文件

cd /app/sqoop-1.4.5/conf

cp sqoop-env-template.sh sqoop-env.sh

sudo vi sqoop-env.sh

 

 

设置hadoop运行程序所在路径和hadoop-*-core.jar路径(Hadoop1.X需要配置)

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=/app/hadoop-1.1.2

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/app/hadoop-1.1.2

 

 

编译配置文件sqoop-env.sh使之生效

3.5 验证安装完成

输入如下命令验证是否正确安装sqoop,如果正确安装则出现sqoop提示

sqoop help

 

 

4、文件导入/导出

4.1 MySql数据导入到HDFS中

如果没有安装MySql,请参照第8课3.1进行安装

4.1.1 下载MySql驱动

到MySql官网进入下载页面:http://dev.mysql.com/downloads/connector/j/ ,选择所需要的版本进行下载,这里下载的zip格式的文件,然后在本地解压:

 

 

也可以在/home/shiyanlou/install-pack目录中找到该安装包,把MySql驱动包使用如下命令放到Sqoop的lib目录下

cd /home/shiyanlou/install-pack

cp mysql-connector-java-5.1.22-bin.jar /app/sqoop-1.4.5/lib

 

 

4.1.2 启动MySql服务

查看MySql服务并查看状态,如果没有启动则启动服务

sudo service mysql status

sudo service mysql start

 

 

4.1.3 查看MySql中的数据表

进入MySql数据库,选择有数据的一张表查看内容,比较导出结果是否正确,输入如下命令:

mysql -uhive -phive

mysql>show databases;

mysql>use hive;

mysql>show tables;

mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;

 

 

 

 

4.1.4 把MySql数据导入到HDFS中

使用如下命令列出MySql中所有数据库:

sqoop list-databases --connect jdbc:mysql://hadoop:3306/ --username hive --password hive

 

 

使用如下命令把hive数据库TBLS表数据导入到HDFS中:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS -m 1

l--username 数据库用户名

l--password连接数据库密码

l--table 表名

l-m 1表示map数

 

 

4.1.5 查看导出结果

使用如下命令查看导出到HDFS结果,文件路径在当前用户hadoop目录下增加了TBLS表目录,查看part-m-00000文件:

hadoop fs -ls /user/shiyanlou/TBLS

hadoop fs -cat /user/shiyanlou/TBLS/part-m-00000

 

 

4.2 MySql数据导入到Hive中

4.2.1 启动metastore和hiveserver

在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:

hive --service metastore &

hive --service hiveserver &

启动用通过jps命令可以看到两个进行运行在后台

 

 

4.2.2 从MySql导入表数据到Hive中

使用如下命令到把MySql中TBLS表数据导入到Hive中:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1

l-- username为mysql中的数据库连接用户名

l--password为mysql中的数据库连接密码

l--table为导出表

l--hive-table test1 为导出表在Hive中的名称

l-m 1表示map数

 

 

 

 

从运行的日志可以看到,这个过程有两个阶段:

1. 第一个阶段是从MySql中把数据到HDFS文件中

2. 第二个阶段是从HDFS中把数据写入到MySql中

4.2.3 查看导出结果

登录hive,在hive创建表并查看该表,命令如下:

hive

hive>show tables;

hive>desc MySql2Hive;

 

### Sqoop 1.99.1 的安装与配置 #### 环境准备 在开始 Sqoop 1.99.1 的安装之前,需确保环境已满足其依赖条件。Sqoop 是用于在 Hadoop 和关系型数据库之间传输数据的工具,因此需要 Java、Hadoop 和 Maven 已经正确安装并运行于目标机器上[^1]。 以下是必要的软件及其最低版本要求: - **Java**: 推荐使用 JDK 8 或更高版本。 - **Maven**: 版本应不低于 3.x。 - **Hadoop**: 至少支持 Hadoop 2.x 及以上版本。 #### 下载 Sqoop 源码 由于 Apache 官方文档并未单独提供针对 1.99.1 的独立页面说明,可以参考更接近版本(如 1.99.2)的相关指导来完成操作。下载 Sqoop 1.99.1 的源代码包可以通过以下命令实现: ```bash wget https://archive.apache.org/dist/sqoop/1.99.1/apache-sqoop-1.99.1-src.tar.gz tar -xzvf apache-sqoop-1.99.1-src.tar.gz cd apache-sqoop-1.99.1-src/ ``` #### 构建 Sqoop 构建过程主要依靠 Maven 来编译和打包项目文件。执行如下命令以生成可部署的二进制文件: ```bash mvn clean install -DskipTests ``` 此命令会跳过测试阶段以加快构建速度,并将最终产物放置到 `target` 文件夹下。 #### 配置 Sqoop 成功构建之后,还需要设置一些基本参数以便正常使用该工具。编辑 `$SQOOP_HOME/conf/sqoop-env.sh` 脚本来指定 HADOOP_HOME 和其他必要变量的位置: ```bash export HADOOP_COMMON_HOME=/path/to/hadoop/common export HADOOP_MAPRED_HOME=/path/to/hadoop/mapreduce export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` 另外,如果计划连接 MySQL 数据库,则可能需要用到 JDBC 驱动程序。将其复制至 lib 目录即可加载驱动器服务功能。 ```bash cp mysql-connector-java-x.x.xx-bin.jar $SQOOP_HOME/lib/ ``` #### 测试 Sqoop 功能 最后一步是对新搭建好的 Sqoop 进行简单的验证工作。尝试导入少量表结构或者记录数较少的数据集作为初步检验手段之一。 ```bash sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root -P ``` 上述指令将会请求输入密码(-P选项),随后返回当前服务器上的所有可用数据库名称列表。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值