SQOOP安装配置及import测试
sunshj Lv4

SQOOP安装

(只需在master配置)

准备安装包

安装包
sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
mysql-connector-java-5.1.26-bin.jar

1、上传并解压

1
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 

2、修改文件夹名字

1
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6

3、修改配置文件

1
2
# 切换到sqoop配置文件目录
cd /sqoop-1.4.6/conf
1
2
3
4
5
6
7
8
# 复制配置文件并重命名
cp sqoop-env-template.sh sqoop-env.sh

# vim sqoop-env.sh 编辑配置文件,并加入以下内容

export HADOOP_COMMON_HOME=home/sunshj/hadoop-2.7.7
export HADOOP_MAPRED_HOME=home/sunshj/hadoop-2.7.7/share/hadoop/mapreduce
export HIVE_HOME=/home/sunshj/hive-1.2.1
1
2
# 切换到bin目录
cd home/sunshj/sqoop-1.4.6/bin
1
2
# 修改配置文件,注释掉没用的内容(就是为了去掉警告信息)
vim configure-sqoop
image

在最后添加以下内容

1
2
3
for f in ${HADOOP_MAPRED_HOME}/*.jar;
do HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f;
done

4、修改环境变量

1
2
3
4
5
vim .bashrc
# 将sqoop的目录加入环境变量

export SQOOP_HOME=/home/sunshj/sqoop-1.4.6
export PATH=$PATH:$SQOOP_HOME/bin

5、添加MySQL连接驱动

1
2
# 上传MySQL连接驱动到$SQOOP_HOME/lib
cp /home/sunshj/mysql-connector-java-5.1.26-bin.jar /home/sunshj/sqoop-1.4.6/lib/

6、测试

1
2
# 打印sqoop版本
sqoop version
1
2
# 测试MySQL连通性
sqoop list-databases -connect jdbc:mysql://master:3306/ -username root -password 123456

准备MySQL数据

1、登录MySQL数据库

1
mysql -u root -p123456;

2、创建student数据库

1
create database student;

3、切换数据库并导入数据

1
2
3
4
5
# mysql shell中执行
use student;
set names utf8;
source /student.sql;
source /score.sql;

4、import

从传统的关系型数据库导入HDFS、HIVE、HBASE……

MySQLToHDFS

编写脚本,保存为MySQLToHDFS.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--table
student
--m
2
--split-by
age
--target-dir
/sqoop/data/student
--fields-terminated-by
','

执行脚本

1
sqoop --options-file MySQLToHDFS.conf

运行成功!

image
image
MySQLToHive

编写脚本,并保存为MySQLToHive.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import 
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--table
score
--fields-terminated-by
"\t"
--lines-terminated-by
"\n"
--m
2
--split-by
student_id
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
testsqoop
--hive-table
score

在Hive中创建testsqoop数据库

1
create database testsqoop;

执行脚本

1
sqoop --options-file MySQLToHive.conf

--direct

加上这个参数,可以在导出MySQL数据的时候,使用MySQL提供的导出工具mysqldump,加快导出速度,提高效率

需要将master上的/usr/bin/mysqldump分发至 slave1、slave2的/usr/bin目录下

1
2
scp /usr/bin/mysqldump slave1:/usr/bin/
scp /usr/bin/mysqldump slave2:/usr/bin/

5、export

HDFSToMySQL

编写脚本,并保存为HDFSToMySQL.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export
--connect
jdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=UTF-8
--username
root
--password
123456
-m
1
--columns
id,name,age,gender,clazz
--export-dir
/sqoop/data/student/
--fields-terminated-by
','
--table
student

先清空MySQL student表中的数据,不然会造成主键冲突

执行脚本

1
sqoop --options-file HDFSToMySQL.conf
 评论