hadoop学习第十一节: Sqoop介绍、安装与操作
2016-12-15 11:08
603 查看
1 搭建环境
Hadoop搭建环境:
虚拟机操作系统: CentOS7.1 64位,单核,1G内存
JDK:1.7 64位
Hadoop:2.2.0
2 Sqoop介绍
2.1 Sqoop简介
Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1和Sqoop2。
Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive、hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入。 那么为什么选择Sqoop呢?
高效可控的利用资源,任务并行度,超时时间。
数据类型映射与转化,可自动进行,用户也可自定义
支持多种主流数据库,MySQL,Oracle,SQL Server,DB2等等
2.2 Sqoop1和Sqoop2比较
2.2.1 Sqoop1和Sqoop2异同
两个不同的版本,完全不兼容
版本号划分区别,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2) CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)
Sqoop2比Sqoop1的改进
引入Sqoop server,集中化管理connector等
多种访问方式:CLI,Web UI,REST API
引入基于角色的安全机制
2.2.2 Sqoop1与Sqoop2的架构图
Sqoop架构图1
Sqoop架构图2
2.2.3 Sqoop1与Sqoop2的优缺点
3 安装部署Sqoop
3.1 下载Sqoop
可以到apache基金sqoop官网http://hive.apache.org/,选择镜像下载地址:http://mirror.bit.edu.cn/apache/sqoop/下载一个稳定版本,如下图所示下载支持Hadoop1.X的1.4.5版本gz包:
)
我在这里下的 sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz , 其实开始安装的 sqoop-1.99.7,也就是sqoop2,无奈搭了整整一天环境。。依然连不上server,只好放弃换成了1代。
tar -xzf
sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz (解压)
mv sqoop-1.4.6.bin_hadoop-2.0.4-alpha /home/app/sqoop-1.4.6 (将解压后的文件夹改名移到自己要放的地方)
3.2 设置/etc/profile参数
编辑/etc/profile文件,加入sqoop的Home路径和在PATH加入bin的路径:
export SQOOP_HOME=/home/app/sqoop-1.4.6
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.6/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路径
export HADOOP_COMMON_HOME=/home/app/hadoop-2.2.0
export HADOOP_MAPRED_HOME=/home/app/hadoop-2.2.0
编译配置文件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格式的文件,然后在本地解压:
把MySql驱动包使用如下命令放到Sqoop的lib目录下
cp mysql-connector-java-5.1.40-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://hadoop1:3306/ --username hive --password hive
使用如下命令把hive数据库TBLS表数据导入到HDFS中:
sqoop import --connect jdbc:mysql://hadoop1:3306/hive --username hive --password hive --table TBLS -m 1
--username 数据库用户名
--password连接数据库密码
--table 表名
-m 1表示map数
4.1.5 查看导出结果
使用如下命令查看导出到HDFS结果,文件路径在当前用户hadoop目录下增加了TBLS表目录,查看part-m-00000文件:
hadoop fs -ls /user/root/TBLS
hadoop fs -cat /user/root/TBLS/part-m-00000
4.2 MySql数据导入到Hive中
4.2.1 启动metastore和hiveserver
在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:
hive --service metastore &
hive --service hiveserver2 &
启动用通过jps命令可以看到两个进行运行在后台
4.2.2 从MySql导入表数据到Hive中
使用如下命令到把MySql中TBLS表数据导入到Hive中:
sqoop import --connect jdbc:mysql://hadoop1:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1 (这里因为上一步生成过TBLS的输出文件,需要先将hdfs中的TBLS目录删除,否则会报TBLS already exists!)
-- username为mysql中的数据库连接用户名
--password为mysql中的数据库连接密码
--table为导出表
--hive-table test1 为导出表在Hive中的名称
-m 1表示map数
从运行的日志可以看到,这个过程有两个阶段:
第一个阶段是从MySql中把数据到HDFS文件中
第二个阶段是从HDFS中把数据写入到MySql中
4.2.3 查看导出结果
登录hive,在hive创建表并查看该表,命令如下:
hive
hive>show tables;
hive>desc MySql2Hive;
Hadoop搭建环境:
虚拟机操作系统: CentOS7.1 64位,单核,1G内存
JDK:1.7 64位
Hadoop:2.2.0
2 Sqoop介绍
2.1 Sqoop简介
Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1和Sqoop2。
Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive、hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入。 那么为什么选择Sqoop呢?
高效可控的利用资源,任务并行度,超时时间。
数据类型映射与转化,可自动进行,用户也可自定义
支持多种主流数据库,MySQL,Oracle,SQL Server,DB2等等
2.2 Sqoop1和Sqoop2比较
2.2.1 Sqoop1和Sqoop2异同
两个不同的版本,完全不兼容
版本号划分区别,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2) CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)
Sqoop2比Sqoop1的改进
引入Sqoop server,集中化管理connector等
多种访问方式:CLI,Web UI,REST API
引入基于角色的安全机制
2.2.2 Sqoop1与Sqoop2的架构图
Sqoop架构图1
Sqoop架构图2
2.2.3 Sqoop1与Sqoop2的优缺点
3 安装部署Sqoop
3.1 下载Sqoop
可以到apache基金sqoop官网http://hive.apache.org/,选择镜像下载地址:http://mirror.bit.edu.cn/apache/sqoop/下载一个稳定版本,如下图所示下载支持Hadoop1.X的1.4.5版本gz包:
)
我在这里下的 sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz , 其实开始安装的 sqoop-1.99.7,也就是sqoop2,无奈搭了整整一天环境。。依然连不上server,只好放弃换成了1代。
tar -xzf
sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz (解压)
mv sqoop-1.4.6.bin_hadoop-2.0.4-alpha /home/app/sqoop-1.4.6 (将解压后的文件夹改名移到自己要放的地方)
3.2 设置/etc/profile参数
编辑/etc/profile文件,加入sqoop的Home路径和在PATH加入bin的路径:
export SQOOP_HOME=/home/app/sqoop-1.4.6
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.6/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路径
export HADOOP_COMMON_HOME=/home/app/hadoop-2.2.0
export HADOOP_MAPRED_HOME=/home/app/hadoop-2.2.0
编译配置文件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格式的文件,然后在本地解压:
把MySql驱动包使用如下命令放到Sqoop的lib目录下
cp mysql-connector-java-5.1.40-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://hadoop1:3306/ --username hive --password hive
使用如下命令把hive数据库TBLS表数据导入到HDFS中:
sqoop import --connect jdbc:mysql://hadoop1:3306/hive --username hive --password hive --table TBLS -m 1
--username 数据库用户名
--password连接数据库密码
--table 表名
-m 1表示map数
4.1.5 查看导出结果
使用如下命令查看导出到HDFS结果,文件路径在当前用户hadoop目录下增加了TBLS表目录,查看part-m-00000文件:
hadoop fs -ls /user/root/TBLS
hadoop fs -cat /user/root/TBLS/part-m-00000
4.2 MySql数据导入到Hive中
4.2.1 启动metastore和hiveserver
在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:
hive --service metastore &
hive --service hiveserver2 &
启动用通过jps命令可以看到两个进行运行在后台
4.2.2 从MySql导入表数据到Hive中
使用如下命令到把MySql中TBLS表数据导入到Hive中:
sqoop import --connect jdbc:mysql://hadoop1:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1 (这里因为上一步生成过TBLS的输出文件,需要先将hdfs中的TBLS目录删除,否则会报TBLS already exists!)
-- username为mysql中的数据库连接用户名
--password为mysql中的数据库连接密码
--table为导出表
--hive-table test1 为导出表在Hive中的名称
-m 1表示map数
从运行的日志可以看到,这个过程有两个阶段:
第一个阶段是从MySql中把数据到HDFS文件中
第二个阶段是从HDFS中把数据写入到MySql中
4.2.3 查看导出结果
登录hive,在hive创建表并查看该表,命令如下:
hive
hive>show tables;
hive>desc MySql2Hive;
相关文章推荐
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- Hadoop入门进阶课程11--Sqoop介绍、安装与操作
- 个人hadoop学习总结:Hadoop集群+HBase集群+Zookeeper集群+chukwa监控(包括单机、伪分布、完全分布安装操作)
- Hadoop学习6_CentOS6.5系统下Hadoop2.6.0完全分布式环境安装与配置信息介绍
- Hadoop-2.3.0学习(3)——Hadoop Shell的基本操作介绍
- hadoop学习之sqoop(7):sqoop的安装与使用
- Sqoop介绍、安装与操作
- hadoop学习第九节:Mahout介绍、安装与应用案例
- Hadoop学习之第八章节:Sqoop安装配置
- hadoop学习笔记-hive安装及操作
- hadoop学习第七节:Pig介绍、安装与应用案例
- hadoop学习第八节:Hive介绍和安装部署(根据实验楼整理)
- hadoop入门学习系列之六hadoop学习之sqoop安装
- hadoop2.4.1伪分布式安装,hdfs命令行操作学习笔记
- hadoop学习笔记之-pig安装及操作实例
- hadoop学习第十节:HBase介绍、安装与应用案例
- mysql学习总结一:mysql的安装,介绍,基本命令操作
- hadoop学习笔记(2)-hadoop安装目录权限的问题导致datanode启动失败