当前位置: 首页 > 知识库问答 >
问题:

Spark作业长时间运行,数据太少

夏侯兴学
2023-03-14

我在Master上运行了一个如下所示的spark代码:

import pyspark
from pyspark import SparkContext
sc =SparkContext()
nums= sc.parallelize([1,2,3,4])
nums.collect()

我的集群配置:独立/客户机模式下的3个节点(1个主+2个从)

Master config 600mb RAM, 1CPU
Slave1 config 600mb RAM, 1CPU
Slave2 config 16GB RAM, 4CPU
20/05/11 19:43:09 INFO BlockManagerMaster: Removal of executor 105 requested
20/05/11 19:43:09 INFO StandaloneAppClient$ClientEndpoint: Executor added: app-20200511193954-0001/106 on worker-20200511192038--MASTER_IP:44249 (MASTER_IP:44249) with 4 core(s)
20/05/11 19:43:09 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Asked to remove non-existent executor 105
20/05/11 19:43:09 INFO BlockManagerMasterEndpoint: Trying to remove executor 105 from BlockManagerMaster.
20/05/11 19:43:10 INFO StandaloneSchedulerBackend: Granted executor ID app-20200511193954-0001/106 on hostPort MASTER_IP:44249 with 4 core(s), 6.0 GB RAM
^C20/05/11 19:43:58 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

我尝试添加一个新的集群slave3,因为上面搜索的关于资源不足的错误,但是这个错误在伸缩时仍然存在。

是因为master节点中的内存较少吗??这里有什么建议吗??

共有1个答案

甘学潞
2023-03-14

只需先尝试以最小的需求运行即可。还要将部署模式更改为群集,以使用辅助节点。在https://spark.apache.org/docs/latest/submitting-applications.html阅读更多信息

spark-submit --master spark://<MASTER_IP>:7077 --num-executors=2 --conf spark.driver.memory=100M  --conf spark.executor.memory=200M --deploy-mode cluster test.py
 类似资料:
  • 我已经在Ubuntu14.04中安装了Android studio。我试图清理这个项目,但它花了太长时间,已经1小时了,因为gradle正在运行。在我的Gradle控制台中,我得到了如下错误: 线程“png-cruncher_8”java.lang.runtimeException:在等待从aapt进程时超时,请确保在/home/files/android/sdk/build-tools/23.0

  • 我试图运行火花作业,基本上加载数据在卡桑德拉表。但它也产生了以下错误。

  • 问题内容: 场景 某些SQL Agent Jobs计划在一天中每隔几分钟运行一次。 在某些情况下,它会丢失其下一个计划,因为它仍在按上一个计划运行。 每隔一段时间,一项工作可能会“挂起”。这不会产生故障(因为作业尚未停止)。发生这种情况时,可以手动停止该作业,并在下次运行时正常运行。它旨在从停下来的地方重新取回。 最有效的方法是什么? 我想要一种确定名为“ JobX”的SQL代理作业当前正在运行多

  • 问题内容: 我有一个运行长时间运行的作业的Web服务(大约几个小时)。我正在使用Flask,Gunicorn和nginx进行开发。 我正在考虑做的事情是拥有一条需要很长时间才能完成的路由,调用一个创建线程的函数。然后,该函数将向路径返回一个GUID,并且路径将返回一个URL(使用GUID),用户可以使用该URL来检查进度。我正在将线程设为守护程序(thread.daemon = True),以便如

  • 也许有一种方法可以设置一个计时器,如果数据流作业超过时间限制,它就会停止?

  • 我们的Google Cloud数据流管道程序调用了一些动态链接到*的库。所以要运行它,我需要设置linux环境变量LD_LIBRARY_PATH。有一种方法可以做到这一点:https://groups.google.com/forum/#!主题/综合。java。程序员/LOu18 OWAVM,但我想知道是否有一种方法可以在执行管道之前使用一些运行shell脚本的作业来实现这一点?