troubshooting-sqoop导出tidb表数据报com.mysql.jdbc.exceptions.jdbc4.communicationsexception:communicatio

     2022-04-01     200

关键词:

2019-11-22 17:15:27,705 FATAL [IPC Server handler 13 on 44844] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1574410493054_0011_m_000000_0 - exited : java.lang.RuntimeException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:170)

at org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:161)

at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)

at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)

at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)

at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)

at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)

at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at org.apache.sqoop.mapreduce.db.DBInputFormat.getConnection(DBInputFormat.java:223)

at org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:168)

... 10 more

 

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

原因分析

1、TiDB数据库连接驱动包(当前是用的 mysql数据库连接驱动包)版本与 CDH集群的 sqoop组件版本不兼容。

2、CDH集群中的单一节点可以访问 TiDB数据库,其它节点与 TiDB数据库主机网络不通(假如 CDH集群有5个节点,需要5个节点都可以与 mysql的主机网络互通)。

此次报错原因是第二点。

解决办法

1、更新兼容当前 TiDB数据库连接驱动包(当前是用的 mysql数据库连接驱动包)与 CDH集群的 sqoop组件版本的驱动包。

2、关闭 CDH集群节点访问 TiDB数据库主机的防火墙,使得 CDH集群主机任何节点都可以访问 TiDB数据库。

异常日志

2019-11-22 17:15:27,705 FATAL [IPC Server handler 13 on 44844] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1574410493054_0011_m_000000_0 - exited : java.lang.RuntimeException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:170)

at org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:161)

at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)

at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)

at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)

at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)

at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)

at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at org.apache.sqoop.mapreduce.db.DBInputFormat.getConnection(DBInputFormat.java:223)

at org.apache.sqoop.mapreduce.db.DBInputFormat.setDbConf(DBInputFormat.java:168)

... 10 more

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)

at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:348)

at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2391)

at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2428)

at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2213)

at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)

at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)

at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)

at java.sql.DriverManager.getConnection(DriverManager.java:664)

at java.sql.DriverManager.getConnection(DriverManager.java:247)

at org.apache.sqoop.mapreduce.db.DBConfiguration.getConnection(DBConfiguration.java:302)

at org.apache.sqoop.mapreduce.db.DBInputFormat.getConnection(DBInputFormat.java:216)

... 11 more

Caused by: java.net.ConnectException: Connection timed out (Connection timed out)

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

at java.net.Socket.connect(Socket.java:589)

at java.net.Socket.connect(Socket.java:538)

at java.net.Socket.<init>(Socket.java:434)

at java.net.Socket.<init>(Socket.java:244)

at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)

at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298)

... 27 more

技术图片

 

使用dumpling从tidb/mysql导出数据

安装tiupinstalldumpling所需要权限shellSELECTRELOADLOCKTABLESREPLICATIONCLIENTPROCESS基本参数-h|--host:连接的数据库主机的地址,默认127.0.0.1-p|--password:连接的数 查看详情

mysql使用mydumper导出,myloader恢复数据到tidb的问题

[root@localhostapp]#myloader-uroot-h192.168.120.20-P4000-p123456-Bdmp-d/home/app/device_info/-t16**(myloader:26416):CRITICAL**:Errorrestoringdmp.device_infofromfiledmp-init.device_info-schema.sql:Table'dmp.device_info'alreadyexists**(myloader:26416):CRITICAL**:Errorrestoringdmp.device_infofr... 查看详情

tidb-使用br工具进行数据热备份与恢复(代码片段)

...本使用。在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据是极为可读的sql文件,并且也可以将数据导入Mysql中,但是在买对大数据量下快速的全量备份的场... 查看详情

大数据大数据组件tidb原理+实战篇(代码片段)

文章目录1.TiDB引入1.1.数据库技术发展简史1.2.从MySQL到TiDB1.3.TiDB概述1.4.数据库种类简介2.TiDB架构特性2.1.TiDB整体架构2.2.TiDB核心特性2.3.存储和计算能力3.TiDB安装部署3.1.TiDB-Local单机版3.2.TiDB-Docker集群版4.TiDB实践案例4.1.TiDB-SQL操作4.2... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

tidb认证含金量

参考技术Atidb认证含金量高。目前TiDB主要有两个认证:PCTA:TiDB数据库专员PCTP:TiDB数据库专家 查看详情

tidb文档的网址

https://docs.pingcap.com/zh/tidb/stable 查看详情

tiup部署tidb数据库集群

...x版本)适用场景:利用本地Mac或者单机Linux环境快速部署TiDB测试集群,体验TiDB集群的基本架构,以及TiDB、TiKV、PD、监控等基础组件的运行。1、创建tidb用户组及用户[root@tidbhome]#groupaddtidb[root@tidbhome]#useraddtidb-r-m-gtidb2、关闭防火... 查看详情

tidb在微众银行核心批量场景的实践

...行资深数据库架构师黄蔚的分享整理而成,主要阐述TiDB在微众银行的应用实践,包括微众银行选择TiDB的背景和TiDB的部署架构,以及TiDB在贷款核心批量场景的应用,最后分享了基于TiDB优化方案的最佳实践和未来... 查看详情

tidb查询优化及调优系列tidb查询计划简介(代码片段)

「TiDB查询优化及调优」系列文章将通过一些具体的案例,向大家介绍TiDB查询及优化相关的原理和应用,在上一篇文章中我们简要介绍了TiDB查询优化器的优化流程。查询计划(executionplan)展现了数据库执行SQL语句... 查看详情

tidb孵化器项目发起,快来孵化你的技术理想

TiDB社区由开发者、用户和TiDB生态中的合作伙伴组成,致力于构建“面向未来的数据库”,以及打造TiDB的可持续发展生态。在整个社区的不断努力和帮助下,TiDB的生态也在不断发展,越来越多的开源项目成为TiDB大家庭的一员。... 查看详情

tidb整体架构

参考技术ATiDB整体架构可参考下图节点内部之间的通信通过gRPC完成。除了上面提到的几种类型的节点外,TiDB还提供了一些数据同步的工具。 查看详情

猿创征文|国产数据库实战之tidb数据库快速入门(代码片段)

猿创征文|国产数据库实战之TiDB数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装TiUP工具2.声明全局环境变量3.快速部署TiDB集群三、连接TiDB数据库1.新开一个session以访问T... 查看详情

tidb-tidb用户角色权限管理(代码片段)

一、TIDB中的权限我们都知道TIDB是兼容MySql的,对于TiDB的权限管理和MySql中的权限管理也是兼容的,所以说我们完全可以将MySQL中的那一套拿来到TIDB中,是完全适用的。另外TiDB将用户账户及角色存储在mysql.user系统表里... 查看详情

TiDB 是不是计划支持窗口函数?

】TiDB是不是计划支持窗口函数?【英文标题】:DoesTiDBplantosupportwindowfunctions?TiDB是否计划支持窗口函数?【发布时间】:2018-09-2115:50:57【问题描述】:TiDB是一个混合事务和分析数据库。对于分析查询,我发现我经常需要窗口函... 查看详情

tidb-tidb集群的扩容和缩容及tiup指令说明(代码片段)

一、TIUP工具简介前面介绍了使用TIUP搭建TIDB集群,本篇文章详细介绍下使用TIUP对集群进行扩容和缩容。在面对双十一这种流量突峰的场景,我们平常的TIDB集群有可能承受不住,因此需要提前进行扩容,例如增加ti... 查看详情