您的位置:首页 > 运维架构 > Linux

sqoop安装(linux)

2014-11-09 15:09 495 查看
Sqoop是一个用来将Hadoop(Hive、HBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL
,Oracle,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
Sqoop目前已经是Apache的顶级项目了,目前版本是1.4.4
和 Sqoop2 1.99.3,本文以1.4.4的版本为例讲解基本的安装配置和简单应用的演示。

[一]、安装配置
选择Sqoop 1.4.4
版本:sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz
1.1、下载后解压配置:
1
tar -zxvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz /usr/local/
2
cd /usr/local
建立软连接:
 
3
ln -s sqoop-1.4.4.bin__hadoop-2.0.4-alpha sqoop
1.2、环境变量配置 vi ~/.bash_profile :
1
#Sqoop  add by micmiu.com
2
export SQOOP_HOME=/usr/local/sqoop
 
3
export PATH=$SQOOP_HOME/bin:$PATH
 
我们可以通过设置环境变量来简化操作。
[root@ www.linuxidc.com ~]# vi /etc/profile 
加入一行 export PATH="$PATH:/usr/local/php/bin:/usr/local/mysql/bin"
Source /etc/profile
1.3、配置Sqoop参数:
复制<SQOOP_HOME>/conf/sqoop-env-template.sh 一份重命名为:<SQOOP_HOME>/conf/sqoop-env.sh
vi <SQOOP_HOME>/conf/sqoop-env.sh
1
# 指定各环境变量的实际配置
2
# Set Hadoop-specific environment variables here.
 
3
 
4
#Set path to where bin/hadoop is available
 
5
#export HADOOP_COMMON_HOME=
6
 
 
7
#Set path to where hadoop-*-core.jar is available
8
#export HADOOP_MAPRED_HOME=
 
9
 
10
#set the path to where bin/hbase is available
 
11
#export HBASE_HOME=
12
 
 
13
#Set the path to where bin/hive is available
14
#export HIVE_HOME=
ps:因为我当前用户的默认环境变量中已经配置了相关变量,故该配置文件无需再修改:
1
# Hadoop 
2
export HADOOP_PREFIX="/usr/local/hadoop" 
 
3
export HADOOP_HOME=${HADOOP_PREFIX} 
4
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
 
5
export HADOOP_COMMON_HOME=${HADOOP_PREFIX} 
6
export HADOOP_HDFS_HOME=${HADOOP_PREFIX} 
 
<
f602
/table> 
7
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
8
export HADOOP_YARN_HOME=${HADOOP_PREFIX} 
9
# Native Path 
10
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native 
 
11
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
12
# Hadoop end
 
13
 
14
#Hive
 
15
export HIVE_HOME=/usr/local/hive
16
export PATH=$HIVE_HOME/bin:$PATH
 
17
 
18
#HBase
 
19
export HBASE_HOME=/usr/local/hbase
20
export PATH=$HBASE
 
21
 
22
#add by micmiu.com
1.4、驱动jar包
下面测试演示以MySQL为例,则需要把mysql对应的驱动lib文件copy到 <SQOOP_HOME>/lib 目录下。
[二]、测试数据准备
以MySQL
为例:
·        192.168.6.77(hostname:Master.Hadoop)
·        database: test
·        用户:root
密码:micmiu
准备两张测试表一个有主键表demo_blog,一个无主键表 demo_log:
1
CREATE TABLE `demo_blog` (
2
  `id` int(11) NOT NULL AUTO_INCREMENT,
 
3
  `blog` varchar(100) NOT NULL,
4
  PRIMARY KEY (`id`)
 
5
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
1
CREATE TABLE `demo_log` (
 
2
  `operator` varchar(16) NOT NULL,
3
  `log` varchar(100) NOT NULL
 
4
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
插入测试数据:
1
insert into demo_blog (id, blog) values (1, "micmiu.com");
2
insert into demo_blog (id, blog) values (2, "ctosun.com");
 
3
insert into demo_blog (id, blog) values (3, "baby.micmiu.com");
4
 
 
5
insert into demo_log (operator, log) values ("micmiu", "create");
6
insert into demo_log (operator, log) values ("micmiu", "update");
 
7
insert into demo_log (operator, log) values ("michael", "edit");
8
insert into demo_log (operator, log) values ("michael", "delete");
[三]、导入数据到HDFS
3.1、导入有主键的表
比如我需要把表 demo_blog (含主键) 的数据导入到HDFS中,执行如下命令:
1
sqoop import --connect jdbc:mysql://192.168.6.77/test --username root --password micmiu --table demo_blog
执行过程如下:
验证导入到hdfs上的数据:
1
$ hdfs dfs -ls /user/hadoop/demo_blog
8
[hadoop@Master ~]$ hdfs dfs -cat /user/hadoop/demo_blog/part-m-0000*
 
9
1,micmiu.com
10
2,ctosun.com
 
11
3,baby.micmiu.com
ps:默认设置下导入到hdfs上的路径是: /user/username/tablename/(files),比如我的当前用户是hadoop,那么实际路径即: /user/hadoop/demo_blog/(files)。
如果要自定义路径需要增加参数:--warehouse-dir 比如:
1
sqoop import --connect jdbc:mysql://Master.Hadoop/test --username root --password micmiu --table demo_blog --warehouse-dir /user/micmiu/sqoop
3.2、导入不含主键的表
比如需要把表 demo_log(无主键)的数据导入到hdfs中,执行如下命令:
1
sqoop import --connect jdbc:mysql://192.168.6.77/test --username root --password micmiu --table demo_log --warehouse-dir /user/micmiu/sqoop --split-by operator
ps:无主键表的导入需要增加参数  --split-byxxx  或者 -m
1
执行过程:
验证导入的数据:
1
$ hdfs dfs -ls /user/micmiu/sqoop/demo_log
8
$ hdfs dfs -cat /user/micmiu/sqoop/demo_log/part-m-0000*
 
9
michael,edit
10
michael,delete
 
11
micmiu,create
12
micmiu,update
[四]、导入数据到Hive
比如把表demo_blog
数据导入到Hive中,增加参数–hive-import :
1
sqoop import --connect jdbc:mysql://localhost/test --username root --table demo_blog  --warehouse-dir /user/sqoop --hive-import --create-hive-table
执行过程如下:
 Hive CLI中验证导入的数据:
1
hive> show tables;
 
 [五]、导入数据到HBase
演示把表 demo_blog
数据导入到HBase
,指定Hbase中表名为demo_sqoop2hbase
的命令:
1
sqoop  import  --connect jdbc:mysql://localhost/test --username root  --table demo_blog --hbase-table
demo_sqoop2hbase --hbase-create-table --hbase-row-key id --column-family url
 
--hbase-row-key id可以随便设,比如id+’==’+url
执行过程:
 hbase shell中验证导入的数据:
1
hbase(main):009:0> list
 
 
11
hbase(main):010:0> scan "demo_sqoop2hbase"
18
hbase(main):011:0> describe "demo_sqoop2hbase"
 

验证导入成功。
本文到此已经把MySQL中的数据迁移到 HDFS、Hive、HBase的三种基本情况演示结束。
 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqoop linux