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

时间:2016-05-03 18:41:50

标签: hadoop apache-spark yarn hadoop2

因为火花在内存中运行,在使用纱线时Spark中的资源分配意味着什么?它与hadoop的容器分配形成了怎样的对比? 只是好奇地知道hadoop的数据和计算是在磁盘上,而Spark是在内存中。

1 个答案:

答案 0 :(得分:5)

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

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

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

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

例如,当我们提交mapreduce作业时,将启动MR应用程序主服务器,它将与资源管理器协商以获取其他资源。将在分配的资源中生成Map和reduce任务。

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