【问题标题】:How to run spark interactively in cluster mode如何在集群模式下交互式运行 spark
【发布时间】:2015-04-22 06:26:21
【问题描述】:

我有一个 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 文件中然后将作业提交给 spark 来运行?

谢谢

【问题讨论】:

  • 你试过了吗:/bin/spark-shell --master yarn-cluster --driver-memory 7g --executor-memory 7g
  • @ipoteka 我已经尝试过你的建议。没什么区别。在交互模式下似乎无法配置内存
  • 听起来你没有在你的主人那里注册任何工人。您的 master 和 spark-shell master 设置也有上面列出的不同 URL,但这可能是一个错字。
  • @Paul 我的问题确实是因为工人没有注册。工人未注册的原因是因为配置错误的conf/slavesconf/spark-default.conf。谢谢你的建议!

标签: scala apache-spark


【解决方案1】:

请使用 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 您可以提供工作器内存,而并行性将有助于集群上运行的并行任务数量。

你在 ../spark/conf 中有 slaves 文件,你需要把 slaves 的 ips 放在这里。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多