当前位置: 首页 > news >正文

Spark集群中一个Worker启动失败的排错记录

文章目录

  • 1 检查失败节点worker启动日志
  • 2 检查正常节点worker启动日志
  • 3 查看正常节点spark环境配置
  • 4 又出现新的ERROR
    • 4.1 报错解释
    • 4.2 报错解决思路
    • 4.3 端口报错解决操作

集群下电停机后再次启动时,发现其中一台节点的worker启动失败。

1 检查失败节点worker启动日志

检查启动日志报以下错:

Spark Command: bin/java -cp /opt/hdSpace/spark/conf/:/opt/hdSpace/spark/jars/*:/opt/hdSpace/hadoop/etcihadoop/ -Dspark.deploy.recoveryode=Z00KEEPER -Dspark,deploy .zookeeper,url=hadoop01,hadoop02,hadoop03-Dspark.deploy.zookeeper.dir=/spark -Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval-86400
-Dspark.worker.cleanup.appDataTtl-259200 -Xmx1g org.apache. spark.deploy.worker,orker --webui-port 8081
spark://hadoop01:7077
======================================
/opt/hdSpace/spark/bin/spark-class: line 99: /opt/hdSpace/spark/bin/java: No such file or directory

根据/opt/hdSpace/spark/bin/java: No such file or directory,问题定位大致是目录的原因,涉及到jdk的目录,这里将jdk目录解析到了spark目录下,而spark/bin/java中根本没有jdk。

2 检查正常节点worker启动日志

于是找一台正常启动worker的节点查看日志:

Spark Command: /opt/java8/bin/java 

只看第一行的前半句日志,jdk目录的配置似乎出现了问题。
于是检查spark-env.sh
发现JAVA_HOME的配置写的是变量:

export JAVA_HOME=${JAVA_HOME}

于是echo一下:

# echo ${JAVA_HOME}
/opt/java8

看上去是没问题的,因为这里确实是jdk的目录。

此时,需要和其他节点的配置做一个对比,因为这套集群的spark并不是我安装的,spark配置文件的分发我不能保证正确。

3 查看正常节点spark环境配置

再次查看一台其他正常启动的workerspark-env.sh:

export JAVA_HOME=/opt/java8

这里写的是绝对路径,于是将失败节点也配置为了绝对路径,再次启动worker,该目录问题解决。

  • 经过对比检查,解决了jdk目录的问题。

4 又出现新的ERROR

INFO ExternalShuffleService:54 - Starting shuffle service on port 7337 (auth enabled = false)
ERROR Worker:91 - Failed to start external shuffle service
java.net.BindException: Address already in useat sun.nio.ch.NET.bind0...

4.1 报错解释

这是因为端口7337被占用了,端口 7337 在 Spark Cluster 模式中通常用于 Spark 的 Executor 进程之间进行通信。Executor 进程是 Spark 应用程序的工作单元,它们负责执行 Spark 任务,并将结果返回给 Driver 程序。Executor 之间需要进行数据交换和通信,而端口 7337 通常用于这些通信。当进行Shuffle操作(如reduceByKey或groupByKey)时,数据需要从不同的 Executor 之间传输,以进行数据重组。这也可能涉及到端口 7337。

4.2 报错解决思路

此时需要查看端口(例如 7337 端口)的网络连接,可以使用 netstat 命令或 ss 命令。

使用 netstat 命令:

netstat -tuln | grep 7337

上述命令将显示所有监听(-l)的UDP(-u)和TCP(-t)连接,然后使用 grep 过滤出包含 “7337” 的行,这些行表示占用了 7337 端口的连接。

使用 ss 命令:

ss -tuln | grep 7337

netstat 类似,这个命令也会列出占用 7337 端口的网络连接。

这将显示占用 7337 端口的网络连接的相关信息,包括本地地址、远程地址等。如果有进程正在使用这个端口,可以从相关的信息中找到它。

4.3 端口报错解决操作

[root@hadoop10 logs]# lsof -i:7337
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
java 24611 root IPv6 108223 0t0 TCP *:7337 (LISTEN)
[root@hadoop10 logs]# kill -9 24611
[root@hadoop10 logs]# ss -tuln  grep 7337
[root@hadoop10 logs]# jps
24448 DataNode
25089 HRegionServer
35141 Jps
34890 Worker

将占用端口kill掉后,重新启动spark节点,worker启动成功。

http://www.lryc.cn/news/206728.html

相关文章:

  • Mysql的JDBC知识点
  • git的实际操作
  • 数据结构零基础C语言版 严蔚敏-线性表、顺序表
  • Keil uVision 5 MDK版软件安装包下载及安装教程(最详细图文教程)
  • 单目3D目标检测[基于深度辅助篇]
  • Ubuntu20.04下安装MySQL8环境
  • html鼠标悬停图片放大
  • 基于hugging face的autogptq量化实践
  • MySQL2:MySQL中一条查询SQL是如何执行的?
  • C++入门01—从hello word!开始
  • Mingw下载---运行vscodeC++文件
  • 数据安全与PostgreSQL:最佳保护策略
  • 火山引擎实时、低延时拥塞控制算法的优化实践
  • adb设备调试常用命令
  • ubuntu下Docker的简单使用并利用主机显示
  • 第12章 PyTorch图像分割代码框架-1
  • 2023CSPJ 旅游巴士 —— dijkstra
  • 数据结构之栈的讲解(源代码+图解+习题)
  • 内网渗透-内网信息收集
  • ​LeetCode解法汇总2520. 统计能整除数字的位数
  • Lua语言编写爬虫程序
  • 安防监控项目---概要
  • 数仓经典面试题
  • 【ARM Coresight 系列文章 15.2 – components power domain 详细介绍】
  • Flutter Android IOS 获取通讯录联系人列表
  • Spring Boot集成SpringFox 3.0与Pageable参数处理
  • 2、基于pytorch lightning的fabric实现pytorch的多GPU训练和混合精度功能
  • python版opencv人脸训练与人脸识别
  • 计算机视觉-数学基础*变换域表示
  • 小程序如何设置自取规则