大数据组件工具——数据导入导出 Sqoop

大数据相关工具

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.jarmysql-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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讲文明的喜羊羊拒绝pua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值