Sqoop知识梳理、环境搭建、基本原理、常用命令、Sqoop练习等
Sqoop (SQL to Hadoop) 是Apache顶级项⽬,官⽹地址:http://sqoop.apache.org.
为了高效的实现关系数据库与hadoop之间的数据导入导出,hadoop生态圈提供了工具sqoop.
核心的功能:
版本介绍:
Sqoop 2.0 主要解决 Sqoop 1.x 扩展难的问题,提出的 Server-Client 模型,具体用的不是特别多.
本文主要介绍的还是 Sqoop 1.x,最新的 Sqoop 版本是 1.4.7.
常用场景:
采用插拔式 Connector 的架构,Connector 是与特定数据源相关的组件,主要负责抽取和加载数据.
主要具备的特点:
Sqoop1 是一个客户端工具,不需要启动任何服务就可以使用。是一个只有的 Map 的 MapReduce 作业,充分利用 MapReduce 的高容错行以及高扩展性的优点,将数据迁移任务转换为 MapReduce 来作业。
整体架构:
将导入或导出命令翻译成 MapReduce 程序来实现, 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制.
Sqoop1的整体架构图:
工作流程简述:
允许用户通过定制各种参数控制作业,包括任务并发度,数据数据源,目标数据源,超时时间等。
缺点整理:
将来 sqoop 在使用的时候有可能会跟那些系统或者组件打交道?
HDFS, MapReduce, YARN, ZooKeeper, Hive, HBase, MySQL
下载地址http://mirrors.hust.edu.cn/apache/
sqoop版本说明:
绝大部分企业所使用的 sqoop 的版本都是 sqoop1
sqoop-1.4.6 或者 sqoop-1.4.7 它是 sqoop1
sqoop-1.99.4----都是 sqoop2
此处使用sqoop-1.4.7版本sqoop-1.4.7.bin__hadoop-2.0.4-alpha.tar.gz
(1)通过命令下载 Sqoop,解压后,放到/software/ 目录中:
cd /data/pkg/
wget http://mirrors.shu.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /software/
cd /software/
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
(2) 进入到 conf 文件夹,找到 sqoop-env-template.sh,修改其名称为 sqoop-env.sh cd conf
cd sqoop-1.4.7/conf/
mv sqoop-env-template.sh sqoop-env.sh
(3) 修改 sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/software/hadoop-2.7.3
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/software/hadoop-2.7.3
#set the path to where bin/hbase is available
export HBASE_HOME=/software/hbase-1.2.4
#Set the path to where bin/hive is available
export HIVE_HOME=/software/apache-hive-2.1.1-bin
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/software/zookeeper-3.4.9
为什么在sqoop-env.sh 文件中会要求分别进行 common和mapreduce的配置呢???
在apache的hadoop的安装中;四大组件都是安装在同一个hadoop_home中的 但是在CDH, HDP中, 这些组件都是可选的。 在安装hadoop的时候,可以选择性的只安装HDFS或者YARN, CDH,HDP在安装hadoop的时候,会把HDFS和MapReduce有可能分别安装在不同的地方。
(4)加入 mysql 驱动包到 sqoop1.4.7/lib 目录下
# 下载 mysql connector
cd /data/pkg
wget --no-check-certificate http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz
# 该命令会在/data/pkg下产生mysql-connector-java-5.1.32.tar.gz
tar -zxvf mysql-connector-java-5.1.32.tar.gz -C /software
# 拷贝文件
cp /software/mysql-connector-java-5.1.32/mysql-connector-java-5.1.32.jar /software/sqoop-1.4.7/lib/
(5)配置系统环境变量
vim /etc/profile
# sqoop
export SQOOP_HOME=/software/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin
保存退出使其立即生效
source /etc/profile
(6) 验证安装是否成功
sqoop-version 或者 sqoop version
(7) 解决告警问题,修改配置文件 configure-sqoop
vim bin/configure-sqoop
注释截图中的内容,行数已标明
(8) 查看 Sqoop 版本
[hadoop@bigdata hadoop]$ sqoop help
19/06/05 08:12:38 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
See 'sqoop help COMMAND' for information on a specific command.
[hadoop@bigdata hadoop]$
特殊说明可以使用sqoop help COMMAND
查看具体命令的用法
sqoop list-tables --connect jdbc:mysql://bigdata/bigdata --username root -P
语法格式: sqoop import (generic-args) (import-args)
常用参数:
--connect <jdbc-uri]]> jdbc 连接地址
--connection-manager <class-name]]> 连接管理者
--driver <class-name]]> 驱动类
--hadoop-mapred-home <dir]]> $HADOOP_MAPRED_HOME
--help help 信息
-P 从命令行输入密码
--password <password]]> 密码
--username <username]]> 账号
--verbose 打印流程信息
--connection-param-file <filename]]> 可选参数
案例1:
导出数据库bigdata中的doctor表到hadoop的/prod/data目录中
sqoop import --connect jdbc:mysql://bigdata:3306/bigdata --username root --password baihe2019 --table doctor -m 1 --target-dir /prod/data
导入:指定自定义查询SQL,导出数据库bigdata中的sql语句中查询的数据到hadoop的/prod/data目录中
sqoop import --connect jdbc:mysql://bigdata:3306/bigdata --username root --password baihe2019 -m 1 --query "select doctoruid from doctor where doctoruid > 52314 and \$CONDITIONS" --target-dir /prod/data1
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。