我在独立模式下设置了一个简单的 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 堆栈还有一些额外的优势:
InputFormats 来读取数据,使用 Spark 进行预处理并将结果溢出到 Cassandra我认为在集群上进行预处理应该比在客户端上更快。