【问题标题】:Apache Spark Standalone Cluster Initial Job not accepting resourcesApache Spark 独立集群初始作业不接受资源
【发布时间】:2016-03-20 00:44:10
【问题描述】:

首先,我知道以前有人问过这个问题,但他们的答案似乎不适用于我的情况。

我正在使用 Digital Ocean,我有三台服务器(Ubuntu 14.04,2 核,2GB RAM,40Gb 磁盘),一台主机和两台从机。它们都安装了从源代码编译的 Spark 1.6.1。由于内存不足,它们都无法构建,所以我为每个配置了 16Gb 交换,然后构建顺利。

我通过将主机显式设置为公共 IP 地址来启动主服务器上的独立服务器:

./sbin/start-master.sh -h 104.236.221.106

这是实际的 IP 地址 - 您可以访问 http://104.236.221.106:8080/ 以查看集群的状态。无论如何,奴隶们是这样开始的:

./sbin/start-slave.sh spark://104.236.221.106:7077 -m 10g

因为 Spark 只检测到 2Gb 的系统内存,它只占用了 1Gb,所以我明确告诉它使用更多,以便系统在需要时利用交换。

查看门户网站,我看到它报告集群中有 2 个工人,总共 4 个核心,等等...

一切似乎都应该很好,所以我使用以下命令从主服务器启动 shell 进行交互工作:

./bin/spark-shell --master spark://104.236.221.106:7077 --executor-memory 4g

目标是拥有足够的内存。它启动并给了我命令行,所以我设置了一个值 val NUM_SAMPLES=10000 - 不是一个大数字,而是一些东西,然后我尝试使用 Apache 的示例代码来估计 Pi。

val count = sc.parallelize(1 to NUM_SAMPLES).map{i =>
  val x = Math.random()
  val y = Math.random()
  if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)

我从中得到的是:

[Stage 0:>                                                          (0 + 0) / 2]16/03/19 07:23:57 WARN TaskSchedulerImpl: 
    Initial job has not accepted any resources; 
    check your cluster UI to ensure that workers are registered 
    and have sufficient resources
16/03/19 07:24:12 WARN TaskSchedulerImpl: 
    Initial job has not accepted any resources; 
    check your cluster UI to ensure that workers are registered 
    and have sufficient resources
16/03/19 07:24:27 WARN TaskSchedulerImpl: 
    Initial job has not accepted any resources; 
    check your cluster UI to ensure that workers are registered 
    and have sufficient resources
[Stage 0:>                                                          (0 + 0) / 2]16/03/19 07:24:42 WARN TaskSchedulerImpl: 
    Initial job has not accepted any resources; 
    check your cluster UI to ensure that workers are registered 
    and have sufficient resources

因此,出于几个原因,这没有意义。首先,我知道集群存在,因为我可以在 Web 门户中看到它。我看到了使用我请求的内存分配创建的作业。我在奴隶的top 中看到 java 正在做的事情让我觉得他们得到了工作。最后,我要求的任务非常简单,它不应该消耗几乎任何东西。

我在配置/尝试运行此代码的方式上做错了什么?

我将包含主日志和工作日志的示例:

工人:http://pastebin.com/xwnBMaKQ

大师:http://pastebin.com/0Ja0KD9k

看起来工作人员仍在尝试访问私有 IP 地址,尽管使用明确的 IP 地址启动主服务器并且(在一些帮助后)也使用他们的公共 IP 地址启动工作人员。

【问题讨论】:

  • 那么问题解决了吗?
  • 是的,尽管我尝试编辑您的答案以包含启动集群的必要更改,因为我的流程原样不适用于您的解决方案。编辑显然被拒绝了。

标签: scala apache-spark


【解决方案1】:

您是否尝试过明确使用私有 IP 地址?在担心来自公共 IP 地址的访问之前,我首先要确保您可以将集群置于一致的状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多