目录
一、Sqoop原理
Sqoop,简而言之SQL-to-Hadoop,主要用于传统关系型数据库(mysql、Oracle)与Hadoop生态存储系统(HDFS、Hive、HBase)之间进行数据相互传递。
在sqoop1.4.6之前的版本称为sqoop,sqoop1.99之后的版本称为sqoop2,
sqoop中只支持map没有reduce,所有的操作对象都与仓库交互,
sqoop2中支持map和reduce,只有server与仓库交互,提高了安全性。sqoop和sqoop2的运行原理、安装、操作
Sqoop底层实现的是MapReduce,将导入Import和导出Export命令翻译成mapreduce程序来实现;其依赖于Hadoop,数据并行导入。
sqoop架构图:
Sqoop工具接收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库RDBMS和Hadoop中的数据进行相互转移,进而完成数据的拷贝。
二、安装测试
配置完Java和Hadoop环境是按照Sqoop的前提。
1. 修改配置文件
在sqoop安装目录下的conf目录中
$ mv sqoop-env-template.sh sqoop-env.sh
然后修改配置文件sqoop-env.sh,添加各项路径如下
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export ZOOCFGDIR=/opt/module/zookeeper-3.4.10
export HBASE_HOME=/opt/module/hbase
2. 拷贝JDBC驱动到sqoop的lib目录下,连接mysql用
$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/
3. 验证sqoop是否安装正确
$ bin/sqoop help
出现如下信息为安装正确:
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
4. 测试sqoop是否能连接mysql数据库
$ bin/sqoop list-databases --connect jdbc:mysql://hadoop100:3306 --username root --password 000000
出现如下数据库内容证明将databases全部列出,连接成功
information_schema
metastore
mysql
performance_schema