Sqoop1.99.7安装、配置和使用(一)

news/2024/7/10 20:41:32 标签: 开源, hadoop, sqoop, linux, mapreduce

转载请注明出处:http://blog.csdn.net/u012842205/article/details/52344196


最近被Sqoop2彻底搞蒙了,各种各样的奇怪问题,层出不穷,而且网上资料都没有针对这些问题的,官方文档也有各种各样的不完整描述。一些注意事项也不说。弄了快一个星期,这么个小小工具,才算基本会使了。网上sqoop1.99.7的资料很少,或者我没找到吧!希望这篇文章能给同行们很好的帮助。主要是记录从MySQL数据表中将数据导出到HDFS上的过程,我也记录下各种奇奇怪怪的问题。


一、环境描述

Apache Hadoop2.6.4

Sqoop1.99.7

Kali2 Linux 系统,基于Debian,Ubuntu也差不多。

MySQL server 5.5.49-0+deb8u1(Debian)

再提一下MySQL的JDBC驱动:直接上官网下的connection/J:mysql-connector-java-5.1.39-bin.jar,也就是5.1.39的版本


二、Sqoop2基本介绍

用于结构化数据系统(比如关系型数据库系统RDBMS)和Hadoop系统间的大量数据传输的一个工具,特别是Hadoop所使用的HDFS分布式文件系统。作为ASF下的一个开源项目,其一开始也只是一个小工具,当然现在也是,还附带一些库供客户端调用。Sqoop版本又分Sqoop1和Sqoop2,其中Sqoop1目前最高释出版本为1.4.6,Sqoop2最高释出版本为1.99.7,Sqoop1与Sqoop2相互间不兼容,而且Sqoop2目的并不是作为产品,主要是致力于开发。再者,其对Hadoop的支持版本有些特别要求,比如Hadoop1和Hadoop0.x还有Hadoop2.x的兼容性等。在下载时一般要注意其兼容的Hadoop版本(Sqoop官网上我没有看到相关具体的描述,只是通过下载的文件名辨别与Hadoop的兼容性)。

Sqoop进行数据转移时必须依赖于Hadoop的MapReduce作业,所以Hadoop必须在环境中存在,且能被Sqoop访问。


三、Sqoop2下载安装

1、直接在sqoop.apache.org" rel="noopener noreferrer">sqoop官网上下载

选择sqoop2的1.99.7版本即可。我直接下的bin版本,这个版本已经编译好了,直接用。当然你也可以下源代码到本地编译安装,确保有Java环境,因为Sqoop用Java编写的。本文直接用的bin版本:sqoop-1.99.7-bin-hadoop200.tar.gz


2、解压安装包

tar -xzvf sqoop-1.99.7-bin-hadoop200.tar.gz

mv sqoop-1.99.7-bin-hadoop200 sqoop1.99.7


3、目录简单说明

bin:可执行脚本,一般使用sqoop都是通过这个目录中的工具调用,是一些shell或batch脚本。

conf:存放配置文件

docs:目前不清楚具体是什么,可能是帮助文档,不过一般使用sqoop不会用到。

server:里面只有一个lib目录,存了很多jar文件,是sqoop2 的server包。

shell:同理,sqoop2的shell包。

tools:同理,sqoop2的工具包。


4、安装

因为已经编译好了,所以安装过程是很简单的,只需要把整个目录放在一个自己喜欢的地方即可。


5、配置

这里说说环境需要什么:

(1)Java环境,也就是需要Java JDK,我使用的Java为Oracle的1.8版本,注意建议不使用OpenJDK,以防一些兼容性问题。本例根目录为/usr/lib/jvm/jdk1.8.0_101。

(2)Hadoop环境,我使用的Apache Hadoop2.6版本,根目录为/home/hadoop/hadoop2.6。


配置过程中多参考官网的文档,但就我亲试而言,还是有很多没有说清楚的地方。文档一定选择对应版本的。

(1)配置Hadoop根目录路径

添加一个系统环境变量,HADOOP_HOME,本例中设置为/home/hadoop/hadoop2.6。

无论添加到/etc/profile还是在/etc/profile.d中创建一个脚本导入变量,亦或是在~/.bashrc文件中写,都可以:

export HADOOP_HOME=/home/hadoop/hadoop2.6

注意:配置这个变量主要是让Sqoop能找到以下目录的jar文件和Hadoop配置文件:

$HADOOP_HOME/share/hadoop/common

$HADOOP_HOME/share/hadoop/hdfs

$HADOOP_HOME/share/hadoop/mapreduce

$HADOOP_HOME/share/hadoop/yarn

官网上说名了可以单独对各个组建进行配置,使用以下变量:

$HADOOP_COMMON_HOME$HADOOP_HDFS_HOME$HADOOP_MAPRED_HOME, $HADOOP_YARN_HOME

若$HADOOP_HOME已经配置了,最好不要再配置下面的变量,可能会有些莫名错误。


(2)配置Hadoop代理访问

因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组。找到Hadoop的core-site.xml配置文件(本例是$HADOOP_HOME/etc/hadoop/core-site.xml):

<property>
  <name>hadoop.proxyuser.$SERVER_USER.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.$SERVER_USER.groups</name>
  <value>*</value>
</property>
$SERVER_USER是运行Sqoop2 Server的系统用户,本例我使用了hadoop用户运行server,所以将之代替为hadoop

注意:保证你的用户id大于1000(可用id命令查看),否则作为系统变量运行时,可能需要其他配置,参照官网。


(3)配置Sqoop根目录

这个官方文档没有说明,不过貌似sqoop1文档有这个描述,我也胡乱配置了一个:

export $SQOOP_HOME=/home/hadoop/sqoop1.99.7

(4)配置第三方jar引用路径

一般我们使用的数据库驱动包都没有随着Sqoop一起释出,多半是因版权问题,所以将这些包放置在这个第三方组件下。再在配置一个SQOOP_SERVER_EXTRA_LIB系统变量即可,本例指定路径为$SQOOP_HOME/extra

export SQOOP_SERVER_EXTRA_LIB=$SQOOP_HOME/extra
最后把mysql的驱动jar文件复制到这个目录下。


(5)Sqoop服务器配置

主要是配置conf目录下的sqoop.properties和sqoop_bootstrap.properties两个文件

sqoop_bootstrap.properties文件配置config支持类,这里一般使用默认值即可:

sqoop.config.provider=org.apache.sqoop.core.PropertiesConfigurationProvider
sqoop.properties文件配置比较多,这里按需要配置,我写下我配置的项,其他都使用默认值:

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/hadoop2.6/etc/hadoop

org.apache.sqoop.security.authentication.type=SIMPLE
org.apache.sqoop.security.authentication.handler=org.apache.sqoop.security.authentication.SimpleAuthenticationHandler
org.apache.sqoop.security.authentication.anonymous=true

注意:官方文档上只说了配置上面第一项,mapreduce的配置文件路径,但后来运行出现authentication异常,找到sqoop文档描述security部分,发现sqoop2支持hadoop的simple和kerberos两种验证机制。所以配置了一个simple验证,这个异常才消除。


(6)验证配置是否有效

使用bin中的sqoop2-tool工具进行验证:

bin/sqoop2-tool verify
这个工具也可用于软件升级。若没有什么问题,则可以往下走了。


(7)开启服务器

sqoop2的运行模式不再是sqoop1的一个小工具,而加入了服务器,这样只要能访问到mapreduce配置文件及其开发包,sqoop服务器部署在哪里都无所谓,而客户端shell是不需要任何配置的。直接用即可。

开启服务器:

bin/sqoop2-server start
这时可以通过JDK中的jps工具查看是否已经正确启动起来,正常情况下会有个SqoopJettyServer的进程,这也可以想象,Sqoop server是基于jetty实现的。


至此,sqoop1.99.7的配置和启动已经完成,下一篇文章将接着讲使用和一些注意事项,并总结。


http://www.niftyadmin.cn/n/983419.html

相关文章

数据库设计中的四个范式(转)

http://blog.sina.com.cn/s/blog_4f925fc30102e9ze.html 在创建一个数据库的过程中&#xff0c;必须依照一定的准则&#xff0c;这些准则被称为范式&#xff0c;从第一到第六共六个范式&#xff0c;一般数据库设计只要遵循第一范式&#xff0c;第二范式&#xff0c;和第三范式…

TDengine和InfluxDB的性能对比报告

前言 性能是用户在选择和使用时序数据库时非常关注的一个点。 为了准确体现TDengine的性能数据&#xff0c;我们策划了《TDengine和InfluxDB的性能对比》系列测试报告。 “一言不合上数据”&#xff0c;今天我们就先来分享一下两款数据库写入性能的对比。 为了更加具有说服力…

SparkStreaming之优雅停止

1.监听redis的某个key是否存在 /*** 优雅的停止Streaming程序** param ssc*/ def stopByMarkKey(ssc: StreamingContext): Unit {val intervalMills 10 * 1000 // 每隔10秒扫描一次消息是否存在var isStop falsewhile (!isStop) {isStop ssc.awaitTerminationOrTimeout(in…

Sqoop1.99.7安装、配置和使用(二)

转载请注明出处&#xff1a;http://blog.csdn.net/u012842205/article/details/52346595 本文将接上文&#xff0c;记录Sqoop1.99.7基本使用。这里我们使用sqoop2将MySQL中的一个数据表导出到HDFS&#xff0c;都是最简单的使用。 请确保Sqoop2服务器已经启动&#xff0c;并确保…

好消息!TDengine的K8s部署方案终于正式落地!

好消息&#xff01;好消息&#xff01;今天我们有一个令人激动的好消息要宣布&#xff01; 虽然开局的文风看着有些“震惊党”&#xff0c;但是希望大家不要介意。因为从今天开始&#xff0c;TDengine终于正式推出了基于K8s上的部署方案。 这么久以来&#xff0c;我们时常看到…

如何彻底搞懂TDengine的fqdn概念?这一篇文章就够了

小T导读&#xff1a;很多新用户在配置TDengine的时候&#xff0c;偶尔会因为没有配置好FQDN&#xff0c;导致出现“unable to resolve FQDN”问题。所以大家会因为这个问题向TDengine的研发团队求助。本文会讲解FQDN的相关设计和配置&#xff0c;希望能帮助用户避免类似问题。 …

Hadoop 2.7分布式部署

转载请注明出处&#xff1a; http://blog.csdn.net/u012842205/article/details/52503514 Hadoop是一个开源的计算框架&#xff0c;致力于在廉价计算机集群上大规模数据集的分布式存储和计算。简介可通过此文章了解&#xff1a;Hadoop概述 当然&#xff0c;最好的学习方式&am…

kafkaAPI使用以及常用配置介绍

这篇文章主要介绍kafka中JAVA API的使用&#xff0c;这里面为了介绍配置&#xff0c;所以使用的是原生的javaapi操作&#xff0c;kafka可以与spring通过xml配置集成&#xff0c;或者更加简单通过spring boot引入starter&#xff0c;通过&#xff08;AutoConfiguration&#xff…