Sqoop 简单介绍

1.Sqoop 产生背景

    Sqoop 的产生主要源于以下几种需求:

    • 多数使用 Hadoop 技术处理大数据业务的企业,有大量的数据存储在传统的关系型数据库(RDBMS)中。

    • 由于缺乏工具的支持,对 Hadoop 和 传统数据库系统中的数据进行相互传输是一件十分困难的事情。

    • 基于前两个方面的考虑,亟需一个在 RDBMS 与 Hadoop 之间进行数据传输的项目。

 

2.Sqoop 是什么

    Sqoop 是连接传统关系型数据库和 Hadoop 的桥梁。它包括以下两个方面:

    • 将关系型数据库的数据导入到 Hadoop 及其相关的系统中,如 Hive和HBase。

    • 将数据从 Hadoop 系统里抽取并导出到关系型数据库。

    Sqoop 的核心设计思想是利用 MapReduce 加快数据传输速度。也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的。所以它是一种批处理方式进行数据传输,难以实现实时的数据进行导入和导出。

 

3.为什么选择 Sqoop

    我们为什么选择 Sqoop 呢?通常基于三个方面的考虑:

    • 它可以高效、可控地利用资源,可以通过调整任务数来控制任务的并发度。另外它还可以配置数据库的访问时间等等。

    • 它可以自动的完成数据类型映射与转换。我们往往导入的数据是有类型的,它可以自动根据数据库中的类型转换到 Hadoop 中,当然用户也可以自定义它们之间的映射关系。

    • 它支持多种数据库,比如,Mysql、Oracle和PostgreSQL等等数据库。

 

4.Sqoop1与Sqoop2的比较

(1)sqoop1和sqoop2是两个不同的版本,它们是完全不兼容的。

(2)版本划分方式:Apache 1.4.x 之后的版本属于sqoop1,1.99.x之上的版本属于sqoop2.

(3)与sqoop1相比,sqoop2有以下优势:

    • 它引入的sqoop Server,便于集中化的管理Connector或者其它的第三方插件;

    • 多种访问方式:CLI、Web UI、REST API;

    • 它引入了基于角色的安全机制,管理员可以在sqoop Server上配置不同的角色。

 

5.Sqoop安装

    安装Sqoop的前提是已经具备Java和Hadoop的环境。

(1) 下载并解压

    • 最新版下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/

    • 上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz到虚拟机中,如我的上传目录是:/opt/software

    • 解压sqoop安装包到指定目录,如:$ tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module

(2) 修改配置文件

    Sqoop的配置文件与大多数大数据框架类似,在sqoop根目录下的conf目录中。

(1)重命名配置文件

$ mv sqoop-env-template.sh sqoop-env.sh

$ mv sqoop-site-template.xml sqoop-site.xml

(2)修改配置文件: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 HIVE_CONF_DIR=/opt/module/hive/conf

export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10

export ZOOCFGDIR=/opt/module/zookeeper-3.4.10

(3) 拷贝JDBC驱动

        拷贝jdbc驱动到sqoop的lib目录下,如:$ cp -a mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib

(4) 验证Sqoop

    我们可以通过某一个command来验证sqoop配置是否正确:

[luomk@hadoop102 sqoop]$ bin/sqoop help

Warning: /opt/module/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail.

Please set $HCAT_HOME to the root of your HCatalog installation.

Warning: /opt/module/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.

Please set $ACCUMULO_HOME to the root of your Accumulo installation.

18/08/26 22:09:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6

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

(5) 测试Sqoop是否能够成功连接数据库

$ bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

出现如下输出:

information_schema

company

ct

metastore

mysql

oozie

performance_schema

test

    说明:出现上面自己新建的表,说明sqoop能够成功连接mysql

 

你可能感兴趣的:(#,Sqoop)