原创,转载请注明出处 http://baishuo491.iteye.com/blog/1990242。作者邮箱 vc_java@hotmail.com
Spark的master启动后,等待work通过spark://master'ip:7077的url去连接Master.
在worker的回调函数preStart(Worker.scala)里面,调用了函数connectToMaster,这个函数完成了向Master节点注册work的工作。执行的方法是向master发送一个RegisterWorker消息
master ! RegisterWorker(workerId, host, port, cores, memory, webUi.boundPort.get, publicAddress)
再来看Master.scala
在这个类的recieve函数里,我们可以看到当Master收到RegisterWorker消息后如何处理
case RegisterWorker(id, host, workerPort, cores, memory, worker_webUiPort, publicAddress) => {
........
if (idToWorker.contains(id)) {
sender ! RegisterWorkerFailed("Duplicate worker ID")
} else {//如果idToWorker里面没有,成功注册
addWorker(id, host, workerPort, cores, memory, worker_webUiPort, publicAddress)
........
sender ! RegisteredWorker("http://" + masterPublicAddress + ":" + webUi.boundPort.get)
schedule()
}
}
如果idToWorker这个hashmap里面,已经存在了相同的id,给发出请求的worker,发送RegisterWorkerFailed消息。如果不存在相同的id,执行addWorker操作后,向发出消息的worker,发送RegisteredWorker消息。之后调用schedule函数,进行job的重新分配
再回到Worker.scala,看worker收到RegisteredWorker消息后的动作
case RegisteredWorker(url) =>
.......
context.system.scheduler.schedule(0 millis, HEARTBEAT_MILLIS millis) {
master ! Heartbeat(workerId)
}
很简单,就以HEARTBEAT_MILLIS (默认是15秒(15000毫秒) --System.getProperty("spark.worker.timeout", "60").toLong * 1000 / 4)为时间间隔,定期向master发送心跳,
而master 每隔WORKER_TIMEOUT(默认60秒(60000毫秒) val WORKER_TIMEOUT = System.getProperty("spark.worker.timeout", "60").toLong * 1000),检查一次超时。发送CheckForWorkerTimeOut消息给自己(也就是master),收到这个消息后,调用timeOutDeadWorkers清理超过WORKER_TIMEOUT时间间隔,仍未收到心跳的worker
- 大小: 55.9 KB
分享到:
相关推荐
支持Node.js环境的捆绑工人入门yarn add rollup-plugin-web-worker-loader --dev将插件添加到汇总配置中: import webWorkerLoader from 'rollup-plugin-web-worker-loader' ;export default { entry : 'src/index....
Docker Spark独立 概括 Spark 2.4.7独立docker映像 这是的Docker映像 要求 包裹 版本 python3 ...Attaching to spark-worker-1, spark-master spark-worker-1 | 2021-01-17 04:29:42,210 INFO work
Laravel开发-elegant-laravel-worker 在Laravel队列工作中优雅地处理sigterm信号的优雅方法
插件,允许非内联捆绑 web worker,允许在主入口点和 worker 之间进行代码拆分。设置使用您选择的包管理器安装它 : npm i -D vite-plugin-external-worker : pnpm i -D vite-plugin-external-worker yarn add -D ...
Laravel开发-laravel-elasticbeanstalk-queue-worker 将Laravel应用程序部署为AWS ElasticBeanstalk上的队列工作者
Laravel开发-laravel-event-worker Laravel事件工作人员
Laravel开发-laravel-event-worker .zip
前端开源库-web-worker-manager网络工人经理,工人经理
Laravel开发-laravel-aws-worker 运行laravel(或lumen)任务,并在AWS弹性Beanstack工作人员内部对侦听器进行排队
结合 Etcd 与 MongoDB 实现一个基于 Master-Worker 分布式 架构的 crontab 系统.zip
vue-cli-plugin-bundle-service-worker 使用 webpack 构建您的服务工作者。 主要用例是如果您的服务工作者导入/需要除工作箱库之外的模块。 需要使用workboxPluginMode === 'InjectManifest'安装和配置@vue/pwa...
在共享的Webworker中运行Socket.io,可以为多个浏览器窗口和选项卡共享一个Socket.io Websocket连接。 替换了socket.io客户端。 快速安装 npm i --save socketio-shared-webworker 原因 单个websocket连接效率更...
推动 Cordova Service Worker 使您的应用程序能够通过 Service Worker 接收和处理推送消息。 该插件建立在现有流行的之上,... cordova plugin add cordova-plugin-service-worker-push 卸载这个插件 cordova plugin
通过运行以下命令启动spark-master守护程序: $ sudo service spark-master start 通过运行以下命令来启动spark-worker守护程序: $ sudo service spark-worker start 运行Spark作业: $ spark-submit --class ...
# hadoop 192.168.1.151 name-node 192.168.1.155 data-node-sa 192.168.1.156 data-node-sb 192.168.1.157 data-node-sc spark conf/slaves worker-sa worker-sb worker-sc 待补充 。。。 hadoop etc/hadoop/...
Master-Worker模式的并行关联规则挖掘算法,苗锡奎,,随着信息技术迅速发展,数据库的规模不断扩大,从而产生了大量的数据。如果使用传统的数据挖掘技术从这庞大的数据中挖掘出有价值
webworker封装调用face-api.js
一个小型的高性能库,用于使用Promises与Web Worker或Service Worker进行通信。 向工作人员发布消息,获取消息。 目标: 微小的占用空间(最小+700字节左右+ gz) 假设您有一个单独的worker.js文件(更易于调试...
java连接sqoop源码 Docker 上的火花 这是一个关于如何使用 Docker 使用 Apache Spark 设置可扩展集群的示例教程。 目前,这个项目可以可靠地支持多达 3 个 worker,超过这个集群有点不稳定,即 worker 成功创建并...
smake : 不带参数调用以查看用法典型示例: /smake --stop --compile --master --clear-workers --worker ensipc77 --worker ensipc78 --start --run Makefile bench.sh : 启动smake并检索执行时间 需要修改代码以...