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 下载
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的字段。