Apache spark 为什么我的pyspark在我发布时就挂在纱线中?
我刚刚在Apache spark 为什么我的pyspark在我发布时就挂在纱线中?,apache-spark,amazon-ec2,pyspark,yarn,Apache Spark,Amazon Ec2,Pyspark,Yarn,我刚刚在Linux中创建了一个新的AWS实例。我在上面安装了pyspark。它有spark 1.6 我正在用纱线运行pyspark。当我在终端中执行命令pyspark时,它最初启动,但随后我收到消息: dd/mm/YY HH:MM:SS INFO yarn.Client: Application report for application_XXXXXXXXXXX_XXXX (state: ACCEPTED) ……然后这种情况将永远持续下去 因此,我检查了纱线,查看是否还有其他东西在运行: y
Linux
中创建了一个新的AWS
实例。我在上面安装了pyspark
。它有spark 1.6
我正在用纱线运行pyspark
。当我在终端中执行命令pyspark
时,它最初启动,但随后我收到消息:
dd/mm/YY HH:MM:SS INFO yarn.Client: Application report for application_XXXXXXXXXXX_XXXX (state: ACCEPTED)
……然后这种情况将永远持续下去
因此,我检查了纱线
,查看是否还有其他东西在运行:
yarn application -list
并且只显示我的应用程序正在运行。如何打开pyspark
shell并启动我的应用程序,而不仅仅是被接受
?您能否尝试运行spark shell,看看它是否进入运行状态
当Thread没有向其请求资源时,就会发生这种情况
示例:假设纱线有5gb的可用内存,您请求的是10gb。在获得请求的内存之前,您的作业将停留在接受阶段
尝试使用以下配置运行作业:
pyspark --total-executor-cores 2 --executor-memory 1G
添加到Grover answer中,您可以将和设置为True以尽快启动作业。此问题与资源或队列有关
请在warn site.xml
中设置所有这些选项,以便在群集上拥有足够的资源:
warn.scheduler.maximum allocation mb
,warn.scheduler.maximum allocation vcores
,warn.nodemanager.resource.memory mb
,warn.nodemanager.resource.cpu vcores
此外,如果使用公平调度程序,您可能会遇到队列的错误/问题,可以通过在fair scheduler.xml
(在具有资源管理器的节点上)中将queuemaxamsharefault
设置为-1.0
,然后重新启动资源管理器来解决此问题。好。我怎么知道有多少可用内存?我如何知道我需要多少内存?您是否使用过dr.who或cloudera manager或ambari之类的工具?从那里你可以检查有多少可用内存。你能试着运行:sparkshell--masterlocal并确认它是否成功吗?不,只使用命令行。是火花壳-主本地通过并正常工作。这告诉我们什么?这告诉我们spark安装没有问题,因为它能够在本地模式下运行。当你只使用spark shell时会发生什么?当我只使用spark shell
时,它会打开一个scala
shell,正如预期的那样,对吗?我的spark.DynamicLocation.enabled
文件中已经设置为“true”。我不知道在哪里设置warn.scheduler.fair.preemption
-这是warn site.xml
或spark defaults.conf
的属性还是两者都不是?我实际上使用的是一个公平调度程序,因此在这方面添加一些配置可能是有意义的。您应该将该属性添加到您的warn-site.ymlwarn.scheduler.fair.preemption true
。对于高级配置(组、组优先级),我建议发布Cloudera博客&