如何在群集模式下以交互方式运行spark

use*_*759 7 scala apache-spark

我有一个运行的火花丛

spark://host1:7077
spark://host2:7077
spark://host3:7077
Run Code Online (Sandbox Code Playgroud)

和连接/bin/spark-shell --master spark://host1:7077 当尝试读取文件时:

val textFile = sc.textFile("README.md")
textFile.count()
Run Code Online (Sandbox Code Playgroud)

提示说

WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

通过Web ui检查时host1:8080,显示:

Workers: 0
Cores: 0 Total, 0 Used
Memory: 0.0 B Total, 0.0 B Used
Applications: 0 Running, 2 Completed
Drivers: 0 Running, 0 Completed
Status: ALIVE
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在spark-shell集群模式下运行时指定内核和内存?或者我必须通过将我的scala代码打包到.jar文件中然后将作业提交给spark?

谢谢

San*_*ane 3

请使用 jar 打包您的代码并在您的代码中使用它

    String[] jars = new String[] { sparkJobJar };
    sparkConf.setMaster("masterip");

    sparkConf.set("spark.executor.memory", sparkWorkerMemory);

    sparkConf.set("spark.default.parallelism", sparkParallelism);
    JavaSparkContext ctx = new JavaSparkContext(sparkConf);
Run Code Online (Sandbox Code Playgroud)

使用spark.executor.memory,您可以提供工作内存,并行性将有助于集群上运行的并行任务的数量。

你在 ../spark/conf 中有从属文件,你需要把从属的 ip 放在这里。

请在主节点 /spark/sbin/start-master.sh 上启动 master

请在从属节点上启动从属 /spark/sbin/start-slaves.sh