对于仅运行Spark应用程序的多租户集群,YARN的哪些功能使其比Spark Standalone模式更好?也许除了身份验证之外。
Google有很多答案,其中很多听起来对我来说是错误的,所以我不确定真相在哪里。
例如:
DZone, Deep Dive Into Spark Cluster Management
Standalone适用于小型Spark集群,但不适用于 更大的集群(运行Spark守护程序会产生开销, 主节点+从节点-在群集节点中)
但是其他集群管理器也需要在集群节点上运行代理。即YARN的从站称为节点管理器。它们可能比Spark的从服务器消耗更多的内存(Spark的默认值为1 GB)。
Spark独立模式要求每个应用程序运行一个执行程序 在集群中的每个节点上;而使用YARN,您可以选择数字 执行者的使用
再次Spark Standalone # executor/cores control,显示了如何在独立模式下指定消耗的资源数量。
独立集群模式当前仅支持简单的FIFO 跨应用程序的调度程序。
针对独立模式可以使用动态分配这一事实,您可以指定spark.dynamicAllocation.minExecutors
和spark.dynamicAllocation.maxExecutors
。另外我还没有找到关于Standalone不支持FairScheduler的说明。
YARN直接处理机架和机器的位置
YARN如何得知我的工作中的数据局部性?假设,我将文件位置存储在AWS Glue(由EMR用作Hive元存储)。在Spark作业内部,我正在查询some-db.some-table
。 YARN如何知道哪种执行者更适合工作分配?
UPD:发现了关于YARN和数据位置https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-data-locality.html的另一条提及。例如,对于S3仍然没有关系。