Sqoop简介以及安装

Sqoop简介以及安装

    近期用到Sqoop进行数据导出导入,发现网上不少的博客都不够精细,因此本人就针对Sqoop1.4.7的官方文档进行了学习,如下是学习笔记,若有错误,请批评指正,谢谢!java

1、介绍

    sqoop是沟通HDFS和关系型数据库的桥梁,能够从HDFS导出数据到关系型数据库,也能够从关系型数据库导入数据到HDFS。固然也支持Hive、HBase跟关系型数据库之间的互相导出导入。这是一个能够进行双向转化数据的工具。node

2、安装

一、下载

    Sqoop是Apache提供的工具,下载的时候必定要先肯定hadoop的版本,要找和hadoop匹配的版本,若是不匹配将会发生不可预知的问题。Sqoop目前支持4种主要的Hadoop版本  0.20、0.2三、1.0和2.0。mysql

二、安装

    官方要求必须有jdk和hadoop的支持,而且有版本要求。linux

1.安装JDK和Hadoop

    本人使用的jdk为1.8.131版本,Hadoop为2.7.1版本。这里jdk、Hadoop、Hive以及HBase的安装能够查看本人以前的文章:Hadoop伪分布式模式搭建Hadoop彻底分布式集群搭建HIVE简介HBase简介及搭建Centos 7+CDH5.7.2所有署流程sql

2.安装Sqoop

    将Sqoop的安装包上传到linux中,进行解压就能够直接使用。如下是本人使用的Sqoop的版本:shell

    sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz数据库

    sqoop能够经过已配置的环境变量JAVA_HOME找到JDK,能够经过已配置的环境变量HADOOP_HOME找到Hadoop,因此Sqoop不须要作任何配置就能够直接工做。bash

    固然若是想在任何目录使用Sqoop的命令的话,就必须配置Sqoop的环境变量。以下是本人配置的Sqoop的环境变量:服务器

export SQOOP_HOME=/home/software/sqoop1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

3.MySQL jar包

    这里本人使用的是MySQL数据库,由于Sqoop须要链接数据库,因此须要将链接数据库的驱动jar包加入sqoop的lib目录下。如下是本人使用的jar包:分布式

    mysql-connector-java-5.1.38-bin.jar

    固然,若是你使用的是其余关系型数据库,相应的就须要导入其余关系型数据库的jar包。

3、基础语法

一、命令格式

    以下是基础的命令格式:

$ sqoop tool-name [tool-arguments]

    这个命令的意思是以sqoop命令开头,而后跟上要使用的工具名称(工具模块在下文有介绍),而后跟上要使用的工具相应的参数选项。

二、帮助工具

    Sqoop提供了相应的帮助工具,如下是Sqoop帮助命令展现:

$ sqoop help
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 mainframe datasets to HDFS
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  version            Display version information
See 'sqoop help COMMAND' for information on a specific command.

    能够经过输入如下内容来显示特定工具的帮助:

sqoop help (tool-name)

    例如:

sqoop help import

    也能够将--help参数添加到任何命令中:

sqoop import --help

    这两种方式,效果是同样的。

三、命令别名

    除了使用sqoop (toolname)语法以外,还可使用指定sqoop-(toolname)语法的别名脚本。

    例如:Sqoop内置的脚本sqoop-import、sqoop-export等。

四、Generic and Specific Arguments

    generic:泛型。specific arguments:特定参数。

    要控制每一个Sqoop工具的操做,就要使用泛型和特定参数。

    例如:

    导入数据的用法:

$ sqoop help import
usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]

Common arguments:
   --connect <jdbc-uri>     Specify JDBC connect string
   --connect-manager <class-name>     Specify connection manager class to use
   --driver <class-name>    Manually specify JDBC driver class to use
   --hadoop-mapred-home <dir>      Override $HADOOP_MAPRED_HOME
   --help                   Print usage instructions
   --password-file          Set path for file containing authentication password
   -P                       Read password from console
   --password <password>    Set authentication password
   --username <username>    Set authentication username
   --verbose                Print more information while working
   --hadoop-home <dir>     Deprecated. Override $HADOOP_HOME

    通用Hadoop命令行参数:(必须在任何特定于工具的参数以前)

支持的通用选项是
-conf <配置文件>指定一个应用程序配置文件
-D <property = value>给定属性的使用值
-fs <local | namenode:port>指定一个namenode
-jt <local | jobtracker:port>指定做业跟踪器
-files <逗号分隔的文件列表>指定要复制到地图缩小集群的逗号分隔文件
-libjars <逗号分隔的jar列表>指定要包含在classpath中的逗号分隔的jar文件。
-archives <逗号分隔的存档列表>指定要在计算机上解除存档的逗号分隔档案。

    通常的命令行语法是:

bin/hadoop command [genericOptions] [commandOptions]

    必须提供通用的参数-conf,-D工具名称后,依此类推,但以前的任何特定工具的参数(如--connect)。

    注意:Hadoop参数前面是单个破折号字符(-),而特定于工具的参数则以两个破折号(--)开头,单个字符参数则是单个破折号,如-P。

    -conf、-D、-fs和-jt参数控制配置Hadoop的服务器设置。

    例如:-D mapred.job.name=<job_name>可用于设置Sqoop启动的MR做业的名称,若是未指定,名称将默认为做业的jar名称 - 该名称是从所使用的表名派生的。

    这些-files、-libjars和-archives参数一般不用于Sqoop,但在Hadoop的内部包含这些参数解析系统。

五、options file(选项文件)

1.定义

    官方释义:

    使用scoop的时候,命令行选项能够放置到选项文件中。一个选项文件是一个文本文件,每一行标识一个选项,顺序是选项出如今命令行的顺序。

    我的理解:

    其实就是将常常重复使用的命令选项或者常常替换参数的命令选项写到一个文件中,这样既可重用,也实现了解耦。

2.选项文件书写规则

    要指定选项文件,只需建立一个选项文件。

    1.选项文件容许一个选项存在于多行中,经过在中间行末尾使用反斜杠标识语句选项结束。

    2.选项文件支持注解,在选项文件中以#字符开头便可。注释须要新起一行使用,不能和选项文本混写。

    3.选项文件中全部注释和空行都会被忽略。

    4.选项文件中开头和结尾的空格被忽略。

    5.选项文件中用“”标识的字符串中出现的空格是有效的,不会被忽略。引用的字符串不能超过行的范围。

3.选项文件的使用规则

    1.能够在命令行中的任何位置指定选项文件,其中的选项遵循选项排序规则。

    选项排序规则:

    通用选项首先出现,接下来是工具特定的选项,最后是打算传递给子程序的选项。

    2.经过--options-file参数将选项文件传递到命令行。

    3.能够在一个命令行中指定多个选项文件。调用选项文件须要写出选项文件的全路径。

    例如:

    用于导入的Sqoop命令:

$ sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST

    使用选项文件命令以下:

$ sqoop --options-file /users/homer/work/import.txt --table TEST

    选项文件/users/homer/work/import.txt包含如下内容:

import
--connect
jdbc:mysql://localhost/db
--username
foo

    为了便于阅读,选项文件能够有空行和注释。所以,上述选项文件能够有以下的形式:

#
#Sqoop导入的选项文件
#
#指定被调用的工具
import
#链接参数和值:多行执行一个选项
--connect
jdbc:mysql://localhost/db
#用户名参数和值
--username
foo
#
#应该在命令行中指定剩余选项。
#

4、工具模块

    Sqoop是相关工具的集合。要使用Sqoop,能够指定要使用的工具以及控制该工具的参数。包含如下工具:

    帮助工具

    sqoop help工具:帮助工具。(上面已经作了介绍)

    导入工具

    sqoop-import:单表导入。

    sqoop-import-all-tables:多表导入。

    sqoop-import-mainframe:PDS导入。

    导出工具

    sqoop-export:数据导出。

    其余工具

    validation:对数据进行验证。

    sqoop-job:建立和处理保存的做业。

    sqoop-metastore:配置Sqoop为元数据共享库。

    sqoop-merge:合并数据集。

    sqoop-codegen:生成封装和解释导入记录的Java类

    sqoop-create-hive-table:基于先前导入数据,填充Hive matestore表。

    sqoop-list-databases:列出可用的数据库模式。

    sqoop-list-tables:列出模式内的表。

    sqoop-eval:基本的SQL执行shell。

    sqoop-version:显示Sqoop版本信息。

    之后会陆续进行这些工具的具体介绍。

下一篇:Sqoop工具模块之sqoop-import

相关文章
相关标签/搜索