как всем известно, сердцебиение - это сигнал, отправляемый периодически для указания нормальной работы узла или синхронизации с другими частями системы
в нашей системе у нас есть 5 рабочих машин, в то время как на 3 из них выполняется
наша система включает в себя 5 машин данных (рабочих) и 3 главных машины, версия hadoop 2.6.4, все машины имеют версию 7.x
.
и установочный сервер на первом компьютере master1 (а драйвер в master1)
В Spark пульсами являются сообщения, отправленные исполнителями (с рабочих машин) водителю (машина master1), сообщение представлено классом случая org.apache.spark.Heartbeat
Затем сообщение получает драйвер с помощью метода org.apache.spark.HeartbeatReceiver # receiveAndReply (context: RpcCallContext). Водитель:
основное назначение пульса состоит в проверке, жив ли данный узел (от рабочей машины до машины master1)
Драйвер проверяет его через фиксированный интервал (определенный в записи spark.network.timeoutInterval), отправляя сообщение ExpireDeadHosts себе. Когда сообщение обрабатывается, драйвер проверяет исполнителей без последних тактов.
до сих пор я объясняю концепцию
Мы замечаем, что сообщения, отправленные исполнителем, не могут быть доставлены водителю, и из журналов пряжи мы можем увидеть это предупреждение
WARN executor.Executor: Issue communicating with driver in heartbeater
Мой вопрос - что может быть причиной того, что водитель (машина master1) не получает сердцебиение от рабочих машин