Sqoop是一个用来将Hadoop(Hive、HBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
官网地址:http://sqoop.apache.org/
1. 下载安装
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz /~/software/Hadoop/
2. 配置
- 在~/.bash_profile文件添加
#sqoop
SQOOP_HOME=/Users/qinxy/software/Hadoop/sqoop-1.4.7.bin__hadoop-2.6.0
PATH=$PATH:$SQOOP_HOME/bin
export SQOOP_HOME PATH
- 配置swoop-env.sh
复制conf/sqoop-env-template.sh 为:conf/sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/Users/qinxy/software/Hadoop/hadoop-2.9.2
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/Users/qinxy/software/Hadoop/hadoop-2.9.2
#set the path to where bin/hbase is available
#export HBASE_HOME=
#Set the path to where bin/hive is available
#export HIVE_HOME=
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
(如果数据读取不设计hbase和hive,那么相关hbase和hive的配置可以不加,如果集群有独立的zookeeper集群,那么配置zookeeper,反之,不用配置)
验证命令 : sqoop help
屏幕快照.png
3. 测试mysql数据库的使用
1. 测试数据库连接
sqoop list-databases -connect jdbc:mysql://localhost:3306 -username root -password root
如下图所示,则说明连接没问题
屏幕快照.png
2. sqoop的使用
以下所有的命令每行之后都存在一个空格,不要忘记
前提:hadoop已启动,hdfs可以访问
- mysql -> hdfs
将mysql中的数据导入到hdfs
sqoop
import
–connect jdbc:mysql://localhost:3306/testSqoop
–username root
–password root
–table user
–target-dir /sqoopTest/mysql2hdfs/user
-m 1
- hdfs -> mysql
将hdfs的数据导入到mysql
sqoop
export
–connect jdbc:mysql://localhost:3306/testSqoop –username root
–password root
–table user2
–export-dir /sqoopTest/mysql2hdfs/user
–m 1
- mysql -> hive
- hive -> mysql
- mysql -> hbase
- base -> mysql