Sqoop安装使用

1 环境

1、操作系统:CentOS-6.5-x86

2、JDK-1.6.0_45

3、Hadoop-1.2.1

4、Zookeeper-3.4.6

5、sqoop-1.4.5.bin__hadoop-1.0.0

2 搭建前提条件

已经按照Hadoop中“HBase安装”文章,已经搭建起了一个Hbase数据库,并且已经启动。

3 部署步骤

3.1 下载

http://sqoop.apache.org/

3.2 安装

安装目录:/opt

修改操作权限:


sudo  chmod  755  sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz

修改用户权限:
sudo  chown  -R  hadoopusr:hadoop  sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz

解压:
sudo  tar  -zxvf  sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz

更改目录名称:

sudo  mv  mv  sqoop-1.4.5.bin__hadoop-1.0.0  sqoop-1.4.5

3.3 添加环境变量信息

进入/etc/profile:


sudo  vi  /etc/profile

添加:
export  SQOOP_HOME=/opt/sqoop-1.4.5

在“export PATH=”信息后,添加:

:$SQOOP_HOME/bin

保存退出,然后使配置文件生效:

sudo  source

3.4 修改配置文件

进入“/opt/sqoop-1.4.5/conf”目录,修改文件名:


mv  sqoop-env-template.sh  sqoop-env.sh

修改文件信息:

vi  sqoop-env.sh

添加信息:
#Set path to where bin/hadoop is availableexport HADOOP_COMMON_HOME=/opt/hadoop-1.2.1
 

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/opt/hadoop-1.2.1

 

#set the path to where bin/hbase is available

export HBASE_HOME=/opt/hbase-0.98.4

 

#Set the path to where bin/hive is available

#export HIVE_HOME=

 

#Set the path for where zookeper config dir is

export ZOOCFGDIR=/opt/zookeeper-3.4.6

3.5 测试

输入命令“sqoop”,若能出现正常的信息,即为安装成功。

4 连接数据库

这里,造作的都是Mysql数据库中,一个叫test的表。

4.1 添加数据库驱动包

MySql添加:mysql-connector-java-5.1.20-bin.jar

Oracle添加:ojdbc14.jar

slf4j添加:slf4j-api-1.6.4.jar,slf4j-log4j12-1.6.4.jar(从Hbase中找)

4.2 列出MysqL中所有表

连接Mysql数据库,显示所有表:

sqoop  list-databases  –connect   jdbc:mysql://10.5.110.240  -username  lab1107  -password  lab1107

【说明】
sqooplist-tables
–connect   jdbc:mysql://10.5.110.240/test

-username  lab1107

-password  lab1107
#sqoop命令#使用的是显示所有表操作
#告诉jdbc,连接mysql的url为10.5.110.240,使用的是test数据库

#连接mysql的用户名为lab1107

#连接mysql的密码为lab1107

1、以上的命令中后面的##部分是注释,为了说明方便添加,执行的时候需要删掉;另外,命令的所有内容不能换行,只能一行才能执行。

4.3 连接mysql并列出test数据库中的表

sqoop  list-tables  –connect  jdbc:mysql://10.5.110.240/test  -username  lab1107  -password  lab1107

4.4 将mysql数据导入HDFS中

sqoop  import  –connect  jdbc:mysql://10.5.110.240:3306/test  -username  lab1107  -password  lab1107 -table tb_user  -m  1  -target-dir  /user/test

4.5 将Mysql数据导入Hbase中

sqoop  import  –connect jdbc:mysql://10.5.110.240/test  –username  lab1107  –password  lab1107  –table tb_user  –hbase-table  demo_2hbase  –hbase-create-table  –hbase-row-key  uid  –column-family  url

 

【说明】

sqoop  import–connect  jdbc:mysql://10.5.110.240/test
–username  lab1107

–password  lab1107

–table tb_user

–hbase-table  demo_2hbase

–hbase-create-table

–hbase-row-key  uid

–column-family  url
–table: MySql中表名
–hbase-table:Hbase中表明

–hbase-create-table:没有表的话,创建

–hbase-row-key:MySQL中的主键名

–column-family:Hbase中的列族名

4.6 将Oracle数据导入Hbase中

sqoop  import  –connect  jdbc:oracle:thin:@10.5.110.238:1521:big  –username  big   –password  big  –m  1  –table  TD_PRODUCT  –columns  PID,PNAME,RECDATE  –hbase-create-table  –hbase-table  product  –hbase-row-key  PID  –column-family  depinfo

【说明】
sqoop  import–connect  jdbc:oracle:thin:@10.5.110.238:1521:big
–username  big

–password  big

–m  1

–table  TD_PRODUCT

–columns  PID,PNAME,RECDATE

–hbase-create-table

–hbase-table  product

–hbase-row-key  PID

–column-family  depinfo
 连接的数据库:端口:数据库名-m:并行执行sqoop导入程序的map task的数量,在不指定的情况下默认启动4个map,此处指定1个
–hbase-row-key:如果不指定则采用源表的key作为hbase的row key。可以指定一个字段作为row key,或者指定组合行键,当指定组合行键时,用双引号包含多个字段,各字段用逗号分隔

 

注意几个坑:

1.Oracle的表名必须大写(–table CMS_NEWS_0625) ;
2.用户名必须大写字母( –username ZHAOBIAO);
3.组合行键参数中的字段名都必须大写(–hbase-row-key “CREATE_TIME,PUBLISH_TIME,TITLE”);
4.作为组合行键的几个字段都不能有null值,否则会报错,请执行该语句前先确认;
5.sqoop不会导入值为null的字段。

上一篇:JDK安装-Linux


下一篇:ArrayList中的迭代器