本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 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介绍、安装与操作的更多相关文章

  1. Hadoop入门进阶课程1--Hadoop1.X伪分布式安装

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  2. (转)Hadoop入门进阶课程

    http://blog.csdn.net/yirenboy/article/details/46800855 1.Hadoop介绍 1.1Hadoop简介 Apache Hadoop软件库是一个框架, ...

  3. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  4. Hadoop入门进阶课程10--HBase介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  5. Hadoop入门进阶课程12--Flume介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. Hadoop入门进阶课程9--Mahout介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  7. Hadoop入门进阶课程8--Hive介绍和安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  8. Hadoop入门进阶课程7--Pig介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  9. Hadoop入门进阶课程2--Hadoop2.X 64位编译

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

随机推荐

  1. Nginx缓存、压缩配置

    1.缓存配置 只需在http的server模块里配置即可,如: location ~.*\.(jpg|png|gif)$ { expires 30d; } location ~.*\.(css|js) ...

  2. Bruce Eckel:编程生涯(转载)

    Bruce Eckel:编程生涯(转载) 说明:Bruce Eckel 著有大名鼎鼎的<Thinking in C++>和<Thinking in Java>.本文是他对程序员 ...

  3. C# 热敏打印机 Socket 网络链接 打印 图片

    C# 热敏打印机 Socket 网络链接 打印 图片 (一) http://www.cnblogs.com/rinack/p/4838211.html C# 热敏打印机 Socket 网络链接 打印 ...

  4. 開啟apache的日誌功能,但是不記錄.js;.css;.jpg;.ico;.png等訪問記錄

    維護web伺服器最重要的就是要每天都關注網站的訪問日誌,但是每天面對幾百兆的日誌文件實在是非常頭大,所以可以從根源上給日誌減肥一下,讓日誌只記錄對自己有用的內容就變得非常重了. Nginx伺服器要修改 ...

  5. solr详解,开发必备

    1.基础知识 创建索引的过程如下: (1).建立索引器IndexWriter,这相当于一本书的框架 (2).建立文档对象Document,这相当于一篇文章 (3).建立信息字段对象Field,这相当于 ...

  6. xml转换之

    1.XStream public static <T> T toBean(String xmlStr, Class<T> cls) { XStream xstream = ne ...

  7. string的+操作与StringBuilder对象

    习惯在C#代码中写str+="xxx";这样代码的请注意啦,如果这种操作是针对单个变量作很多次叠加操作的,很有可能导致性能降低. 大家都知道string与StringBuilder ...

  8. 微信公众平台开发视频教程-03-获取Access Token和获取微信服务器IP,添加微信菜单

    1 获取access token 此token是以后每次调用微信接口都会带上的票据,token是公众号全局唯一票据,在调用其他接口之前都需要先得到token,taoken长度至少512个字符,通常用s ...

  9. OpenSSL命令---pkcs7

    用途: 用于处理DER或者PEM格式的pkcs#7文件. 用法: openssl pkcs7 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [ ...

  10. 如何清除朗逸保养提示标志INSP

    自己消除insp小扳手方法 具体步骤如下1.插入钥匙,不要转动.2.按住显示屏下方右边的黑圆柱按钮 3.钥匙转到2档,通电自检,期间按住按钮不要松手4.过10秒左右,INSP消失,小扳手自己去除 不用 ...