什么是sqoop
sqoop是一个用来将关系型数据库和hadoop中的数据进行相互转移的工具。例如关系型数据库mysql、oracle等,hadoop数据如hdfs、hive、hbase等。
sqoop提供了哪些主要功能
- 数据导入。如关系型数据库导入到hdfs。
- 数据导出。如hdfs数据导出到关系型数据库。
- sqoop定时作业。如定时导入导出新数据。
- 等等
sqoop核心技术
1、生成mapreduce
sqoop接收用户的请求,通过解析请求,生成mapreduce代码,并打包,将打好的jar包提交给hadoop执行。生成mapreduce代码是sqoop的核心技术,也是数据传输的关键。
2、作业创建
定时导入导出新数据的sqoop作业。
3、数据映射
关系型数据库字段是有类型的,数据映射可以自动对数据库字段类型和hadoop的类型进行对应。当然也可以自定义类型映射。
4、并行控制
采用sqoop集群或者多个任务并行进行数据的导入导出工作。为了提升性能使用的。
安装
官网下载sqoop的安装包,此处使用的sqoop2
# 1.解压
$ tar -zxf sqoop-1.99.7-bin-hadoop200.tar.gz
$ ls
bin CHANGELOG.txt conf docs LICENSE.txt NOTICE.txt README.txt server shell tools
# 2.配置sqoop环境变量,增加以下环境配置
$ vim /etc/profile
export SQOOP_HOME=/usr/local/app/sqoop/sqoop-1.99.7-bin-hadoop200
export PATH=$PATH:$SQOOP_HOME/bin
export CATALINA_HOME=$SQOOP_HOME/server
export SQOOP_SERVER_EXTRA_LIB=$SQOOP_HOME/extra
export LOGDIR=$SQOOP_HOME/logs
# 3.在sqoop目录下创建extra和logs目录
$ mkdir extra logs
# 4.告知sqoop从何处寻找hadoop的配置文件
$ vi sqoop.properties
# Hadoop configuration directory
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/usr/local/app/hadoop/hadoop-3.1.2/etc/hadoop
# 5.在conf目录下,添加catalina.properties文件。加入本机hadoop的相关jar路径
# catalina.properties文件内容如下,只要替换hadoop的安装目录就行了
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/common/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/common/lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/hdfs/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/hdfs/lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/mapreduce/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/mapreduce/lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/tools/lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/yarn/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/yarn/lib/*.jar,/usr/local/app/hadoop/hadoop-3.1.2/share/hadoop/httpfs/tomcat/lib/*.jar
# 6.在SQOOP_HOME/server/lib目录下加入mysql的jar包
$ pwd
/usr/local/app/sqoop/sqoop-1.99.7-bin-hadoop200/server/lib
$ ls mysql-connector-java-8.0.13.jar
mysql-connector-java-8.0.13.jar
# 启动sqoop server 服务
$ sqoop2-server start
# 进入sqoop交互模式
$ sqoop2-shell