我将flintrock 0.9.0
与spark 2.2.0
一起使用,以在EC2上启动集群。 代码是用pyspark
编写的 我已经这样做了一段时间,并运行了几个成功的作业。在过去的 2 天里,我遇到了一个问题,当我在某些实例上启动集群时,我没有得到任何内核。我在c1.medium
上观察到了这种行为,现在r3.xlarge
代码以获取spark
,这是spark context
objects
conf = SparkConf().setAppName('the_final_join')
.setMaster(master)
.set('spark.executor.memory','29G')
.set('spark.driver.memory','29G')
sc = SparkContext(conf=conf)
spark = SparkSession.builder.config(conf=conf).getOrCreate()
c1.medium
.set('spark.executor.cores', '2')
使用,似乎有效。但是现在我尝试在更大的 r3.xlarge
实例集群上运行我的代码,无论我做什么,我的 Job 都不会获得任何代码。所有工人都还活着,我看到他们每个人都应该有 4 个核心。在过去的 2 个月里有什么变化还是我在启动过程中遗漏了什么?我在us-east-1c
启动实例,我不知道这是否与此有关。
您的部分问题可能是您尝试为驱动程序/执行程序分配的内存多于您有权访问的内存。
yarn.nodemanager.resource.memory-mb 控制每个节点上容器使用的最大内存总和(引用(
您可以在此处查找各种实例的此值。 r3.xlarge 可以访问 23,424M,但您试图为您的驱动程序/执行者提供 29G。 最终,Yarn 没有启动 Spark,因为它无法访问足够的内存来运行您的作业。