《Hadoop大数据原理与应用实验教程》实验指导书-实验8实战Sqoop_第1页
《Hadoop大数据原理与应用实验教程》实验指导书-实验8实战Sqoop_第2页
《Hadoop大数据原理与应用实验教程》实验指导书-实验8实战Sqoop_第3页
《Hadoop大数据原理与应用实验教程》实验指导书-实验8实战Sqoop_第4页
《Hadoop大数据原理与应用实验教程》实验指导书-实验8实战Sqoop_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验8实战Sqoop

本实验的知识地图如图8-1所示(★表示重点「表示难点)。

1.熟练掌握Linux基本命令

2.掌提Java编程

3.熟练掌握关系型雌库如MySQL基本撵作

先修技能

4.熟练掌提Hadoop集群.H8ase、Hive的基本使用

5.理解Sqoop基础知识:功既版本、体系架构,运行环境、配/文件、Sqoop接口等

规划Sqoop:节点、IPtffi址、运行服务软硬件配香

1•败嫁软件选择:虚拟机工具、Linux操作系统、Java、Hadoop、

ZooKeeper.HBase,MySQL、Hive、Sqoop.Eclipse

获取Sqoop

安装Sqoop

sqoop-env.sh:HADOOPCOMMONHOME,

★2.^^和SBSSqoop.配宜SqoopHADOOPMAPREDHOMEW

★添力PJDBC驱动

实战实验步骤

Sqoop设置$SQOOPHOME目录属主

在系统配国文件目录/etc/profile.d下新建sqoop.sh

3验证Sqoop

简单命令:sqooplist、sqoopeval等

户导入命令:sqoopimport

/*4.使用SqoopShellj)导出命令:sqoopexport

sqoop--options-file

sqoopjob

会里点:安装和ESSqoop,使用SqoopShell

实验重点难点F越点:使用SqoopShell之导入、导出招

图8-1实验8实战Sqoop知识地图

一、实验目的

1.了解Sqoop的功能、版本。

2.理解Sqoop的体系架构。

3.熟练掌握Sqoop的安装。

4.熟练掌握SqoopShell常用命令的使用。

5.了解SqoopAPI编程。

二、实验环境

本实验所需的软件环境包括CentOS、OracleJDK1.6+、全分布模式Hadoop集群、MySQL、

HBase^Hive、Sqoopl安装包、Eclipse。

三、实验内容

1.规划安装。

2.安装和配置Sqoop。

3.验证Sqoopo

4.使用SqoopShell完成数据从关系数据库(Oracle>MySQL、PostgreSQL等)到Hadoop

(HDFS/Hive/HBase)的导入和导出。

四、实验原理

ApacheSqoop是一个开源的基于Hadoop的数据迁移工具,是Apache的顶级项目,主

要用于在Hadoop和结构化存储器之间传递数据,Sqoop即SQL-to-Hadoop。

(一)初识Sqoop

1.Sqoop概述

Hadoop平台的最大优势在于它支持使用不同形式的数据。HDFS能够可靠地存储日志和

来自不同渠道的其它数据,MapReduce程序能够解析多种特定的数据格式,抽取相关信息并

将多个数据集组合成有用的结果。

但是为了能够和HDFS之外的数据存储库进行交互,必须通过开发MapReduce应用程

序使用外部API来访问数据,但是每次都需要编写MapReduce程序,非常麻烦。在没有出

现Sqoop之前,实际生产中有许多类似的需求,都需要通过编写MapReduce程序然后形成

一个工具去解决,后来慢慢就将该工具代码整理出一个框架并逐步完善,最终就有了Sqoop

的诞生。

ApacheSqoop是一个开源工具,主要用于在Hadoop和关系数据库、数据仓库、NoSQL

之间传递数据。通过Sqoop,可以方便地将数据从关系数据库(Oracle.MySQL、PostgreSQL

等)导入到Hadoop(HDFS/Hive/HBase),用于进一步的处理,一旦生成最终的分析结果,便

可以再将这些结果导出到结构化数据存储如关系数据库中,供其他客户端使用。使用Sqoop

导入导出数据的处理流程如图8-2所示。

Sqoop是连接传统关系型数据库和Hadoop的桥梁,它不需要开发人员编写MapReduce

程序,只需要编写简单的配置脚本即可,大大提升了开发效率。

Sqoop核心设计思想是利用MapReduce加快数据传输速度。也就是说,Sqoop的导入和

导出功能是通过MapReduce作业实现的,所以它是一种批处理方式进行数据传输,难以实

现实时数据的导入和导出。

2.Sqoop版本

Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,为了让使用者

能够快速部署,也为了让开发人员能够更快速地迭代开发,2012年,Sqoop独立出来,成为

Apache的顶级项目。Sqoop版本发布历程如图8-3所示。

56个补丁-->+<-----191个补丁-------中-116个补丁

Sqoop孵化期Sqoop独立

2009年5月2010年4月2011年6月2012年3月

图8-3Sqoop版本发布历程

目前,Sqoop的版本主要分为Sqoop1和Sqoop2,1.4.X版本称为Sqoop1,1.99.X版本

称为Sqoop2。Sqoop1和Sqoop2在架构和使用上有很大区别,Sqoop2对Sqoop1进行了

重写,以解决Sqoopl架构上的局限性。Sqoopl是命令行工具,不提供JavaAPI,因此很难

嵌入到其他程序中,另外,Sqoop1的所有连接器都必须掌握所有输出格式,因此,编写新

的连接器就需要做大量的工作。Sqoop2具有以运行作业的服务器组件和一整套客户端,包

括命令行接口(CLI)、网站用户界面、RESTAPI和JavaAPI,Sqoop2还能使用其它执行引擎

例如Sparko读者应注意的是,Sqoop2的CLI和Sqoop1的CLI并不兼容。

最新的Sqoop1为2017年12月发布的稳定版Sqoop1.4.7,最新的Sqoop2为2016年

7月发布的Sqoop1.99.7。

Sqoopl是目前比较稳定的发布版本,本章围绕Sqoop1展开描述,Sqoop2正处于开发

期间,可能并不具备Sqoop1的所有功能。

(―)Sqoop体系架构

Sqoop1的架构非常简单,其整合了Hive、HBase,通过MapTask来传输数据,Map负

责数据的加载、转换。Sqoopl体系架构如图8-4所示。

图8-4Sqoop1体系架构

从工作模式角度来看Sqoopl架构,Sqoop是基于客户端模式的,用户使用客户端模式,

只需在一台机器上即可完成。

从MapReduce角度来看Sqoop1架构,Sqoop只提交一个MapReduce作业,数据的传

输和转换都是使用Mapper来完成的,而且该MapReduce作业仅有Mapper并不需要Reducer。

从安全角度来看Sqoopl架构,需要在执行时将用户名或密码显式指定,也可以固定写

在配置文件中,总体来说,安全性不高。

(三)安装Sqoop

1.运行环境

部署与运行Kafka所需要的系统环境,包括操作系统、Java环境、Hadoop环境三部分。

1)操作系统

Sqoop支持不同平台,在当前绝大多数主流的操作系统上都能够运行,例如GNU/Linux、

Windows、MacOSX等,但是在MacOSX上存在兼容性错误,若采用Windows,需要使用

cygwin完成Sqoop的安装和使用,Sqoop主要在Linux上完成操作和测试,官方推荐使用

Linux»编者采用的操作系统为Linux发行版CentOS7«

2)Java环境

Sqoop采用Java语言编写,因此它的运行环境需要Java环境的支持。编者采用的Java

为OracleJDK1.8。

3)Hadoop环境

Sqoop是基于Hadoop的数据迁移工具,因此还需要部署好Hadoop集群。目前Sqoop

支持4个版本的Hadoop,分别是0.20、0.23、1.0和2.0»编者采用的Hadoop为Hadoop

2.9.2»

关于CentOS、OracleJDK和全分布模式Hadoop集群的安装和配置,读者请参见教材实

验1,此处不再赘述。

2.配置文件

Sqoop启动时,默认读W$SQOOP_HOME/conf/sqoop-env.sh文件,该文件需要配置Sqoop

的运行参数,即Hadoop相关的环境变量。

Sqoop安装后,在安装目录下有一个示例配置文件sqoop-env-template.sh,该,模板中

已有HADOOP_COMMON_HOME>HADOOP_MAPRED_HOME、HBASE_HOME,HIVE_HOME、

ZOOCFGDIR这些相关配置项的注释行,Sqoop配置参数及其含义如表8-1所示。

表8-1sqoop-env.sh配置参数

参数名说明

HADOOP_COMMON_HOME指定bin/hadoop路径

HADOOP_MAPRED_HOME指定hadoop-*-core.jar路径

HBASE_HOME指定bin/hbase路径

HIVE_HOME指定bin/hive路径

ZOOCFGDIR指定ZooKeeper配置文件路径

(四)SqoopSheII

1.命令入口

Sqoop命令的语法格式如下所示:

sqoopCOMMAND[ARGS]

使用命令"sqoophelp”可查看完整帮助信息,如图8-5所示。

usage:sqoopCOMMAND[ARGS]

Availablecommands:

codegenGeneratecodetointeractwithdatabaserecords

create-hive-tableImportatabledefinitionintoHive

evalEvaluateaSQLstatementanddisplaytheresults

exportExportanHDFSdirectorytoadatabasetable

helpListavailablecommands

importImportatablefromadatabasetoHDFS

import-all-tabl.esImporttablesfromadatabasetoHDFS

import-mainframeImportdatasetsfromamainframeservertoHDFS

jobWorkwithsavedjobs

list-databasesListavailabledatabasesonaserver

list-tablesListavailabletablesinadatabase

mergeMergeresultsofincrementalimports

metastoreRunastandaloneSqoopmetastore

versionDisplayversioninformation

See1sqoophelpCOMMAND'forinformationonaspecificcommand.

图8-5命令sqoop帮助信息

Sqoop1.4.7中提供的参数COMMAND具体描述如表8-2所示。

表8-2Sqoop1.4.7中提供的参数COMMAND

命令功能描述

codegen将关系数据库的表映射为Java文件、JavaClass文件以及jar包

create-hive-table生成与关系数据库表的表结构对应的Hive表

eval预先了解SQL语句是否正确,并查看SQL执行结果

export将数据从HDFS导出到关系数据库某个表

help显示Sqoop帮助信息

import将数据从关系数据库某个表导入到HDFS

import-all-tables导入某个数据库下所有表到HDFS

import-mainframe将数据集从某个主机导入到HDFS

job用来生成一个SqoopJob,生成后,该任务并不执行,除非使用命令执行该任务

list-databases列出所有数据库名

list-tables列出某个数据库下的所有表

merge将HDFS中不同目录下的数据整合一起,并存放在指定目录中

metastore记录SqoopJob的元数据信息,如果不启动metastore实例,则默认的元数据存

储目录为:~/.sqoop,如果要更改存储口录,可在配置文件sqoop-site.xml中进

行更改

version显示Sqoop版本信息

2.导入命令sqoopimport

通过命令"sqoopimport”,可以方便地将数据从关系数据库(Oracle、MySQL、PostgreSQL

等)导入到Hadoop(HDFS/Hive/HBase),该命令的参数众多,此处使用“sqoopimport”帮

助仅列出部分参数,如下所示。

[xuluhui@mastersqoophelpimport

usage:sqoopimport[GENERIC-ARGS][TOOL-ARGS]

〃通用参数

Commonarguments:

-connect<jdbc-uri>SpecifyJDBCconnectstring

-password<password>Setauthenticationpassword

-username<username>Setauthenticationusername

〃导入控制参数

Importcontrolarguments:

-as-parquetfileImportsdatatoParquetfiles

-as-sequencefileImportsdatatoSequenceFiles

—columns<colzcol,col...>Columnstoimportfromtable

-compression-codec<codec>Compressioncodectouseforimport

-delete-target-dirImportsdataindeletemode

-directUsedirectimportfastpath

-e,--query<statement>ImportresultsofSQL'statement'

-mz-num-mappers<n>Use*n'maptaskstoimportinparallel

-mapreduce-job-name<name>Setnameforgeneratedmapreducejob

-table<table-name>Tabletoread

-target-dir<dir>HDFSplaintabledestination

-where<whereclause>WHEREclausetouseduringimport

・z,—compressEnablecompression

〃输出格式参数控制

Outputlineformattingarguments:

-fields-terminated-by<char>Setsthefieldseparatorcharacter

-lines-terminated-by<char>Setstheend-of-linecharacter

〃输入格式参数控制

Inputparsingarguments:

-input-enclosed-by<char>Setsarequiredfieldencloser

-input-escaped-by<char>Setstheinputescapecharacter

-input-fields-terminated-by<char>Setstheinputfieldseparator

-input-lines-terminated-by<char>Setstheinputend-of-linechar

〃导入到Hive表相关参数

Hivearguments:

-create-hive-tableFailifthetargethivetableexists

-hive-database<database-name>Setsthedatabasenametousewhenimportingtohive

-hive-importImporttablesintoHive(UsesHive'sdefaultdelimitersifnoneareset.)

-hive-overwriteOverwriteexistingdataintheHivetable

-hive-partition-key<partition-key>Setsthepartitionkeytousewhenimportingtohive

-hive-partition-value<partition-value>Setsthepartitionvaluetousewhenimportingtohive

-hive-table<table-name>Setsthetablenametousewhenimportingtohive

〃导入到HBase表相关参数

HBasearguments:

-column-family<family>Setsthetargetcolumnfamilyfortheimport

-hbase-bulkloadEnablesHBasebulkloading

-hbase-create-tableIfspecified,createmissingHBasetables

-hbase-row-key<col>Specifieswhichinputcolumntouseastherowkey

-hbase-table<table>Importto<table>inHBase

命令"sqoopimport”使用注意事项:

•使用-connect指定要导入数据的数据库。

•使用-username和--password指定数据库的用户名和密码。

•使用-as-sequencefile指定导出文件为SequenceFile格式,当然也支持Avro、Parquet、

Text其它格式,默认为--as・textfile。

•使用-columns指定要导入的字段,字段名中间用逗号相隔,且不加空格。

•使用-compression-codec指定压缩使用的codec编码,在Sqoop中默认是使用压缩

的,所以此处只需要指定codec即可。

•使用-delete-target-dir可以自动删除已存在的导入路径。

•使用-query指定查询语句,就能将query中的查询结果导入到HDFS中,具体SQL

语句需要使用单引号引起来。若-query指定的SQL语句只能够存在条件子句,需

要添加$CONDITIONS,这是固定写法。参数-query和-table不能同时使用,也不能

同时使用-columns指定输出列。

•{^ffl-mapreduce-job-name指定该作业的名称,可以通过YARNWeb或MapReduce

Web界面查看。

•使用--num-mappers指定导入数据的并行度即MapTask个数,Sqoop默认的并行度

是4。有多少个并行度,在HDFS上最终输出的文件个数就是几个。

•使用-table指定需要导入的数据表。

•使用-target-dir指定导入到HDFS上的目标目录。

•使用-where指定筛选条件,具体条件需要使用单引号引起来。

•使用Sqoop从关系数据库MySQL中导入数据到HDFS时,默认导入路径是/user/用

户名/表名。

•使用--fields-terminated-by指定字段之间的分隔符。

•使用--lines-terminated-by指定行之间的分隔符。

•Sqoop从关系型数据库MySQL导入数据到HDFS时,默认的字段分隔符是行

分隔符是

3.导出命令sqoopexport

通过命令"sqoopexport”,可以方便地将数据从Hadoop(HDFS/Hive/HBase)导出到关

系数据库(OracleMySQL、PostgreSQL等),该命令的参数众多,此处使用“sqoopexport”

帮助仅列出部分参数,如下所示。

[xuluhui@master^]$sqoophelpexport

usage:sqoopexport[GENERIC-ARGS][TOOL-ARGS]

〃通用参数

Commonarguments:

-connect<jdbc-uri>SpecifyJDBCconnectstring

-password<password>Setauthenticationpassword

-username<username>Setauthenticationusername

〃导出控制参数

Exportcontrolarguments:

-batchIndicatesunderlyingstatementstobeexecutedinbatchmode

-columns<col/col/col...>Columnstoexporttotable

-directUsedirectexportfastpath

-export-dir<dir>HDFSsourcepathfortheexport

・m,--num-mappers<n>Use'n'maptaskstoexportinparallel

-mapreduce-job-name<name>Setnameforgeneratedmapreducejob

-table<table-name>Tabletopopulate

〃输入文件参数设置

-input-fields-terminated-by<char>Setstheinputfieldseparator

-input-lines-terminated-by<char>Setstheinputend-of-linechar

〃输出文件参数设置

-fields-terminated-by<char>Setsthefieldseparatorcharacter

-lines-terminated-by<char>Setstheend-of-linecharacter

命令"sqoopimport”使用注意事项(与"sqoopimport”重复的不再赘述):

•使用-export-dir指定带待导出的HDFS数据的路径。

•使用-fields-terminated-by指定数据列的分隔符。

•使用-lines-terminated-by指定数据行的分隔符。

•默认情况下读取一行HDFS文件的数据,就插入一条记录到关系数据库中,造成性

能低下。可以使用参数-Dsqoop.export.records.pre.statement指定批量导出,依次导

出指定行数的数据到关系数据库中。

4.sqoop-options-file

Sqoop导入和导出功能的Sqoop命令行方式使用起来比较麻烦,重用性差。在Sqoop中

还提供了参数--options-file,允许先将Sqoop命令封装到一个.opt文件中,然后使用参数--

options-file执行封装后的脚本,这样更加方便后期维护。

5.sqoopjob

也可以将常用的Sqoop命令定义成SqoopJob,方便他人调用。命令"sqoopjob”帮助

信息如下所示。

[xuluhui@master~]$sqoophelpjob

usage:sqoopjob[GENERIC-ARGS][JOB-ARGS][-[<tool-name>][TOOL-ARGS]]

Jobmanagementarguments:

-create<job-id>Createanewsavedjob

-delete<job-id>Deleteasavedjob

-exec<job-id>Runasavedjob

-helpPrintusageinstructions

-listListsavedjobs

-meta-connect<jdbc-uri>SpecifyJDBCconnectstringforthemetastore

-show<job-id>Showtheparametersforasavedjob

-verbosePrintmoreinformationwhileworking

(五)SqoopAPI

关于SqoopAPI的介绍读者请参考Sqoop开发者指南

http://sqoop.apache.Org/docs/l.4.7/SqoopDevGuide.htmlo

五、实验步骤

(-)规划安装

1.规划Sqoop

安装Sqoop仅需要1台机器,但需要操作系统、Java环境和Hadoop环境作为支撑。本

实验拟将Sqoop运行在Linux上,在成功部署全分布模式Hadoop集群(实验2)、HBase(实

验、(实验)、(实验)的基础上,在主机名为的机器上安装

5MySQL6Hive6masterSqoopo

具体Sqoop规划表如表8-3所示。

表8-3Sqoop部署规划表

主机名IP地址运行服务(必须)软硬件配置

内存:4G

CPU:1个2核

硬盘:40G

操作系统:CentOS7.6.1810

NameNodeJava:OracleJDK8ul9l

SecondaryNameNodeHadoop:Hadoop2.9.2

master30

ResourceManagerZooKeeper:ZooKeeper3.4.13

JobHistoryServerHBase:HBase1.4.8

MySQL:MySQL5.7

Hive:Hive2.3.4

Sqoop:Sqoop1.4.7

Eclipse:EclipseIDE2018-09for

JavaDevelopers

内存:1G

CPU:1个1核

硬盘:20G

DataNode操作系统:CentOS7.6.1810

slave131

NodcManagerJava:OracleJDK8ul91

Hadoop:Hadoop2.9.2

ZooKccper:ZooKccpcr3.4.13

HBase:HBase1.4.8

内存:1G

CPU:1个1核

硬盘:20G

DataNode操作系统:CentOS7.6.1810

slave232

NodeManagerJava:OracleJDK8ul91

Hadoop:Hadoop2.9.2

ZooKccper:ZooKccper3.4.13

HBase:HBase1.4.8

2.软件选择

本实验中所使用各种软件的名称、版本、发布日期及下载地址如表8-4所示。

衣8-4本实验使用的软件名称、版本、发布日期及下载地址

软件名称软件版本发布日期下载地址

VMwareVMware

/products/workstation-

WorkstationWorkstation14.5.72017年6月22日

pro.html

ProProforWindows

CentOSCentOS7.6.18102018年11月26日/download/

/technetwork/javayjavase/

JavaOracleJDK8ul912018年10月16日

downloads7index.html

HadoopHadoop2.9.22018年11月19日/releases.html

ZooKeeperZooKeeper3.4.132018年7月15日/relcases.html

HBaseHBase1.4.82018年10月2日/downloads.html

MySQLMySQLConncctor/J

2019年7月29日https://dev.mysql.eom/downloads/connector/j/

Connector/J5.1.48

MySQL

MySQLCommunity/get/mysql57-community-

Community2019年7月22日

5.7.27release-e!7-l1.noarch.rpm

Server

HiveHive2.3.42018年11月7日/downloads.html

SqoopSqoop1.4.72017年12月/dyn/closer.lua/sqoop/

EclipseIDE2018-09

Eclipse2018年9月/downloads/packages

fbrJavaDevelopers

由于本章之前已完成VMwareWorkstationPro、CentOS>Java>Hadoop集群、HBase集

群、MySQL、Hive的安装,故本实验可以直接从安装Sqoop开始。

(二)安装和配置租。。P

1.初始软硬件环境准备

(1)准备3台机器,安装操作系统,编者使用CentOSLinux7。

(2)对集群内每一台机器,配置静态IP、修改机器名、添加集群级别域名映射、关闭

防火墙。

(3)对集群内每一台机器,安装和配置Java,编者使用OracleJDK8U191。

(4)安装和配置Linux集群中各节点间的SSH免密登录.

(5)在Linux集群上部署全分布模式Hadoop集群。

(6)在Hadoop主节点上安装关系型数据库如MySQL。

(7)在Linux集群上部署所需组件,例如ZooKeeper、HBase、Hive,此步可选,要根据

实际需要解决的问题决定是否部署、部署哪些组件和启动服务。

以上步骤编者已在教材实验1、实验4、实验5、实验6中详细介绍,具体操作过程请

读者参见教材,此处不再赘述。

2.获取Sqoop

Sqoop官方下载地址为/dyn/closer.lua/sqoop/,建议读者下载

Sqoop1,编者选用的Sqoop版本是2017年12月发布的稳定版Sqoop1.4.7,其安装包文件

sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz例如存放在master机器的/home/xuluhui/Downloads中。

3.安装Sqoop

Sqoop仅在一台机器上安装即可,编者采用在master机器上安装,以下所有步骤均在

master一台机器上完成。

切换到root,解压sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz到安装目录如/usr/local下,使用

命令如下所示。

suroot

cd/usr/local

tar-zxvf/home/xuluhui/Downloads/sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz

默认解压后的Sqoop目录为"sqoop-147.bin_hadoop-2.6.0,,j名字过长,编者为了方

便,将此目录重命名为“sqoop-1.4.7",使用命令如下所示。

mvsqoop-1.4.7.bin_hadoop-2.6.0sqoop-1.4.7

注意,读者可以不用重命名Sqoop安装目录,采用默认目录名,但请注意,后续步骤中

关于Sqoop安装目录的设置与此步骤保持一致。

4.配置Sqoop

安装Sqoop后,ffiSSQOOP^OME/conf中有一个示例配置文件sqoop-env・template.sh,

Sqoop启动时,默认读W$SQOOP_HOME/conf/sqoop-env.sh文件,该文件需要配置Sqoop的

运行参数,即Hadoop相关的环境变量。

1)复制模板配置文件sqoop-env-template.sh为sqoop-env.sh

使用命令“cp”将Sqoop示例配置文件sqoop-env-template.sh复制并重命名为sqoop-

env.sh«使用如下命令完成,假设当前目录为“/usr/local/sqoop-1.4.7"。

cpconf/sqoop-env-template.shconf/sqoop-env.sh

2)修改配置文件sqoop-env.sh

读者可以发现,模板中已有HADOOP_COMMON_HOMExHADOOP_MAPRED_HOME、

HBASE_HOME、HIVE_HOME>ZOOCFGDIR这些相关配置项的注释行,此处,编者仅设置

HADOOP_COMMON_HOME和HADOOP_MAPRED_HOMEo使用命令"vimconf/sqoop-env.sh”

修改Sqoop配置文件,修改后的配置文件sqoop-env.sh内容如下所示。

#SetHadoop-specificenvironmentvariableshere.

#Setpathtowherebin/hadoopisavailable

exportHADOOP_COMMON_HOME=/usr/local/hadoop-2.9.2

#Setpathtowherehadoop-*-core.jarisavailable

exportHADOOP_MAPRED_HOME=/usr/local/hadoop-2.9.2

5.添加JDBC驱动

由于编者采用的关系型数据库为MySQL,因此需要添加MySQLJDBC驱动的jar包,关

于MySQL的安装请读者参见教材实验6。若读者使用的数据库是MicrosoftSQLServer或是

Oracle,就需要添加它们的JDBC驱动包。

首先,下载MySQLConnector/J,其官方下载地址是

https://dev.mysql.eom/downloads/connector/j/,编者下载的是2019年7月29日发布的MySQL

Connector/J5.1.48,文件名为mysql-connector-java-5.1.48.tar.gz,采用的MySQLJDBC驱动jar

包是

mysql-connector-java-5.1.48.jar0

其次,解压mysql-connector-java-5.L48.tar.gz,例如解压至lJ/home/xuluhui/Downloads下,

使用的命令如下所示。

tar-zxvfmysql-connector-java-5.1.48.tar.gz

然后,^^/home/xuluhui/Downloads/mysql-connector-java-5.1.48下的MySQLJDBC马区

动jar包文件mysql-connector-java-5.1.48.jar拷贝至目录/usr/local/sqoop-1.4.7/lib下,使用的

命令如下所示。

cp/home/xuluhui/Downloads/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48.jar

/usr/local/sqoop-1.4.7/lib/

6.设置$SQOOP_HOME目录属主

为了在普通用户下使用Sqoop,^$SQOOP_HOME目录属主设置为Linux普通用户例如

xuluhui,使用以下命令完成。

chown-Rxuluhui/usr/local/sqoop-1.4.7

7.在系统配置文件目录/etc/profile.d下新建sqoop.sh

使用uvim/etc/profile.d/sqoop.shv命令在/etc/profile.d文件夹下新建文件sqoop.sh,添

加如下内容。

exportSQOOP_HOME=/usr/local/sqoop-1.4.7

exportPATH=$SQOOP_HOME/bin:$PATH

其次,重启机器,使之生效。

此步骤可省略,之所以将$5(10(^^401\/1£/1)所加入到系统环境变量PATH中,是因为当输

入Sqoop命令时,无需再切换到$SQOOP_HOME/bin,这样使用起来会更加方便,否则会出

现错误信息"bash:****:commandnotfound.如图8-6所示。

[xuluhui@master~]$sqoophelp

bash:sqoop:commandnotfound...

[xuluhui@master~]$|

图8-6$SQOOP_HOME/bin未加入系统环境变量PATH前sqoop命令无法直接输入使用

(三)验证Sqoop

切换到普通用户例如xuluhui下,可以通过命令"sqoophelp”来验证Sqoop配置是否正

确,运行效果如图8-7所示。从图8-7中可以看出,Sqoop已部署成功。

[xuluhui@master-]$sqoophelp

Warning:/usr/local/sqoop-1.4.7/../hbasedoesnotexist!HBaseimportswillfail

Pleaseset$HBASE_HOMEtotherootofyourHBaseinstallation.

Warning:/usr/local/sqoop-1.4.7/../hcatalogdoesnotexist!HCatalogjobswillf

ail.

Pleaseset$HCAT_HOMEtotherootofyourHCataloginstallation.

Warning:/usr/local/sqoop-1.4.7/../accumulodoesnotexist•Accumuloimportswit

Ifail.

Pleaseset$ACCUMULO_HOMEtotherootofyourAccumuloinstallation.

19/08/1100:18:37INFOsqoop.Sqoop:RunningSqoopversion:1.4.7

usage:sqoopCOMMAND[ARGS]

Availablecommands:

codegenGeneratecodetointeractwithdatabaserecords

create-hive-tableImportatabledefinitionintoHive

evalEvaluateaSQLstatementanddisplaytheresults

exportExportanHDFSdirectorytoadatabasetable

helpListavailablecommands

importImportatablefromadatabasetoHDFS

import-all-tablesImporttablesfromadatabasetoHDFS

import-mainframeImportdatasetsfromamainframeserv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论