2

众所周知,心跳是周期性发送的信号,用于指示节点正常运行或与系统的其他部分同步

在我们的系统中,我们有 5 台工作机器,而执行在其中 3 台上运行

我们的系统包括5台datanodes机器(workers)和3台master机器,hadoop版本是2.6.4,所有机器都是redhat机器版本7.x

和节俭服务器安装在第一台 master1 机器上(驱动程序在 master1 中)

在 Spark 中,心跳是执行程序(从工作机器)发送到驱动程序的消息。(master1 机器)消息由案例类 org.apache.spark.Heartbeat 表示

然后驱动程序通过 org.apache.spark.HeartbeatReceiver#receiveAndReply(context: RpcCallContext) 方法接收消息。司机:

heartbeats 的主要目的在于检查给定节点是否还活着(从 worker 机器到 master1 机器)

驱动程序通过向自身发送 ExpireDeadHosts 消息以固定时间间隔(在 spark.network.timeoutInterval 条目中定义)对其进行验证。处理消息后,驱动程序会检查最近没有心跳的执行程序。

直到现在我解释了这个概念

我们注意到 executor 发送的消息无法传递给驱动程序,并且从 yarn 日志中我们可以看到该警告

WARN executor.Executor: Issue communicating with driver in heartbeater

我的问题是 - 驱动程序(master1 机器)没有从工人机器获得心跳的原因可能是什么?

4

0 回答 0