更新时间:2023-03-17 GMT+08:00

Sqoop1.4.7适配MRS 3.x集群

Sqoop是专为Apache Hadoop和结构化数据库(如关系型数据库)设计的高效传输大量数据的工具。客户需要在MRS中使用sqoop进行数据迁移,MRS旧版本中未自带Sqoop,客户可参考此文档自行安装使用。MRS 3.1.0及之后版本已支持创建集群时勾选Sqoop组件,请创建集群时勾选即可。

前提条件

已安装MRS客户端的节点,且已安装 jdk环境。

Sqoop1.4.7适配步骤

  1. 下载开源sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz包(下载地址http://archive.apache.org/dist/sqoop/1.4.7/)。
  2. 将下载好的sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz包放入已安装MRS客户端的节点的“/opt/Bigdata/client”目录并解压。

    tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

  3. 从MySQL官网下载MySQL jdbc驱动程序“mysql-connector-java-xxx.jar”,具体MySQL jdbc驱动程序选择参见下表。

    表1 版本信息

    jdbc驱动程序版本

    MySQL版本

    Connector/J 5.1

    MySQL 4.1、MySQL 5.0、MySQL 5.1、MySQL 6.0 alpha

    Connector/J 5.0

    MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)

    Connector/J 3.1

    MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA)

    Connector/J 3.0

    MySQL 3.x、MySQL 4.1

  4. 将MySQL 驱动包放入Sqoop的lib目录下(/opt/Bigdata/client/sqoop-1.4.7.bin__hadoop-2.6.0/lib)并修改jar包的属组和权限,参考图1的omm:wheel 和755的属组和权限。

    图1 MySQL 驱动包的属组和权限

  5. 使用MRS客户端中Hive的lib目录下(/opt/Bigdata/client/Hive/Beeline/lib)的jackson开头的jar包替换Sqoop的lib下的相应jar包。

    图2 jackson开头的jar

  6. 将MRS Hive客户端中(/opt/Bigdata/client/Hive/Beeline/lib)的jline的包,拷贝到Sqoop的lib下。
  7. 执行vim $JAVA_HOME/jre/lib/security/java.policy增加如下配置:

    permission javax.management.MBeanTrustPermission "register";

  8. 执行如下命令,进入Sqoop的conf目录并增加配置:

    cd /opt/Bigdata/client/sqoop-1.4.7.bin__hadoop-2.6.0/conf

    cp sqoop-env-template.sh sqoop-env.sh

  9. 执行vim sqoop-env.sh 设置Sqoop的环境变量,Hadoop、Hive的目录根据实际目录修改。

    export HADOOP_COMMON_HOME=/opt/Bigdata/client/HDFS/hadoop
    export HADOOP_MAPRED_HOME=/opt/Bigdata/client/HDFS/hadoop
    export HIVE_HOME=/opt/Bigdata/MRS_1.9.X/install/FusionInsight-Hive-3.1.0/hive(请按照实际路径填写)
    export HIVE_CONF_DIR=/opt/Bigdata/client/Hive/config
    export HCAT_HOME=/opt/Bigdata/client/Hive/HCatalog
    图3 设置Sqoop的环境变量

  10. 编写Sqoop脚本 例如:

    /opt/Bigdata/FusionInsight_Current/1_19_SqoopClient/install/FusionInsight-Sqoop-1.4.7/bin/sqoop import 
    --connect jdbc:mysql://192.168.0.183:3306/test 
    --driver com.mysql.jdbc.Driver 
    --username 'root' 
    --password 'xxx' 
    --query "SELECT id, name  FROM tbtest WHERE \$CONDITIONS" 
    --hcatalog-database default 
    --hcatalog-table test 
    --num-mappers 1