Spark 启动集群 Master 正常启动 Worker 不启动

2023-11-17

在学习spark过程中遇到的问题,做下记录,这个问题网上出现的不再少数,出现问题的原因也是各不相同,并且没有一个人的问题和我完全一样(我高兴得都快哭了),顺着大家的思路,尝试了两个多小时才搞明白。

问题的根源大多都在于 hostname 的配置与映射

环境前置说明(三台虚拟机模拟):

  • 系统:CentOS Linux release 7.5.1804 (Core)
  • host
    • hadoop102 192.168.20.102 Master Worker
    • hadoop103 192.168.20.103 Worker
    • hadoop104 192.168.20.104 Worker
  • jdk1.8
  • spark-3.0.0-bin-hadoop3.2 - standalone 集群

    sbin/start-all.sh 后,输入 jps 查看进程,并没有问题,都有worker进程在里面(事实上过了一段时间后再看,slave节点的worker进程也都关闭了)
[root@hadoop102 spark-standalone]# jpsall
=============== hadoop102 ===============
2273 Worker
2363 Jps
2206 Master
=============== hadoop103 ===============
1768 Worker
1864 Jps
=============== hadoop104 ===============
1765 Worker
1870 Jps

# 过一段时间后再查看
[root@hadoop102 spark-standalone]# jpsall
=============== hadoop102 ===============
2930 Master
2995 Worker
3286 Jps
=============== hadoop103 ===============
3211 Jps
=============== hadoop104 ===============
3194 Jps

但是打开 8080 web界面却只能看到一个worker,如图,根据 Address 也可以看到这是master主机上的worker
在这里插入图片描述

到slave1,slave2主机上查看worker的启动日志,日志位于$SPARK_HOME/logs,日志非常长,但有用的就这一句

Failed to connect to master hadoop102:7077

首先,确认是不是Master的7077端口能否连接呢?下载nmap工具(yum install nmap),在Slave主机用如下命令测试:

[root@hadoop103 logs]# nmap -p 7077 hadoop102

Starting Nmap 6.40 ( http://nmap.org ) at 2021-08-08 09:58 CST
Nmap scan report for hadoop102 (192.168.20.102)
Host is up (0.0011s latency).
PORT     STATE  SERVICE
7077/tcp closed unknown
MAC Address: 00:0C:29:93:10:89 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
You have new mail in /var/spool/mail/root

[root@hadoop103 ~]# nmap -p 8080 hadoop102

Starting Nmap 6.40 ( http://nmap.org ) at 2021-08-08 10:20 CST
Nmap scan report for hadoop102 (192.168.20.102)
Host is up (0.0028s latency).
PORT     STATE SERVICE
8080/tcp open  http-proxy
MAC Address: 00:0C:29:93:10:89 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

7077不能连接,8080能连接,我确认hadoop102的防火墙已关闭,于是考虑是否7077端口未开放?在Master主机输入 netstat -ntlp

[root@hadoop102 spark-standalone]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      662/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1271/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      905/sshd            
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      903/cupsd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1098/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1637/sshd: root@pts 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      1685/sshd: root@pts 
tcp6       0      0 127.0.0.1:7077          :::*                    LISTEN      2930/java           
tcp6       0      0 192.168.20.102:32812    :::*                    LISTEN      2995/java           
tcp6       0      0 :::111                  :::*                    LISTEN      662/rpcbind         
tcp6       0      0 :::8080                 :::*                    LISTEN      2930/java           
tcp6       0      0 :::8081                 :::*                    LISTEN      2995/java           
tcp6       0      0 :::22                   :::*                    LISTEN      905/sshd            
tcp6       0      0 ::1:631                 :::*                    LISTEN      903/cupsd           
tcp6       0      0 ::1:6010                :::*                    LISTEN      1637/sshd: root@pts 
tcp6       0      0 ::1:6011                :::*                    LISTEN      1685/sshd: root@pts 

发现 7077 和 8080 端口的 ip 部分不同,现在只需要去找 127.0.0.1:7077 这个玩意是怎么出来的?

具体原因暂时没时间去深究,猜测在 127.0.0.1 上端口只对本机开发(参考 https://blog.csdn.net/xifeijian/article/details/12879395

查看 sbin/start-all.sh 脚本

[root@hadoop102 spark-standalone]# cat sbin/start-all.sh 
#!/usr/bin/env bash
# Starts a worker on each node specified in conf/slaves

if [ -z "${SPARK_HOME}" ]; then
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

# Load the Spark configuration
. "${SPARK_HOME}/sbin/spark-config.sh"

# Start Master
"${SPARK_HOME}/sbin"/start-master.sh

# Start Workers
"${SPARK_HOME}/sbin"/start-slaves.sh

继续看 start-slaves.sh 脚本

[root@hadoop102 spark-standalone]# cat sbin/start-slaves.sh 
#!/usr/bin/env bash
# Starts a slave instance on each machine specified in the conf/slaves file.

if [ -z "${SPARK_HOME}" ]; then
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

. "${SPARK_HOME}/sbin/spark-config.sh"
. "${SPARK_HOME}/bin/load-spark-env.sh"

# Find the port number for the master
if [ "$SPARK_MASTER_PORT" = "" ]; then
  SPARK_MASTER_PORT=7077
fi

if [ "$SPARK_MASTER_HOST" = "" ]; then
  case `uname` in
      (SunOS)
	  SPARK_MASTER_HOST="`/usr/sbin/check-hostname | awk '{print $NF}'`"
	  ;;
      (*)
	  SPARK_MASTER_HOST="`hostname -f`"
	  ;;
  esac
fi

# Launch the slaves
"${SPARK_HOME}/sbin/slaves.sh" cd "${SPARK_HOME}" \; "${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT"

重点看最后一行中

"${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT"

SPARK_MASTER_HOST,SPARK_MASTER_PORT,这两个值在 con/spark-env.sh 进行了配置(如果没有自己配置,就是前两个 if 中所赋的默认值,检查本机的 hostsname 配置是否有问题 https://www.lmlphp.com/user/552/article/item/371036

[root@hadoop102 spark-standalone]# cat conf/spark-env.sh 
#!/usr/bin/env bash

export JAVA_HOME=/opt/module/jdk1.8.0_212
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077

hadoop102 在 etc/hosts 做了映射

[root@hadoop102 spark-standalone]# cat /etc/hosts127.0.0.1   localhost hadoop102:1         localhost192.168.20.100 hadoop100192.168.20.101 hadoop101192.168.20.103 hadoop103192.168.20.104 hadoop104192.168.20.105 hadoop105192.168.20.106 hadoop106192.168.20.107 hadoop107192.168.20.108 hadoop108

于是破案了。。。在之前测试 spark-local 模式时,因为一个 bug,把 hadoop102 指向了 127.0.0.1 ,忘记改回来了。

两个解决办法,要么 etc/hosts 把 hadoop102 指向局域网 ip 192.168.20.102,要么 spark-env.sh 把 SPARK_MASTER_HOST 指向局域网 ip 192.168.20.102,改过来后,一切正常
在这里插入图片描述
本次问题根本原因:由于个人原因不得不在对于 linux 和 shell 等基础知识并不熟悉的情况下去学习Spark框架引发的问题,急于求成,适得其反

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 启动集群 Master 正常启动 Worker 不启动 的相关文章

  • 在钉钉上怎么手写_大庆市第十中学

    有关直播的那些事儿 2020 停课不停学 十中在行动 根据大庆市教育局关于网络教学工作的要求和指导意见 我校将于3月2日全面开展网络教学工作 虽然网络直播教学与线下日常教学主旨都是一样的 但由于形式的差异 对于很少体验过网络直播教学的老师来
  • 红米ac2100 刷openwrt以及刷回记录

    redmiac2100 刷机 参考 手动升级漏洞固件 https wwx lanzoux com i6iqxhqp98f 或者百度网盘链接 https pan baidu com s 1H355Ym9p TLrVOux2w2b7Q 提取码
  • Flutter开发之——Icon图标

    一 概述 Icon是支持material design的一系列图标 Icon类似于iconfont即字体图标 它是将图标做成字体文件 然后通过指定不同的字符显示不同图片 二 Icon说明 2 1 说明 在字体文件中 每一个字符都对应一个位码
  • Android内存管理

    Android内存泄露 全解析和处理办法 http www jianshu com p bf159a9c391a
  • 产品运行所需的信息检索失败。请重新安装xshell

    产品运行所需的信息检索失败 请重新安装xshell 很久没有应用Xshell进行远程服务器连接了 由于需要应用远程云计算资源 因此有需要使用这个软件 但是在今天的使用过程中出现了 问题 打开Xshell之后 找到可执行文件之后 点击运行 管
  • 【CQOI 2015】任务查询系统

    题目 传送门 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统 而你被安排完成其中的查询部分 超级计算机中的任务用三元组 Si Ei Pi 描述 Si Ei Pi 表示任务从第 Si 秒开始 在第 Ei 秒后结束 第 Si
  • 电脑开不了机启动不了

    故障现象 解决办法 1 先不要操作别的 首先想想开机之前做过什么操作 更新过什么 补丁 漏洞 软件 还是别的等等 2 重启操作系统 在开机的时候不停地按F8键 如果不停地按之后出现了一个黑底白字的菜单 可以最后一次配置试试 不行可以进入系统
  • 服务器CPU经常跑高是什么原因

    服务器在使用过程中 经常会遇见这样的情况 在长时间使用之后 系统运行会越来越慢 卡的情况 查询后台进程 CPU占用以超过90 那么高的CPU使用率 都是会由哪些因素导致的呢 1 散热故障 如机房散热不足 温度过热或者驱动故障 导致温度太高
  • html新闻滚动效果,js实现滚动新闻效果

    code js cn a display block font size 15px line height 18px text decoration none color 333 font family Arial font size 12
  • 机器学习-泛化能力笔记

    1 什么是泛化能力 在机器学习方法中 泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力 在实际情况中 我们通常通过测试误差来评价学习方法的泛化能力 2 泛化误差的定义 大家马上应该发现 这个不是损失函数的期望吗 没错 泛化误差就是所学
  • C++多线程(七):unique_lock详解

    目录 unique lock取代lock guard unique lock的第二个参数 std adopt lock std try to lock std defer lock unique lock的成员函数 成员函数lock 成员函
  • 多线程(十):总结

    本章用来处理一下之前遗漏的很多问题 在多线程那一章 很多常见面试题都没有讲 这里再来补充一下 HashTable HashMap ConcurrentHashMap 之间的区别 HashTable HashMap ConcurrentHas
  • BurpSuite武器库打造之环境搭建和API介绍(上)

    0x00前言 在使用Burp Suite 以下简称Burp 来开展渗透工作的途中可能需要验证一些脑洞大开的想法 但Burp自带的功能可能无法满足你的需求 于是你迫切需要一个高度定制化的插件来实现这个功能 经查阅你得知除了Java还可以通过配
  • 无法清空剪切板,另一程序正在使用剪切板,无法复制东西了

    这种情况一般都是因为 有道或者其他翻译软件在你复制过程中不断把东西添加到剪切板中导致你无法继续添加新的东西到剪切板中 策略 关闭有道词典 在设置中将复制查词 取消即可
  • DBeaver连接MySQL提示“Public Key Retrieval is not allowed”的解决办法

    一 问题描述 一段时间没使用DBeaver 再次打开DBeaver连接MySQL提示 Public Key Retrieval is not allowed Public Key Retrieval is not allowed 不允许进行
  • HIVE简单介绍和了解

    用于解决海量日志数据的分析 hive是基于Hadoop的一个数据仓库工具 可以将结构化的数据文件映射为一张数据库表 并提供完整的sql查询功能 可以将sql语句转换为MapReduce任务进行运行 其优点是学习成本低 可以通过类SQL语句快
  • Linux开发工程师是吃青春饭的吗?

    Linux开发工程师怎么样 都说程序员是吃青春饭 Linux开发工作35岁之后还能做吗 坦白说 如果程序员在35岁的时候 工作经验 与刚毕业的时候差别不大 则其不可替代性就不高 很难在大龄时具备足够竞争力 大龄程序员 跟应该以专业洞识 理解

随机推荐

  • InterBase 6.5的新特性 (转)

    InterBase 6 5的新特性 转 more InterBase 6 5的新特性XML namespace prefix o ns urn schemas microsoft com Office office gt 作者 Bill T
  • Luat 功能开发教程(十四) 延时和定时器

    目录 延时和定时器 简介 API说明 实现流程 创建 消亡 自动消亡 手动消亡 判断定时器状态 知识拓展 示例 常见问题 相关资料以及购买链接 延时和定时器 简介 在luat脚本程序中 往往需要用到延时和等待等逻辑功能 例如 你想得到每隔3
  • 【el-time-picker设置默认值】Cannot read properties of undefined (reading ‘hour‘)

    需求 设置默认时间为2 0 0的时间选择器 产生报错的写法
  • 必填校验设置‘change‘, ‘blur‘同时起作用

    必填校验设置 change blur 同时起作用 rules seaAreaName required true message 请输入海区 trigger change blur
  • 华为机试-第二题

    查找知识图谱中的实例知识 知识图谱是一种结构化的语义网络 用于描述物理世界中的概念及其实例的相关关系 可以把知识图谱看成是一种有向图 图中的点是概念或实例 图中的边是概念及其实例的相关关系 现定义一种简单的知识图谱 概念 包括父概念及其子概
  • bootstrap jquery dataTable 异步ajax刷新表格数据

    异步请求 var postData env name new env name env url new env url env desc new env desc ajax type POST url test env add data p
  • Interactive Natural Language Processing

    本文是对 Interactive Natural Language Processing 的翻译 交互式自然语言处理 摘要 1 引言 2 交互式对象 2 1 人在环 2 2 KB在环 2 3 模型或工具在环 2 4 环境在环 3 交互界面
  • Oracle数据块概念及与行之间的关系测试

    数据块 Oracle Data Blocks 是Oracle最小的存储单位 Oracle数据存放在 块 中 一个块占用一定的磁盘空间 这里的 块 是Oracle的 数据块 不是操作系统的 块 操作系统的块通常为512k Oracle每次请求
  • openwrt 应用程序 开机自启动

    这几介绍一下openwrt 应用程序包开机自启动的两种方法 使用的平台是MTK7688开发板 首先写一个以及可以跑起来的工程 这里对工程就不做展开 以helloworld工程为例 helloworld工程写在 openwrt package
  • Python bs4怎么安装?

    bs4是BeautifulSoup4的简称 它是一个可以从HTML中提取数据的Python第三方库 具体来讲 bs4可以从茫茫的HTML代码中准确查找出你想要的内容 甚至一个小小的字符串 听起来是不是感觉bs4很厉害的样子 那么 Pytho
  • 预测模型的评价指标Matlab

    一般情况下 所要预测的数据分为连续型数据和离散性数据 连续型数据比如成绩分数 时间序列等 离散性数据通常为划分的分类标签 针对不同的数据类型 衡量模型的准确程度采用不同指标 如比较一些算法的准确率 若预测的数据为离散型 则算法的准确性自然容
  • 【综合转贴】CSS “点 ”“井号”的含义and ID class区别.

    body font family Arial sans serif color 333333 line height 1 166 margin 0px padding 0px masthead margin 0 padding 10px 0
  • 【3月比赛合集】45场可报名的数据挖掘奖金赛,任君挑选!

    CompHub 实时聚合多平台的数据类 Kaggle 天池 和OJ类 Leetcode 牛客 比赛 本账号同时会推送最新的比赛消息 欢迎关注 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考 以比赛官网为准 目录
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • 【易售小程序项目】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】

    文章目录 界面效果 界面实现 工具js 页面 首页 让文字只显示两行 路由跳转传递对象 将商品分为两列显示 使用中划线划掉原价 后端 商品 controller service mapper sql 同项目其他文章 界面效果 说明 界面中商
  • Docker容器中如何运行一个带GUI的app?

    问 How can you run GUI apps in a docker container Are there any images that set up vncserver or something so that you can
  • 图像处理之-----插值算法

    插值算法是图像处理中最基本的算法 首先我们先了解一下什么是插值算法 以及插值算法在图像处理过程中的应用 1 什么是插值 Interpolation is a method of constructing new data points wi
  • Redis 密码设置和查看密码

    Redis 密码设置和查看密码 redis没有实现访问控制这个功能 但是它提供了一个轻量级的认证方式 可以编辑redis conf配置来启用认证 1 初始化Redis密码 在配置文件中有个参数 requirepass 这个就是配置redis
  • Python软件开发之需求实现:数据结构、数据类型。自动化软件测试必会

    一 有这样的一个需求 判断学生成绩是否及格 二 拿到这样的一个需求如何进行需求分析呢 做为测试人员 我们只有明确需求后 才不容易漏测 需求分析阶段 一 看到这样的一句话之后我们有几个问题需求和产品经理确认的 1 什么样的算及格 60 70分
  • Spark 启动集群 Master 正常启动 Worker 不启动

    在学习spark过程中遇到的问题 做下记录 这个问题网上出现的不再少数 出现问题的原因也是各不相同 并且没有一个人的问题和我完全一样 我高兴得都快哭了 顺着大家的思路 尝试了两个多小时才搞明白 问题的根源大多都在于 hostname 的配置