由于spark在内存中运行,当在yarn上运行时,spark中的资源分配意味着什么?它与hadoop的容器分配有何对比?只是想知道hadoop的数据和计算在磁盘上,而Spark在内存中。
在内存处理意味着,数据将完全加载到内存中并进行处理,而无需将中间数据写入磁盘。由于计算是在内存中进行的,而没有太多的磁盘I/O操作,因此此操作将更快。但这需要更多的内存,因为整个数据都将加载到内存中。
批处理意味着数据将被分批获取和处理,中间结果将存储在磁盘中,并再次提供给下一个过程。这也需要内存和cpu进行处理,但与完全内存处理系统相比,它会更少。
YARN的资源管理器充当mapreduce、impala(带骆驼)、spark(在纱线模式下)等应用程序的中央资源分配器。因此,当我们触发作业时,它会向资源管理器请求执行所需的资源。资源管理器将根据可用性分配资源。资源将以容器的形式分配。容器只是内存和cpu的分配。一个作业可能需要多个容器。容器将根据可用性在集群中进行分配。任务将在容器内执行。
例如,当我们提交一个mapreduce作业时,将启动一个MR应用程序主机,它将与资源管理器协商额外的资源。映射和减少任务将在分配的资源中生成。
类似地,当我们提交一个spark作业(YARN模式)时,将启动一个spark应用程序主机,它将与资源管理器协商额外的资源。RDD将在分配的资源中生成。