sqoop安装(linux)

Sqoop是一个用来将HadoopHiveHBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle,Postgres等)中的数据导入到HadoopHDFS中,也可以将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} 

 

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.77hostname: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中的数据迁移到 HDFSHiveHBase的三种基本情况演示结束。

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值