一、概述
Sqoop是一款开源的数据导入导出工具,可以将传统的关系型数据库导出至HDFS,也可以将HDFS中的数据导出至关系型数据库。
官网: http://sqoop.apache.org/
原理:在Hadoop生态体系中,计算基本依赖于MR,那么Sqoop也是如此,Sqoop就是将Sqoop语句翻译成MR程序,来实现一个数据导入和导出的操作。那就不难理解到Sqoop就是一个对于InpuFormat和OutputFormat进行特殊定制的MR程序。
二、Sqoop安装
2.1 下载
官方下载地址:http://www.apache.org/dyn/closer.lua/sqoop/1.4.7
2.2 解压
上传至Linux 服务器,解压在相关位置即可。
2.3 修改配置文件
将conf目录下的sqoop-env.template.sh改名
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.6.0
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.6.0
#set the path to where bin/hbase is available
export HBASE_HOME=/home/hbase/hbase-1.2.4
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hive/apache-hive-1.2.1-bin
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
2.4 拷贝JDBC驱动
将Mysql或者其他使用到的数据的JDBC驱动拷贝到Sqoop根目录下lib目录。
3.5 验证启动
sqoop-version
预期的输出:
15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2015
./sqoop-list-databases --connect jdbc:mysql://HadoopNode00:3306 --username root --password root
预期输出:
18/10/23 17:09:44 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
18/10/23 17:09:44 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
18/10/23 17:09:45 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
hive
mysql
performance_schema
shortvideo
test
三、使用
3.1 导出数据
导出数据使用export关键字,指的就是从大数据集群导入至传统的关系型数据库
3.1.1 HDFS 到RDBMS
这里以 MySQL 为例
准备数据
准备数据需要在Mysql中建立新表
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`uuid` varchar(255) NOT NULL,
`userid`