我在独立模式下设置了一个简单的 Spark 集群,并希望将 Apache Zeppelin 用作交互式 Spark“便签本”。不幸的是,当SparkContext
它启动时,它占据了我的实验集群上的所有核心。我知道有一个名为“动态分配”的新功能,但它只适用于 YARN。我在这个集群上没有 YARN,我不想运行成熟的 Hadoop 堆栈,因为我想使用 Cassandra 作为数据后端。
如果不使用 YARN,这是否可能?
我在独立模式下设置了一个简单的 Spark 集群,并希望将 Apache Zeppelin 用作交互式 Spark“便签本”。不幸的是,当SparkContext
它启动时,它占据了我的实验集群上的所有核心。我知道有一个名为“动态分配”的新功能,但它只适用于 YARN。我在这个集群上没有 YARN,我不想运行成熟的 Hadoop 堆栈,因为我想使用 Cassandra 作为数据后端。
如果不使用 YARN,这是否可能?
你可以使用 Mesos 而不是 Yarn。Spark 允许您在粗粒度模式下设置它从 Mesos 请求的核心数量。为此,请设置以下选项:
spark.mesos.coarse=true
spark.cores.max={The number of cores you wish to allocate}
您可以通过 Zeppelin 中的解释器窗口设置这些。
请注意,在粗粒度模式下,Zeppelin 将持续占用这些核心——即使它实际上并没有做任何工作。
实际上我最后还是选择了 YARN,因为我发现下面有一个 Hadoop 堆栈还有一些额外的优势:
InputFormat
s 来读取数据,使用 Spark 进行预处理并将结果溢出到 Cassandra我认为在集群上进行预处理应该比在客户端上更快。