文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Sqoop/ 通过Sqoop迁移数据库数据时报错
更新时间:2024-05-28 GMT+08:00

通过Sqoop迁移数据库数据时报错

用户问题

  • MRS Sqoop迁移数据库数据报错如下:
    Communications link failure;
    The driver has not received any packets from the server;
  • 源端为DWS数据库时报错如下:
    got exception running sqoop .java.lang.Runtime.Exception, could not load db driver class。
图1 Sqoop迁移数据库数据报错
图2 源端为DWS时报错

问题分析

从上述两个报错分析,可能是驱动问题,服务端未正确加载JDBC驱动,或者是网络原因,由于Sqoop迁移数据过程,MapReduce任务是运行在分析core节点,因此需要保证正常加载驱动类的情况下,保证源端数据库和集群节点的网络正常通信。

处理步骤

  1. 检查源端数据库端口对集群节点均放通。

    若使用EIP公网通信,那么集群节点均需要绑定公网,尤其是分析节点,必须绑定公网才能保证作业正常运行。

    sqoop实例一般分布在Master节点,但作业真正运行在分析节点,因此创建数据库连接,是和Master节点通信,作业是通过Yarn任务分发到分析节点执行。

  2. 检查Sqoop实例安装目录下是否放置数据库驱动jar包,并保证jar包路径正确,文件权限及属主属组正确;配置文件正确配置;保证这些后需要重启Sqoop实例后才可以正常加载驱动。
    • MRS 3.X集群驱动路径为:/opt/Bigdata/FusionInsight_Current/1_xx_LoaderServer/install/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib/
    • MRS3.X之前版本集群驱动路径为:/opt/Bigdata/MRS_XXX/install/FusionInsight-Sqoop-1.99.7/FusionInsight-Sqoop-1.99.7/server/jdbc/

      3.x之前版本需要修改配置文件。

  3. 如果是命令行提交作业,建议指定--driver参数。

    如源端是DWS时命令行加:--driver com.xxx.gauss200.jdbc.Driver ,如下图。

    图3 源端是dws时driver参数

    其他数据库根据实际情况填写--driver参数。