首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何远程运行Apache Spark shell?

如何远程运行Apache Spark shell?
EN

Stack Overflow用户
提问于 2014-10-31 20:52:16
回答 2查看 23.6K关注 0票数 21

我有一个Spark集群设置,有一个主节点和3个工作节点。我还在CentOS虚拟机上安装了Spark。我正在尝试从我的本地VM运行一个Spark shell,它将连接到master,并允许我执行简单的Scala代码。所以,下面是我在本地VM上运行的命令:

代码语言:javascript
复制
bin/spark-shell --master spark://spark01:7077

shell运行到我可以输入Scala代码的程度。它说executors已经被授予(x3 -每个worker一个)。如果我看一下Master的UI,我可以看到一个正在运行的应用程序,Spark shell。所有工作进程都是活动的,使用了2/2个内核,并且已经为应用程序分配了512 MB (共5 GB)。因此,我尝试执行以下Scala代码:

代码语言:javascript
复制
sc.parallelize(1 to 100).count    

不幸的是,该命令不起作用。shell只会无休止地打印相同的警告:

代码语言:javascript
复制
INFO SparkContext: Starting job: count at <console>:13
INFO DAGScheduler: Got job 0 (count at <console>:13) with 2 output partitions (allowLocal=false)
INFO DAGScheduler: Final stage: Stage 0(count at <console>:13) with 2 output partitions (allowLocal=false)
INFO DAGScheduler: Parents of final stage: List()
INFO DAGScheduler: Missing parents: List()
INFO DAGScheduler: Submitting Stage 0 (Parallel CollectionRDD[0] at parallelize at <console>:13), which has no missing parents
INFO DAGScheduler: Submitting 2 missing tasts from Stage 0 (ParallelCollectionRDD[0] at parallelize at <console>:13)
INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory

在我对这个问题进行研究之后,我已经确认我正在使用的主URL与web UI上的相同。我可以ping和ssh两种方式(集群到本地VM,反之亦然)。此外,我使用了executor-memory参数(增加和减少内存),但都没有用。最后,我尝试在两端禁用防火墙(iptables),但我一直收到相同的错误。我使用的是Spark 1.0.2。

Apache;DR是否可以远程运行 Spark shell (并从本质上远程提交应用程序)?如果是这样的话,我错过了什么?

编辑:我看了一下工人日志,发现工人们很难找到Spark:

代码语言:javascript
复制
ERROR org.apache.spark.deploy.worker.ExecutorRunner: Error running executor
java.io.IOException: Cannot run program "/usr/bin/spark-1.0.2/bin/compute-classpath.sh" (in directory "."): error=2, No such file or directory
...

Spark安装在本地VM上与群集上不同的目录中。工作进程尝试查找的路径就是我的本地VM上的路径。有没有办法让我指定这个路径?或者它们必须在所有地方都是相同的?

目前,我调整了我的目录来避免这个错误。现在,我的Spark Shell在我有机会输入计数命令(Master removed our application: FAILED)之前就失败了。所有的工人都有相同的错误:

代码语言:javascript
复制
ERROR akka.remote.EndpointWriter: AssociationError [akka.tcp://sparkWorker@spark02:7078] -> [akka.tcp://sparkExecutor@spark02:53633]:
Error [Association failed with [akka.tcp://sparkExecutor@spark02:53633]] 
[akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkExecutor@spark02:53633] 
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$annon2: Connection refused: spark02/192.168.64.2:53633

正如我所怀疑的那样,我遇到了网络问题。我现在应该看什么?

EN

回答 2

Stack Overflow用户

发布于 2015-01-23 11:20:28

我在我的spark客户端和spark集群上解决了这个问题。

检查你的网络,客户端A可以相互ping集群!然后在客户端A上的spark-env.sh中添加两行配置。

first

代码语言:javascript
复制
export SPARK_MASTER_IP=172.100.102.156  
export SPARK_JAR=/usr/spark-1.1.0-bin-hadoop2.4/lib/spark-assembly-1.1.0-hadoop2.4.0.jar

第二个

用集群模式测试你的spark shell!

票数 2
EN

Stack Overflow用户

发布于 2016-08-14 17:52:41

此问题可能由网络配置引起。看起来错误TaskSchedulerImpl: Initial job has not accepted any resources可能有很多原因(另请参阅this answer):

主设备和辅助设备之间的实际资源shortage

  • broken通信中断

  • 主设备/辅助设备和驱动程序之间的通信中断

排除前一种可能性的最简单方法是使用直接在主服务器上运行的Spark shell运行一个测试。如果此操作有效,则群集本身内的群集通信正常,问题是由与驱动程序主机的通信引起的。要进一步分析问题,可以查看工作日志,其中包含以下条目

代码语言:javascript
复制
16/08/14 09:21:52 INFO ExecutorRunner: Launch command: 
    "/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java" 
    ... 
    "--driver-url" "spark://CoarseGrainedScheduler@192.168.1.228:37752"  
    ...

并测试工作人员是否可以建立到驱动程序的IP/端口的连接。除了一般的防火墙/端口转发问题外,可能是驱动程序绑定到了错误的网络接口。在这种情况下,您可以在启动Spark shell之前导出驱动程序上的SPARK_LOCAL_IP,以便绑定到不同的接口。

一些额外的参考:

关于网络连接的

文档的issues.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26675173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档