- 我有一个远程 Ubuntu 服务器 linode.com具有 4 核和 8G RAM
- 我的远程 Ubuntu 服务器上有一个由 1 个主服务器和 1 个从服务器组成的 Spark-2 集群。
我已在 MacBook 上本地启动 PySpark shell,通过以下方式连接到远程服务器上的主节点:
$ PYSPARK_PYTHON=python3 /vagrant/spark-2.0.0-bin-hadoop2.7/bin/pyspark --master spark://[server-ip]:7077
我尝试从网站执行简单的 Spark 示例:
from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark SQL basic example") \ .config("spark.some.config.option", "some-value") \ .getOrCreate() df = spark.read.json("/path/to/spark-2.0.0-bin-hadoop2.7/examples/src/main/resources/people.json")
我遇到错误
Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
我的服务器和本地计算机上都有足够的内存,但我一次又一次地收到这个奇怪的错误。我的 Spark 集群有 6G,我的脚本仅使用 4 个核心,每个节点有 1G 内存。
[
我在 Google 上搜索了此错误,并尝试设置不同的内存配置,还禁用了两台计算机上的防火墙,但这对我没有帮助。我不知道如何解决它。
有人遇到同样的问题吗?有什么想法吗?
最佳答案
您正在客户端模式下提交申请。这意味着驱动程序进程已在您的本地计算机上启动。
执行 Spark 应用程序时,所有机器都必须能够相互通信。执行程序很可能无法访问您的驱动程序进程(例如,它使用私有(private) IP 或隐藏在防火墙后面)。如果是这种情况,您可以通过检查执行程序日志来确认(转到应用程序,选择状态为 EXITED
的工作人员并检查 stderr
。您“应该”看到该执行器由于 org.apache.spark.rpc.RpcTimeoutException
而失败。
有两种可能的解决方案:
- 从您的集群可访问的计算机提交申请。
- 以集群模式提交申请。这将使用集群资源来启动驱动程序进程,因此您必须考虑到这一点。
关于apache-spark - 在集群 : Initial job has not accepted any resources 上运行 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949017/