【发布时间】:2016-05-27 06:16:35
【问题描述】:
我正在尝试使用自定义构建的 JVM 部署 Spark 独立集群。运行 Spark master 和 Spark worker 进程很好,但是一旦驱动程序启动并将工作发送给 master,worker 就会崩溃,因为它试图通过查看 JAVA_HOME/bin/java 来分叉一个 Executor。有没有办法自定义执行器的启动方式,以便它使用自定义的 JVM?
【问题讨论】:
标签: java apache-spark
我正在尝试使用自定义构建的 JVM 部署 Spark 独立集群。运行 Spark master 和 Spark worker 进程很好,但是一旦驱动程序启动并将工作发送给 master,worker 就会崩溃,因为它试图通过查看 JAVA_HOME/bin/java 来分叉一个 Executor。有没有办法自定义执行器的启动方式,以便它使用自定义的 JVM?
【问题讨论】:
标签: java apache-spark
我发现最简单的方法是继承 org.apache.spark.deploy.worker.Worker。我在 Java 中做到了,然后创建了一个仅处理 LaunchExecutor 消息的 PartialFunction;当我收到该消息时,我创建了从 ExecutorRunner 继承的类的另一个自定义实例。
在我的 CustomExecutorRunner 中,我构建了自己的特殊 Java 命令并执行了该命令,而不是让 ExecutorRunner 来执行。
这很混乱,需要相当多的反思才能访问我需要让一切顺利运行的私有字段,但它确实有效。
【讨论】: