zoukankan      html  css  js  c++  java
  • Hadoop入门进阶课程11--Sqoop介绍、安装与操作

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237

    【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs,下载该PDF文件

    1搭建环境

    部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown R shiyanlou:shiyanlou /app)。

    Hadoop搭建环境:

    l  虚拟机操作系统: CentOS6.6  64位,单核,1G内存

    l  JDK1.7.0_55 64

    l  Hadoop1.1.2

    2Sqoop介绍

    2.1  Sqoop简介

    Sqoop SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今主要演化了二大版本,Sqoop1Sqoop2 

    Sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hivehdfshbase之间数据的相互导入,可以使用全表导入和增量导入。

    那么为什么选择Sqoop呢? 

    l  高效可控的利用资源,任务并行度,超时时间。 

    l  数据类型映射与转化,可自动进行,用户也可自定义 

    l  支持多种主流数据库,MySQL,OracleSQL ServerDB2等等 

    2.2  Sqoop1Sqoop2比较

    2.2.1 Sqoop1Sqoop2异同

    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  Sqoop2Sqoop1的改进 

    (1)引入Sqoop server,集中化管理connector 

    (2)多种访问方式:CLI,Web UIREST API 

    (3)引入基于角色的安全机制

    2.2.2 Sqoop1Sqoop2的架构图

    Sqoop架构图1

    clip_image002

    Sqoop架构图2

    clip_image004

    2.2.3 Sqoop1Sqoop2的优缺点

    比较

    Sqoop1

    Sqoop2

    架构

    仅仅使用一个Sqoop客户端

    引入了Sqoop server集中化管理connector,以及rest apiwebUI,并引入权限安全机制

    部署

    部署简单,安装需要root权限,connector必须符合JDBC模型

    架构稍复杂,配置部署更繁琐

    使用

    命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏

    多种交互方式,命令行,web UIrest APIconncetor集中化管理,所有的链接安装在Sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写

     

    clip_image006

     

    3安装部署Sqoop

    3.1 下载Sqoop

    可以到apache基金sqoop官网http://hive.apache.org/,选择镜像下载地址:http://mirror.bit.edu.cn/apache/sqoop/下载一个稳定版本,如下图所示下载支持Hadoop1.X1.4.5版本gz包:

    clip_image008

    也可以在/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

    clip_image010

    3.2 设置/etc/profile参数

    编辑/etc/profile文件,加入sqoopHome路径和在PATH加入bin的路径:

    export SQOOP_HOME=/app/sqoop-1.4.5

    export PATH=$PATH:$SQOOP_HOME/bin

    clip_image012

    编译配置文件/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

    注释掉HBaseZookeeper等检查(除非使用HBaseZookeeperHADOOP上的组件)

    clip_image014

    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

    clip_image016

    设置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

    clip_image018

    编译配置文件sqoop-env.sh使之生效

    3.5 验证安装完成

    输入如下命令验证是否正确安装sqoop,如果正确安装则出现sqoop提示

    sqoop help

    clip_image020

    4文件导入/导出

    4.1 MySql数据导入到HDFS

    如果没有安装MySql,请参照第83.1进行安装

    4.1.1 下载MySql驱动

    MySql官网进入下载页面:http://dev.mysql.com/downloads/connector/j/ ,选择所需要的版本进行下载,这里下载的zip格式的文件,然后在本地解压:

    clip_image022

    也可以在/home/shiyanlou/install-pack目录中找到该安装包,把MySql驱动包使用如下命令放到Sqooplib目录下

    cd /home/shiyanlou/install-pack

    cp mysql-connector-java-5.1.22-bin.jar /app/sqoop-1.4.5/lib

    clip_image024

    4.1.2 启动MySql服务

    查看MySql服务并查看状态,如果没有启动则启动服务

    sudo service mysql status

    sudo service mysql start

    clip_image026

    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;

    clip_image028

    clip_image030

    4.1.4 MySql数据导入到HDFS

    使用如下命令列出MySql中所有数据库:

    sqoop list-databases --connect jdbc:mysql://hadoop:3306/ --username hive --password hive

    clip_image032

    使用如下命令把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

    clip_image034

    4.1.5 查看导出结果

    使用如下命令查看导出到HDFS结果,文件路径在当前用户hadoop目录下增加了TBLS表目录,查看part-m-00000文件:

    hadoop fs -ls /user/shiyanlou/TBLS

    hadoop fs -cat /user/shiyanlou/TBLS/part-m-00000

    clip_image036

    4.2 MySql数据导入到Hive

    4.2.1 启动metastorehiveserver

    在使用hive之前需要启动metastorehiveserver服务,通过如下命令启用:

    hive --service metastore &

    hive --service hiveserver &

    启动用通过jps命令可以看到两个进行运行在后台

    clip_image038

    4.2.2 MySql导入表数据到Hive

    使用如下命令到把MySqlTBLS表数据导入到Hive中:

    sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1

    l-- usernamemysql中的数据库连接用户名

    l--passwordmysql中的数据库连接密码

    l--table为导出表

    l--hive-table test1 为导出表在Hive中的名称

    l-m 1表示map

    clip_image040

    clip_image042

    从运行的日志可以看到,这个过程有两个阶段:

    1.  第一个阶段是从MySql中把数据到HDFS文件中

    2.  第二个阶段是从HDFS中把数据写入到MySql

    4.2.3 查看导出结果

    登录hive,在hive创建表并查看该表,命令如下:

    hive

    hive>show tables;

    hive>desc MySql2Hive;

    clip_image044

  • 相关阅读:
    MySQL缓存分类
    Babel 是干什么的
    npm是干什么的?
    在改变某一项目的svn的地址,relocate
    在搭建服务器的时候,svn最好与项目所部署的服务器分开
    简述负载均衡和CDN技术
    nginx介绍
    NideShop项目的安装部署教程
    Navicat破解
    当返回的不是单独的一种数据格式
  • 原文地址:https://www.cnblogs.com/shishanyuan/p/4648275.html
Copyright © 2011-2022 走看看