sqoop安装部署问题事项

主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中

sqoop主要有两个版本:1.4.x、1.99.x ; sqoop1和sqoop2两个版本。

环境变量配置无问题。 【以下问题是1.99.6版本,经过多方尝试,仍报错】

报错

【-bash: sqoop: command not found】

  • sqoop2中已经没有sqoop command指令了…sqoop指令是适用与sqoop1的

进入sqoop.sh client,使用show job 等。

报错

sqoop:000> show job
Exception has occurred during processing command
Exception: org.apache.sqoop.common.SqoopException Message: CLIENT_0000:An unknown error has occurred
  • 原因是没有指定服务端,需设置 set server –host 主机名或IP地址

    sqoop:000> set server --host 主机名或IP地址
    Server is set successfully
  • 可通过设置,查看错误原因

    sqoop:000> set option --name verbose --value true
    Verbose option was changed to true

尝试利用sqoop2 1.99.7版本

下载地址 [https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/]

配置好环境变量

export SQOOP2_HOME=/usr/local/sqoop/
export PATH=$PATH:$SQOOP2_HOME/bin
export CATALINA_BASE=$SQOOP2_HOME/server

修改 $SQOOP2_HOME/conf/sqoop.properties

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/usr/local/hadoop-2.7.7/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
# Number of milliseconds, submissions created before this limit will be removed, default is one day //锁定提交的job时间,锁定时间内不能删除
org.apache.sqoop.submission.purge.threshold=300000
# JDBC repository provider configuration //jdbc配置目录
org.apache.sqoop.repository.jdbc.url=jdbc:derby:/usr/local/sqoop/logs/repository/db;create=true
org.apache.sqoop.log4j.appender.file.File=/usr/local/sqoop/logs/sqoop.log //sqoop2日志文件目录
org.apache.sqoop.repository.sysprop.derby.stream.error.file=/usr/local/sqoop/logs/derbyrepo.log //错误日志文件目录

启动服务端 $SQOOP2_HOME/bin/sqoop2-server start

报错

Setting conf dir: /usr/local/sqoop/bin/../conf
Sqoop home directory: /usr/local/sqoop
Can't load the Hadoop related java lib, please check the setting for the following environment variables:
HADOOP_COMMON_HOME, HADOOP_HDFS_HOME, HADOOP_MAPRED_HOME, HADOOP_YARN_HOME

检查Hadoop环境是否配置正确

export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin;

注意:配置这个变量主要是让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已经配置了,最好不要再配置下面的变量,可能会有些莫名错误。

查看是否启动成功方式有三种

  • 第一种查看日志

    [root@localhost bin]# sqoop2-server start
    Setting conf dir: /usr/local/sqoop/bin/../conf
    Sqoop home directory: /usr/local/sqoop
    Starting the Sqoop2 server...
    0 [main] INFO org.apache.sqoop.core.SqoopServer - Initializing Sqoop server.
    5 [main] INFO org.apache.sqoop.core.PropertiesConfigurationProvider - Starting config file poller thread
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/apache-hive-2.3.4-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    Sqoop2 server started.
  • 第二种执行访问 http://IP地址:12000/sqoop/version

  • 第三种执行JPS命令查看进程:Bootstrap、SqoopJettyServer
    [root@localhost bin]# jps
    22402 RunJar
    5861 Jps
    11848 NamesrvStartup
    2936 DataNode
    3513 jenkins.war
    5561 SqoopJettyServer
    2060 NameNode
    22317 RunJar
    12285 JswLauncher
    12686 NodeManager
    12399 ResourceManager
    5135 Bootstrap

启动客户端 $SQOOP2_HOME/bin/sqoop2-shell

再次尝试 show job、show connector 没有报错 这说明安装部署成功

sqoop:000> show connector
0 [main] WARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
+------------------------+---------+------------------------------------------------------------+----------------------+
| Name | Version | Class | Supported Directions |
+------------------------+---------+------------------------------------------------------------+----------------------+
| generic-jdbc-connector | 1.99.7 | org.apache.sqoop.connector.jdbc.GenericJdbcConnector | FROM/TO |
| kite-connector | 1.99.7 | org.apache.sqoop.connector.kite.KiteConnector | FROM/TO |
| oracle-jdbc-connector | 1.99.7 | org.apache.sqoop.connector.jdbc.oracle.OracleJdbcConnector | FROM/TO |
| ftp-connector | 1.99.7 | org.apache.sqoop.connector.ftp.FtpConnector | TO |
| hdfs-connector | 1.99.7 | org.apache.sqoop.connector.hdfs.HdfsConnector | FROM/TO |
| kafka-connector | 1.99.7 | org.apache.sqoop.connector.kafka.KafkaConnector | TO |
| sftp-connector | 1.99.7 | org.apache.sqoop.connector.sftp.SftpConnector | TO |
+------------------------+---------+------------------------------------------------------------+----------------------+
sqoop:000> show job
+----+------+----------------+--------------+---------+
| Id | Name | From Connector | To Connector | Enabled |
+----+------+----------------+--------------+---------+
+----+------+----------------+--------------+---------+

尝试后

我想要的功能是将hive数据移入mysql,经对sqoop2的使用发现,sqoop2并不支持。遗憾。接下来将尝试sqoop1。

区别在于

功能 Sqoop 1 Sqoop 2
用于所有主要 RDBMS 的连接器 支持 不支持 解决办法: 使用已在以下数据库上执行测试的通用 JDBC 连接器: Microsoft SQL Server 、 PostgreSQL 、 MySQL 和 Oracle 。 此连接器应在任何其它符合 JDBC 要求的数据库上运行。但是,性能可能无法与 Sqoop 中的专用连接器相比
Kerberos 安全集成 支持 不支持
数据从 RDBMS 传输至 Hive 或 HBase 支持 不支持 解决办法: 按照此两步方法操作。 将数据从 RDBMS 导入 HDFS 在 Hive 中使用相应的工具和命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 HBase
数据从 Hive 或 HBase 传输至 RDBMS 不支持 解决办法: 按照此两步方法操作。 从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件) 使用 Sqoop 将上一步的输出导出至 RDBMS 不支持 按照与 Sqoop 1 相同的解决方法操作
文章作者: 陈 武
文章链接: http://www.updatecg.xin/2019/03/13/sqoop安装部署问题事项/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的学习记录
打赏
  • 微信
  • 支付寶

评论