十七、Sqoop2安装与初始化错误排除

# Decompress Sqoop distribution tarball
tar -xvf sqoop-<version>-bin-hadoop<hadoop-version>.tar.gz

# Move decompressed content to any location
mv sqoop-<version>-bin-hadoop<hadoop version>.tar.gz /usr/lib/sqoop

# Change working directory
cd /usr/lib/sqoop
一、解压:tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz
二、hadoop的依赖

一般情况下在/etc/profile中设置$HADOOP_HOME就可以了,如果关心版本带来的问题请往下看。

Sqoop server需要以下指向Hadoop库的环境变量:

$HADOOP_COMMON_HOME, $HADOOP_HDFS_HOME, $HADOOP_MAPRED_HOME, $HADOOP_YARN_HOME

如果找不到Hadoop库,Sqoop服务器将不会启动。
Sqoop服务器是使用环境变量来查找Hadoop库的,如果环境变量$HADOOP_HOME被设置,Sqoop将自动在以下位置进行查找:

$HADOOP_HOME/share/hadoop/common, $HADOOP_HOME/share/hadoop/hdfs, $HADOOP_HOME/share/hadoop/mapreduce, $HADOOP_HOME/share/hadoop/yarn

如果是要通过这样查找目录的,请务必确保你的hadoop版本的目录结果是这样的.
手动指定服务器在何处使用$HADOOP_COMMON_HOME, $HADOOP_HDFS_HOME, $HADOOP_MAPRED_HOME and $HADOOP_YARN_HOME这些环境变量:

# Export HADOOP_HOME variable
export HADOOP_HOME=/...

# Or alternatively HADOOP_*_HOME variables
export HADOOP_COMMON_HOME=/...
export HADOOP_HDFS_HOME=/...
export HADOOP_MAPRED_HOME=/...
export HADOOP_YARN_HOME=/...
三、Sqoop2环境变量的配置和配置第三方Jars

vim /etc/profile
之后务必记得:source /etc/profile

export SQOOP_HOME=...
export CATALINA_HOME=${SQOOP_HOME}/server
export LOGDIR=${SQOOP_HOME}/logs
export SQOOP_SERVER_EXTRA_LIB=${SQOOP_HOME}/extralib
$PATH=.:$SQOOP_HOME/bin:$PATH

可以直接把第三方Jars放进$SQOOP_HOME/server/lib中,也可以通过配置环境变量的方式导入第三方Jars。
SQOOP_SERVER_EXTRA_LIB是用来配置外部导入的依赖包文件夹的,譬如需要连接mysql,就可以把相关的mysql-connector-java-8.0.15.jar,官方推荐用用这个,并且向下兼容5.6,5.7版本的,详情可查看官网的,当然你也可以根据你的mysql版本来使用,有些人可能会用mysql5.6或5.7的,因此用这个mysql-connector-java-5.1.39-bin.jar也可以,当然,这个官方并不推荐使用。

四、Hadoop configuration

core-site.xml:(官方)

<property>
  <name>hadoop.proxyuser.sqoop2.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.sqoop2.groups</name>
  <value>*</value>
</property>

如果此前有配置过就不必重配置,用习惯之前配置好的用户就可以了,hadoop.proxyuser.sqoop2.hosts中的sqoop2更改为自己使用的用户名,下一个属性类似。
四、配置服务器
服务器文件存储在$SQOOP_HOME/conf中。
sqoop_bootstrap.properties文件配置指定的配置提供器来加载其余的服务器配置,一般采取默认的就足够了了。默认:PropertiesConfigurationProvider
sqoop.properties用来配置另一部分配置,这个比较重要,也比较简单,根据提示和需求进行配置就可以了
我的变动:

# JDBC repository provider configuration
org.apache.sqoop.repository.jdbc.handler=org.apache.sqoop.repository.mysql.MySqlRepositoryHandler
org.apache.sqoop.repository.jdbc.transaction.isolation=READ_COMMITTED
org.apache.sqoop.repository.jdbc.maximum.connections=10
org.apache.sqoop.repository.jdbc.url=jdbc:mysql://master:3306/sqoop?createDatabaseIfNotExist=true
org.apache.sqoop.repository.jdbc.driver=com.mysql.jdbc.Driver
org.apache.sqoop.repository.jdbc.user=root
org.apache.sqoop.repository.jdbc.password=

# System properties for embedded Derby configuration
org.apache.sqoop.repository.sysprop.mysql.stream.error.file=@LOGDIR@/mysqlrepo.log

# Hadoop configuration directory
org.apache.sqoop.submission.engine.mapreduce.configuration.directory= <填写绝对路径>
#例:/var/hadoop/etc/hadoop,/var/hadoop为$HADOOP_HOME指定的路径

# External connectors load path
# "/path/to/external/connectors/": Add all the connector JARs in the specified folder
# 配置第三方Jars,可以通过这个文件配置,也可以通过上面提到的通过环境变量的方式配置,不过
org.apache.sqoop.connector.external.loadpath=/hadoop/sqoop/extralib
五、通过验证工具所有配置是否正确,以下是配置正确后的输出
sqoop2-tool verify
...
Verification was successful.
Tool class org.apache.sqoop.tools.tool.VerifyTool has finished correctly
六、异常解决(没有异常的可以跳过)
2019-02-12T19:07:58,393 ERROR [main] org.apache.sqoop.repository.common.CommonRepositoryHandler - Can't execute query: CREATE DATABASE IF NOT EXISTS"SQOOP"
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"SQOOP"' at line 1

这个异常的出现就是mysql的sql_mode默认不支持ANSI_QUOTES,我们通过在mysql的命令行下输入:
SET GLOBAL sql_mode = ‘ANSI_QUOTES’;

在my.cnf [mysqld]下加入 sql_mode=ANSI_QUOTES
mysql可能每次重启后sql_mode会重置,可能需要手动进行设置,那么需要通过后面这种方式来设置,关于Linux下的my.cnf可以参考This
注:sql_mode定义了mysql支持的说起来语法和数据校验等;
select @@sql_mode;#用来查询当前数据库的sql_mode
在这里插入图片描述
关于sql_mode可以参考This

七、Sqoop2初始化,第五步正常后执行

sqoop2-tool upgrade

成功后会在mysql下新建两个表,一个大写的表名,用来记录sqoop的各种配置信息,一个自定义的表名
在这里插入图片描述

八、Server Life Cycle
sqoop2-server start   //启动Sqoop2服务器,信息输出完全后回车一下回到命令行,启动后JPS一下会多了个SqoopJettyServer守护进程
sqoop2-server stop

守护进程默认端口12000,可以在conf/sqoop.properties文件中配置org.apache.sqoop.jetty.port来使用自定义的端口

九、客户端安装使用

只需在目标机器复制Sqoop发行版的工件并且运行以下命令就可以使用了,一般就是将服务器的配置好sqoop复制到目标机器,目标机器不要启动server,直接启动客户端就可以了

sqoop2-shell
十、客户端的模块冲突异常
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.4.11 and you are trying to load version 2.4.0

groovy-all是JVM用来支持groovy脚本语言的jar包,这种情况无非就是JVM已经加载了一个2.4.11版本的groovy-all.jar,而sqoop客户端尝试启动另一个不同版本的groovy-all自然就产生了冲突,版本相差不大情况下简单点就是把sqoop client的lib下的groovy-all.jar删除掉就可以了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值