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
|
在最后添加以下内容
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数据库
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
|
运行成功!
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
|