Spark 2:检查节点是主节点还是工作节点
我有一个使用grpc的Spark 2应用程序,以便客户端应用程序可以连接到它。Spark 2:检查节点是主节点还是工作节点
但是,我希望grpc代码只能在主节点上启动,而不能在worker上启动。
在Spark 2中是否有可能检查代码当前正在运行的节点是否是主节点?
你可以从驱动程序的主机名:
sc.getConf.get(“spark.driver.host”)
所以检查:'java.net.InetAddress.getLocalHost()。getHostName()== mainContext.sc.getConf.get(“spark.driver.host”)'应该让我做检查我猜 – navige
而不是检查平等,请参阅http://stackoverflow.com/questions/2406341/how-to-check-if-an-ip-address-is-the-local-host-on-a-multi-homed-system – navige
我不知道如果你以本地模式或纱线集群运行你的代码,你的执行者可以在与你的驱动程序相同的位置登陆。 – BiS
我不喜欢使用“主机”来做到这一点,那么需要依靠选配合适的接口,还,同一节点可以同时包含驱动程序和主人。就个人而言,我设置变量环境
spark.executorEnv.RUNNING_ON_EXECUTOR=yes
,然后在我的代码(这里使用Python,但它应该在任何其他语言工作):
import os
if "RUNNING_ON_EXECUTOR" in os.environ:
//Run executor code
else:
//run driver code
你说的是*,其中司机跑了*从? –
是的!我想检查运行的代码是否作为驱动程序的一部分运行。 – navige