我无法从jupyter笔记本远程连接到火花星团。它在当地工作正常。
方法1:
conf = pyspark.SparkConf().setAppName('Pi').setMaster('spark://my-cluster:7077')
sc = pyspark.SparkContext(conf=conf)
这会成功返回。当我然后尝试运行Pi示例
partitions = 3
n = 1000 * partitions
def f(_):
x = random() * 2 - 1
y = random() * 2 - 1
return 1 if x ** 2 + y ** 2 <= 1 else 0
count = sc.parallelize(range(1, n + 1), partitions).map(f).reduce(add)
print("Pi is roughly %f" % (4.0 * count / n))
它只是在控制台中继续运行错误:
warn taskschedulerimpl: initial job has not accepted any resources; check your cluster ui to ensure that workers are registered and have sufficient resources
在集群ui中,作业被设置为“正在运行”并且工作人员仍然活着,但似乎实际上没有工作。
Worker Id Address State Cores Memory
worker-20180417174137-192.168.1.13-43697 192.168.1.13:43697 ALIVE 4 (4 Used) 6.8 GB (1024.0 MB Used)
worker-20180417174137-192.168.1.14-38778 192.168.1.14:38778 ALIVE 4 (4 Used) 6.8 GB (1024.0 MB Used)
worker-20180417174137-192.168.1.15-35776 192.168.1.15:35776 ALIVE 4 (4 Used) 6.8 GB (1024.0 MB Used)
因此,无论如何,资源应该足够存在于这项简单的工作中。那么这可能导致这个问题呢?
由于对this的评论中的评论有关完全相同问题的评论,我尝试连接到以纱线为主的群集。
conf.set('spark.hadoop.yarn.resourcemanager.address', 'my-cluster:8032')
conf.set('spark.hadoop.fs.default.name', 'hdfs://my-cluster:9000')
conf.set('spark.submit.deployMode', 'client')
这导致this问题,我相应地应用了答案。然后用
启动上下文sc = pyspark.SparkContext(conf=conf)
根本不返回,无休止地阻止,直到手动取消。我在我的Ubuntu VM中尝试了这个,然后认为这可能是VM的网络问题,并且在主机Windows 7系统中也安装了火花,结果完全相同。那么如何成功连接到集群并启动应用程序?