Hadoop学习笔记: sqoop配置与使用

sqoop即SQL-to-Hadoop,是一个把数据从关系型数据库导入到Hadoop系统中的工具(HDFS,HIVE和HBase),也可以将数据从Hadoop导入到关系型数据库。本文以sqoop 1.99.6版本为例演示如何配置和使用sqoop。

一. 安装配置sqoop

1. 从Apache网上下载sqoop http://apache.fayea.com/sqoop/1.99.6/

2. 将压缩包放置到指定目录后,运行tar -zxvf sqoop-1.99.6-bin-hadoop200.tar.gz 解压缩文件

3. 配置sqoop环境变量

  • 修改/etc/profile

   export SQOOP_HOME=/usr/local/sqoop-1.99.6
   export CATALINA_BASE=$SQOOP_HOME/server
   export LOGDIR=$SQOOP_HOME/logs
   export PATH=$SQOOP_HOME/bin:$PATH

  • 修改server/conf/catalina.properties,找到common.loader行,把/usr/lib/hadoop/lib/*.jar改成你的hadoop jar包目录,或者在$SQOOP_HOME中建个文件夹例如hadoop_lib,然后将这些jar包cp到此文件夹中,最后将此文件夹路径添加到common.loader属性中。
  • 修改server/conf/sqoop.properties,找到Hadoop configuration directory,将其修改为Hadoop配置文件所在目录,并且替换@LOGDIR@ 和@BASEDIR@为sqoop相对应目录

4. 下载mysql JDBC驱动程序 http://dev.mysql.com/downloads/connector/j/, 将其拷贝到$SQOOP_HOME/Server/lib下。

5. 在终端中验证sqoop配置

 

sqoop2-tool verify

 

出现以下信息说明sqoop配置成功

Verification was successful.
Tool class org.apache.sqoop.tools.tool.VerifyTool has finished correctly

6.在终端中启动sqoop服务

sqoop.sh server start

7.进入sqoop命令行

sqoop.sh client
or sqoop2-shell

8. 查看sqoop版本

show version --all

如果出现如下类似信息说明安装配置成功

client version:
  Sqoop 1.99.6 source revision 07244c3915975f26f03d9e1edf09ab7d06619bb8 
  Compiled by root on Wed Apr 29 10:40:43 CST 2015
server version:
  Sqoop 1.99.6 source revision 07244c3915975f26f03d9e1edf09ab7d06619bb8 
  Compiled by root on Wed Apr 29 10:40:43 CST 2015
API versions:
  [v1]

 

二. 使用sqoop

mysql数据库脚本如下

create database hadoop;

create table hadoop.widgets(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
widget_name VARCHAR(64) NOT NULL,
price DECIMAL(10,2),
design_date DATE,
version INT,
design_comment VARCHAR(100));

INSERT INTO hadoop.widgets VALUES (NULL, 'sprocket', 0.25, '2010-02-10',1, 'Connects two gizmos');
INSERT INTO hadoop.widgets VALUES (NULL, 'gizmo', 4.00, '2009-11-30', 4, NULL);
INSERT INTO hadoop.widgets VALUES (NULL, 'gadget', 99.99, '1983-08-13', 13, 'Our flagship product');

 

1. 创建link object

查看已经在sqoop server上注册的connector

创建指向mysql的link

创建指向hadoop的link

2. 创建job对象

3. 执行job

如果执行时出错,可以设置打开verbose模式以得到更详细的错误信息

set option --name verbose --value true

查看结果,发现目标目录中生成了10个文件,其中两个包含了源数据库中的3行纪录,其余为空文件。

 

如果想要将数据从hadoop导入mysql中,只要在创建job时将上述案例的link交换即可。

 

参考资料:http://sqoop.apache.org/docs/1.99.6/index.html

posted @ 2016-02-19 11:49  finalboss1987  阅读(913)  评论(0编辑  收藏  举报