文章目录
大数据相关工具
Sqoop ETL工具
Sqoop简介
- Sqoop是apache旗下的一款 ”Hadoop和关系数据库之间传输数据”的工具
- 导入数据:将 MySQL、Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统
- 导出数据:从 Hadoop 的文件系统中导出数据到关系数据库

- 工作机制:
- 将导入和导出的命令翻译成mapreduce程序实现
- 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制
Sqoop1与Sqoop2架构对比
sqoop在发展中的过程中演进出来了两种不同的架构——架构演变史
- Sqoop1 架构:
- 版本号:1.4.x
- 使用 sqoop 客户端直接提交方式,CLI 控制台进行访问
- 安全性:命令或脚本中指定用户数据库名及密码

- Sqoop2 架构:
- 版本号:1.99.x
- 引入了sqoop server,对connector实现了集中的管理,可以通过 REST API、 JAVA API、 WEB UI 以及CLI 控制台方式进行访问

| 比较 | Sqoop1 | Sqoop2 |
|---|---|---|
| 架构 | 仅仅使用一个 Sqoop 客户端 | 引入了 Sqoop Server 集中化管理连接,以及 rest api、web ui,引入安全机制 |
| 部署 | 简单,使用 root 权限安装,连接器必须符合 JDBC | 架构稍复杂,配置部署更加繁琐 |
| 使用 | 命令方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,容易暴露密码 | 多种交互方式:命令行、WebUI、REST API,连接集中管理,完善的权限管理机制,connector仅仅负责数据的读写。 |
Sqoop安装部署
- Sqoop安装很简单,解压好进行简单的修改就可以使用
- 安装包下载&解压
wget http://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
# 解压
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /bigdata/install/
- 修改配置文件:
cd /bigdata/install/sqoop-1.4.7.bin__hadoop-2.6.0/conf
mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
# 根据自己实际的安装目录填写
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/bigdata/install/hadoop-3.1.4
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/bigdata/install/hadoop-3.1.4
#set the path to where bin/hbase is available
export HBASE_HOME=/bigdata/install/hbase-2.2.6
#Set the path to where bin/hive is available
export HIVE_HOME=/bigdata/install/hive-3.1.2
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/usr/apps/zookeeper-3.4.14/conf
- 添加两个必要的jar包:将
java-json.jar,mysql-connector-java-5.1.38.jar拷贝到sqoop的lib目录下
scp java-json.jar mysql-connector-java-5.1.38.jar hadoop@node03:/bigdata/install/sqoop-1.4.7.bin__hadoop-2.6.0/lib
- 配置 sqoop 的环境变量
sudo vim /etc/profile
export SQOOP_HOME=/bigdata/install/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
- 执行命令
sqoop help命令,有warning日志

- 解决方案:
# pwd = /bigdata/install/sqoop-1.4.7.bin__hadoop-2.6.0
vim bin/configure-sqoop

- 再次执行命令
sqoop help命令,一切正常啦!

Sqoop的数据导入
1. 列出所有数据库
# 列出node03主机所有的数据库
sqoop list-databases --connect jdbc:mysql://node03:3306/ --username root --password 123456
# 查看某一个数据库下面的所有数据表
sqoop list-tables --connect jdbc:mysql://node03:3306/mysql --username root --password 123456

2. 准备表数据
- 初始化数据:
CREATE DATABASE /*!32312 IF NOT EXISTS*/`userdb` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `userdb`;
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`id` INT(11) DEFAULT NULL,
`name` VARCHAR(100) DEFAULT NULL,
`deg` VARCHAR(100) DEFAULT NULL,
`salary` INT(11) DEFAULT NULL,
`dept` VARCHAR(10) DEFAULT NULL,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_delete` BIGINT(20) DEFAULT '1'
) ENGINE=INNODB DEFAULT CHARSET=latin1;
INSERT INTO `emp`(`id`,`name`,`deg`,`salary`,`dept`) VALUES (1201,'gopal','manager',50000,'TP'),(1202,'manisha','Proof reader',50000,'TP'),(1203,'khalil','php dev',30000,'AC'),(1204,'prasanth','php dev',30000,'AC'),(1205,'kranthi','admin',20000,'TP');
DROP TABLE IF EXISTS `emp_add`;
CREATE TABLE `emp_add` (
`id` INT(11) DEFAULT NULL,
`hno` VARCHAR(100) DEFAULT NULL,
`street` VARCHAR(100) DEFAULT NULL,
`city` VARCHAR(100) DEFAULT NULL,
`create_time` TIMESTAMP NOT


1317

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



