当在Yarn上运行时,容器/资源分配在Hadoop和Spark中意味着什么



由于spark在内存中运行,当在yarn上运行时,spark中的资源分配意味着什么?它与hadoop的容器分配有何对比?只是想知道hadoop的数据和计算在磁盘上,而Spark在内存中。

Hadoop是一个能够处理大数据的框架。它有两层。一个是称为HDFS的分布式文件系统层,第二个是分布式处理层。在hadoop2.x中,处理层是以通用的方式构建的,因此它也可以用于非mapreduce应用程序。对于任何进程,我们都需要系统资源,如内存、网络、磁盘和cpu。术语容器出现在hadoop2.x中。在hadoop1.x中,等价的术语是slot。容器是内存和cpu的分配或共享。YARN是一种通用的资源管理框架,通过适当的分配和共享,可以有效地利用集群节点中的资源。

在内存处理意味着,数据将完全加载到内存中并进行处理,而无需将中间数据写入磁盘。由于计算是在内存中进行的,而没有太多的磁盘I/O操作,因此此操作将更快。但这需要更多的内存,因为整个数据都将加载到内存中。

批处理意味着数据将被分批获取和处理,中间结果将存储在磁盘中,并再次提供给下一个过程。这也需要内存和cpu进行处理,但与完全内存处理系统相比,它会更少。

YARN的资源管理器充当mapreduce、impala(带骆驼)、spark(在纱线模式下)等应用程序的中央资源分配器。因此,当我们触发作业时,它会向资源管理器请求执行所需的资源。资源管理器将根据可用性分配资源。资源将以容器的形式分配。容器只是内存和cpu的分配。一个作业可能需要多个容器。容器将根据可用性在集群中进行分配。任务将在容器内执行。

例如,当我们提交一个mapreduce作业时,将启动一个MR应用程序主机,它将与资源管理器协商额外的资源。映射和减少任务将在分配的资源中生成。

类似地,当我们提交一个spark作业(YARN模式)时,将启动一个spark应用程序主机,它将与资源管理器协商额外的资源。RDD将在分配的资源中生成。

最新更新