Hadoop入门进阶课程11--Sqoop介绍、安装与操作
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan 。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237
【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs,下载该PDF文件
、搭建环境
部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建环境:
l 虚拟机操作系统: CentOS6.6 64位,单核,1G内存
l JDK:1.7.0_55 64位
l Hadoop:1.1.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的优缺点
|
比较 |
Sqoop1 |
Sqoop2 |
|
架构 |
仅仅使用一个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.1 MySql数据导入到HDFS中
课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;

Hadoop入门进阶课程11--Sqoop介绍、安装与操作的更多相关文章
- Hadoop入门进阶课程1--Hadoop1.X伪分布式安装
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- (转)Hadoop入门进阶课程
http://blog.csdn.net/yirenboy/article/details/46800855 1.Hadoop介绍 1.1Hadoop简介 Apache Hadoop软件库是一个框架, ...
- Hadoop入门进阶课程13--Chukwa介绍与安装部署
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程9--Mahout介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程8--Hive介绍和安装部署
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程7--Pig介绍、安装与应用案例
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- Hadoop入门进阶课程2--Hadoop2.X 64位编译
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
随机推荐
- [推荐]WebService开发知识介绍
[推荐]WebService开发知识介绍 WebService开发手册 http://wenku.baidu.com/view/df3992ce050876323112128a.html WebSe ...
- 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)
最近新安装了64位的Win7系统,工作中需要用oracle数据库,而数据库是公司IT的DBA进行管理和维护的. 我们只需要连接上去进行使用就可以了,于是我就在自己的机器上安装了oracle clien ...
- GET请求中URL的最大长度限制总结
由于jsonp跨域请求只能通过get请求,url长度根据浏览器及服务器的不同而有不同限制. 若要支持IE的话,最大的长度为2083字符,若是中文字符的话只有2083/9=231个字符. 若是Chrom ...
- APP顶号逻辑
登录的接口login.do接口上需要记录关键的信息:userId.设备型号(Android|iPhone).登录时间.登录IP.设备唯一标识(UUID) 当在另外一台新设备上登录同一帐号时,将user ...
- android中xmlns:tools属性详解
今天读到一篇总结的非常棒的文章,写的逻辑很清晰也很实用,很少见到如此棒的文章了.就原文转发过来,我把格式给整理了一下,分享给园子里的各位朋友!好久没写博客了,就为2015年的11月留份纪念吧.希望对你 ...
- c#复制包含子目录文件夹代码
c#没有复制目录的代码,需要通过递归实现复制目录: 需要引用System.IO命名空间,实现代码如下: private static bool CopyDirectory(string SourceP ...
- C++ 代码换行
1.字符串太长,换行显示,怎么办?2.使用反斜杠,如下: string str = "abcd\ 1234"; 注意:反斜杠后面不准有任何字符.下一行开头的制表符不包含在整个字符串 ...
- java 方法调用绑定
将一个方法调用同一个方法主体关联起来被称作绑定.若在程序执行前进行绑定(由编译器和连接器实现),叫做前期绑定.读者可能从来没有听说过这个术语,因为它在面向过程语言中不需要选择就默认的绑定方式.例如C语 ...
- 构造函数和:this()的应用
一.构造函数和:this()的应用 //本实例演示构造函数和:this()的应用 public class ClsA { public string A{set;get;} public string ...
- navicat 链接linux 服务器上的数据库