我有一个运行的 Spark 集群
spark://host1:7077
spark://host2:7077
spark://host3:7077
并通过
/bin/spark-shell --master spark://host1:7077
连接尝试读取文件时:
val textFile = sc.textFile("README.md")
textFile.count()
提示说
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
在
host1:8080
通过 Web ui 检查时表明: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
我的问题是在 spark-shell 集群模式下运行时如何指定内核和内存?或者我必须通过将我的 Scala 代码打包成
.jar
来运行文件然后提交作业来激发?谢谢
最佳答案
请使用 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);
使用 spark.executor.memory 您可以提供工作内存,Parallelism 将有助于在集群上运行的并行任务数量。
您在 ../spark/conf 中有 slaves 文件,您需要将来自 slaves 的 ips 放在这里。
请在主节点/spark/sbin/start-master.sh 上启动 master
请在从节点上启动从节点/spark/sbin/start-slaves.sh
关于scala - 如何在集群模式下以交互方式运行 spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789382/