我是新来的火花。当我尝试在3个执行程序的客户端模式下运行spark-submit时,我希望在执行ps -ef
时显示3个java进程(因为有3个执行程序)
$SPARK_HOME/bin/spark-submit --num-executors 3 --class AverageCalculation --master local[1] /home/customer/SimpleETL/target/SimpleETL-0.1.jar hdfs://node1:9000/home/customer/SimpleETL/standard_input.csv
但是,我没有看到3个java进程。我不明白的是每个执行程序进程都是一个java进程。请指教。感谢。
答案 0 :(得分:3)
因为您使用local
模式(--master local[1]
),执行程序设置不适用。在这种情况下,spark只启动一个JVM来模拟所有组件,并将local
definition(1)中指定的线程数分配为执行程序线程。
在其他模式中,exectuors是单独的JVM实例。
答案 1 :(得分:0)
在Spark中,有主节点和工作节点。执行程序在自己的java进程中的工作节点上运行。
在--deploy-mode cluster
中,您可以添加{{1}},并查看执行程序是否在自己的JVM实例中的工作节点上运行。
您可以查看this answer以获取Apache Spark的详细工作流程。
答案 2 :(得分:0)
/home/spark/spark-2.2.1-bin-hadoop2.7/bin/spark-submit --class org.apache.spark.examples.SparkPi \
--num-executors 1000 \
--master yarn --deploy-mode cluster --driver-memory 4g --executor-memory 2g --executor-cores 1 \
--queue default /home/spark/spark-2.2.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.1.jar
〜 我执行了上面的命令。并检查了ps -ef | grep java。但我没有看到很多java进程。有没有简单的方法来识别执行者?
答案 3 :(得分:0)
每个执行程序都是一个java进程。每个执行者都包含一个jvm。
call(["vim", "-o"] + files)
java进程数与执行程序数相同。如果执行程序分布在工作节点上。需要检查相应工作节点的进程。我们可以从spark历史服务器Web UI获取有关执行程序及其启动位置的信息。