Sqoop部署到Linux的步骤及其操作

主要内容:
一、sqoop概念 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。 简而言之,sqoop就是用于关系型数据和非关系型数据库之间进行数据转换的工具。

Sqoop: 采集关系型数据库中数据   
 1、采集关系型数据库中数据,一般Sqoop用于离线计算 
 2、数据交换:Oracle <---> Sqoop <---> HDFS、HBase、Hive  
 3、基于JDBC二、sqoop的安装        

1、下载sqoop-1.4.6.tar.gz和sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
2、上传到/tools目录下
3、 解压
(1)tar -zvxf sqoop-1.4.6.tar.gz -C /training/
(2)配置环境变量:

export SQOOP_HOME=/training/sqoop-1.4.6               
export PATH=$PATH:$SQOOP_HOME/bin     

(3)让环境变量生效:
source ~/.bash_profile

(4)进入到/training/sqoop-1.4.6/conf/目录下

  cp sqoop-env-template.sh sqoop-env.sh    
   vi sqoop-env.sh                
    修改对应的选项:                
       #Set path to where bin/hadoop is available       
        export HADOOP_COMMON_HOME=/training/hadoop-2.7.3  
                       
       #Set path to where hadoop-*-core.jar is available                  
        export HADOOP_MAPRED_HOME=/training/hadoop-2.7.3    
                       
       #set the path to where bin/hbase is available                 
       #export HBASE_HOME=/training/hbase-1.3.1                   
       #Set the path to where bin/hive is available                
       #export HIVE_HOME=/training/hive                  
       #Set the path for where zookeper config dir is                  
        export ZOOCFGDIR=/training/zookeeper-3.4.5            

(5)将mysql的驱动程序mysql-connector-java-5.1.44-bin.jar上传到/training/sqoop/lib目录下
(6)进入到/tools目录下,解压sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

             tar -zvxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz     

cd /tools/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
将sqoop-1.4.6.jar复制到/training/sqoop-1.4.6/lib/目录下(如果没有一步,会报错: 找不到或无法加载主类 org.apache.sqoop.Sqoop)

        cp sqoop-1.4.6.jar /training/sqoop-1.4.6/lib/     

4)、测试sqoop命令
sqoop help
不报错,即安装正确三、数据的可视化
)sqoop的安装与配置
)sqoop的基本操作
1、从hdfs中将数据(MR结果数据)导入到MySQL中
1)、在MySQL中新建一张表t_result,用于存放MapReduce分析结果
2)、在虚拟机中执行导入命令

sqoop export --connect jdbc:mysql://192.168.16.132:3306/university --username root 
--password 123456 --input-fields-terminated-by '\t' --table t_mr_result --export-dir /output/flume01   

三、sqoop的使用

命令说明
create-hive-table生成与关系数据库表的表结构对应的HIVE表
eval以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。
export从hdfs中导数据到关系数据库中
import将数据库表的数据导入到HDFS中
                                                                                                                                                                                                                                                     1、常用命令及其介绍命令说明codegen将关系数据库表映射为一个Java文件、Java class类、以及相关的jar包create-hive-table生成与关系数据库表的表结构对应的HIVE表eval以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。export从hdfs中导数据到关系数据库中help import将数据库表的数据导入到HDFS中import-all-tables将数据库中所有的表的数据导入到HDFS中job用来生成一个sqoop的任务,生成后,该任务并不执行,除非使用命令执行该任务。list-databases打印出关系数据库所有的数据库名list-tables打印出关系数据库某一数据库的所有表名merge将HDFS中不同目录下面的数据合在一起,并存放在指定的目录中metastore记录sqoop job的元数据信息version显示sqoop版本信息
                                                                                                                                                                                                                                                               2、具体使用案例    注意:大小写实例一:
                                                                                                                                                                                                                                                               sqoop codegen --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table                                                                                                                                                                                                                                                              EMP也可以写成下面的形式:
                                                                                                                                                                                                                                                               sqoop codegen \
                                                                                                                                                                                                                                                               --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl \
                                                                                                                                                                                                                                                               --username SCOTT --password tiger \
                                                                                                                                                                                                                                                               --table EMP
                                                                                                                                                                                                                                                               实例二:
                                                                                                                                                                                                                                                               sqoop create-hive-table --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --hive-table emphive

实例三:sqoop eval --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --query "select ename from emp where deptno=10"sqoop eval --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --query “select ename,dname from emp,dept where emp.deptno=dept.deptno”

实例四:Orcale:sqoop export --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table STUDENTS --export-dir /studentsMySQL:sqoop export --connect jdbc:mysql://192.168.215.131:3306/university --username root --password 123456 --table t_result --export-dir /output/flume01sqoop export --connect jdbc:mysql://192.168.215.131:3306/university --username root --password 123456 --input-fields-terminated-by ‘\t’ --table t_mr_result --export-dir /output/flume01

实例五:sqoop import --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --target-dir /emp

**

三、数据的导入导出(HFDS->Mysql or MySQL->HDFS)

**
1、数据导入MySQL->HDFS
(*)编写脚本 vi mysql_to_sqoop.sh

#!/bin/bash
dataformat=`date +%Y-%m-%d-%H-%M-%S`
/training/sqoop-1.4.6/bin/sqoop import \
--connect jdbc:mysql://192.168.16.132:3306/university \
--username root \
--password 123456 \
--input-fields-terminated-by '\t' \
--table t_order \
--target-dir /input/$dataformat/

执行chmod 774 mysql_to_sqoop.sh 让脚本文件生效;

**

2、数据导出HDFS—>MySQL

**
(*)编写可执行文件vi sqoop_to_mysql.sh

#!/bin/bash
/training/sqoop-1.4.6/bin/sqoop export \
--connect jdbc:mysql://192.168.16.132:3306/university \
--username root \
--password 123456 \
--input-fields-terminated-by '\t' \
--table t_mr_result \
--export-dir $(cat result_path.txt)

)执行chmod 774 sqoop_to_mysql.sh 让脚本文件生效;
)$(cat result_path.txt)是HDFS上储存待导出文件的地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值