我尝试使用自定义构建的JVM部署Spark独立群集。运行Spark master和Spark worker进程很好,但是一旦驱动程序启动并将工作发送给master,工作程序就会崩溃,因为它试图通过查看JAVA_HOME / bin / java来分叉Executor。有没有办法自定义执行程序的启动方式,以便它使用自定义JVM?
答案 0 :(得分:0)
我发现最简单的方法是继承org.apache.spark.deploy.worker.Worker。我在Java中这样做,然后创建了一个只处理LaunchExecutor消息的PartialFunction;当我收到该消息时,我创建了另一个从ExecutorRunner继承的类的自定义实例。
在我的CustomExecutorRunner中,我构建了自己的特殊Java命令并执行该命令而不是让ExecutorRunner执行它。
它非常混乱,需要进行相当多的反思来访问私有字段,我需要让所有内容顺利运行,但它确实有效。