【解决】hive on yarn 任务启动失败:JDWP Transport dt_socket failed to initialize,TRANSPORT_INIT(510)

一. 问题描述

启动hive任务会偶发性的出现,如下截图报错:
在这里插入图片描述
描述比较清楚:

ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]

因为端口被占用,导致JDWP初始化失败。

 

二. 问题分析

1. 根本原因

什么是JDWP,JDWP 是 Java Debug Wire Protocol(Java调试线协议)的缩写。它是一种用于远程调试 Java 程序的协议,允许开发人员连接调试器与正在运行的 Java 虚拟机(JVM)进行通信和交互。

对于hadoop中,yarn-site.xml 中配置了:

    <property>
        <name>yarn.app.mapreduce.am.command-opts</name>
        <value> -Xdebug -Xrunjdwp:transport=dt_socket,address=5001,server=y,suspend=n</value>
    </property>

yarn.app.mapreduce.am.command-opts:表示MR AppMaster的启动参数,其中-Xdebug -Xrunjdwp:transport=dt_socket,address=5001,server=y,suspend=n 表示:

启用 JVM 的调试支持,并通过套接字传输方式,在指定的端口(5001)上作为调试服务器等待调试器的连接。JVM 在启动时不会暂停,而是立即开始执行。

也就是说启动AppMaster时,会找一个指定端口(这里是5001)作为调试服务器,用于等待调试器的连接。
而上面的报错是因为调试器端口被占用导致 JDWP初始化失败,进而使整个hive任务还没运行就挂掉。

这就是任务挂掉的根本原因
 

2. 偶发性的原因

我们搭建3个运行节点的hadoop高可用集群,当任务较少时,提到集群上的任务不会报错,当同时提几个任务时会出现某些任务,debug端口被占用的情况。

这个情况很好分析,因为是hive on yarn,每提交一个hive任务都会启动一个appMaster,而每个appMaster都会开启一个debug端口,当多个hive任务都提交到同一个节点时,就会出现同一个运行节点启动了多个相同的debug接口,导致端口冲突,任务挂掉。

 

三. 问题解决

解决方式比较明确,就是去掉appMaster的debug功能,这个是在hadoop的yarn-site.xml以及hive引用的hadoop配置(yarn-site.xml)。

  1. 注释掉hadoop集群中yarn-site.xml上述配置,并重启集群,或动态刷新集群配置
  2. 注释掉hive中引用的hadoop配置(yarn-site.xml),因为是hive on yarn所以不需重启,配置将在下一次提交任务生效。

 

hadoop动态刷新配置(未生效)ing:

1、动态刷新hdfs配置
如果是HA集群则在两个namenode节点上执行

hdfs dfsadmin  hdfs://nn1:9000 -refreshSuperUserGroupsConfiguration
hdfs dfsadmin  hdfs://nn2:9000 -refreshSuperUserGroupsConfiguration
  

2、动态刷新yarn配置
如果是HA集群则在两个namenode节点上执行

yarn rmadmin  hdfs://nn1:9000 -refreshSuperUserGroupsConfiguration
yarn rmadmin  hdfs://nn2:9000 -refreshSuperUserGroupsConfiguration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值