本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 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入门进阶课程4--HDFS原理及操作

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. tornado 学习笔记6 Application 源码分析

    Application 是Tornado重要的模块之一,主要是配置访问路由表及其他应用参数的设置. 源代码位于虚拟运行环境文件夹下(我的是env),具体位置为env > lib>sit-p ...

  2. MySQL的Incorrect string value错误

    用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...

  3. iOS 目录的使用

    Table 1-1  Commonly used directories of an iOS app  Directory Description AppName.app This is the ap ...

  4. NGUI之UIRoot屏幕分辨率自适应

    NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢? 先简单看一下UIRoot中的基本属性 U ...

  5. htpasswd 详解

    Apache htpasswd命令用法详解 htpasswd建立和更新存储用户名.密码的文本文件, 用于对HTTP用户的basic认证. # /usr/local/apache/bin/htpassw ...

  6. until与till的用法归纳

    until与till的用法归纳 崔荣斌 until和till两者都可作介词.连词,一般情况下可以互换使用.用于肯定句时,主句的动词只用延续性的,它所表示的动作一直延续到till或until表示的时间为 ...

  7. [转]C++常见内存错误汇总

    在系统开发过程中出现的bug相对而言是比较好解决的,花费在这个上面的调试代价不是很大,但是在系统集成后的bug往往是难以定位的bug(最好方式是打桩,通过打桩可以初步锁定出错的位置,如:进入函数前打印 ...

  8. 【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用

    更新了iOS9和XCode7,之后,Swift变成了2.0,有了新的语法习惯,iOS也加强了安全方面的限制.我们原本的项目就会出现不少问题.先来看我之前的项目中出现的3个错误吧和相关的解决办法吧. 1 ...

  9. otl获得sql出错位置(oracle)

    项目的一个需要,要获得sql出错的位置,从而给出类似sqlplus的错误提示(如下) sql出错原因易获得,记录在otl_exception::msg,但出错位置就不是那么容易了. 默认情况下otl异 ...

  10. HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。

    异常信息: 解决方案:        检查一下ASP.NET有没有安装: 控制面板>程序和功能>打开或关闭Windows功能 > Internet信息服务 > 万维网服务 &g ...