转载

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan   。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237

【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs ,下载该 PDF 文件

1 搭建环境

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

Hadoop 搭建环境:

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

l   JDK1.7.0_55 64

l   Hadoop1.1.2

2 Sqoop 介绍

2.1   Sqoop 简介

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

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

那么为什么选择 Sqoop 呢?  

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

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

l   支持多种主流数据库, MySQL,OracleSQL ServerDB2 等等  

2.2   Sqoop1Sqoop2 比较

2.2.1   Sqoop1Sqoop2 异同

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   Sqoop1Sqoop2 的架构图

Sqoop 架构图 1

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

Sqoop 架构图 2

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

2.2.3   Sqoop1Sqoop2 的优缺点

比较

Sqoop1

Sqoop2

架构

仅仅使用一个 Sqoop 客户端

引入了 Sqoop server 集中化管理 connector ,以及 rest apiwebUI ,并引入权限安全机制

部署

部署简单,安装需要 root 权限, connector 必须符合 JDBC 模型

架构稍复杂,配置部署更繁琐

使用

命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏

多种交互方式,命令行, web UIrest APIconncetor 集中化管理,所有的链接安装在 Sqoop server 上,完善权限管理机制, connector 规范化,仅仅负责数据的读写

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

3 安装部署 Sqoop

3.1   下载 Sqoop

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

也可以在 /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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

3.2   设置 /etc/profile 参数

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

export SQOOP_HOME=/app/sqoop-1.4.5

export PATH=$PATH:$SQOOP_HOME/bin

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

编译配置文件 /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

注释掉 HBaseZookeeper 等检查(除非使用 HBaseZookeeperHADOOP 上的组件)

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

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入门进阶课程11--Sqoop介绍、安装与操作

设置 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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

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

3.5   验证安装完成

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

sqoop help

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4 文件导入 / 导出

4.1   MySql 数据导入到 HDFS

如果没有安装 MySql ,请参照第 83.1 进行安装

4.1.1   下载 MySql 驱动

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

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

cd /home/shiyanlou/install-pack

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4.1.2   启动 MySql 服务

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

sudo service mysql status

sudo service mysql start

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

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;

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4.1.4   MySql 数据导入到 HDFS

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

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

使用如下命令把 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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4.1.5   查看导出结果

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

hadoop fs -ls /user/shiyanlou/TBLS

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4.2   MySql 数据导入到 Hive

4.2.1   启动 metastorehiveserver

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

hive --service metastore &

hive --service hiveserver &

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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

4.2.2   MySql 导入表数据到 Hive

使用如下命令到把 MySqlTBLS 表数据导入到 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

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

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

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

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

4.2.3   查看导出结果

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

hive

hive>show tables;

hive>desc MySql2Hive;

Hadoop入门进阶课程11--Sqoop介绍、安装与操作

正文到此结束
Loading...