목차
1. Yarn(或称MRv2)
2. Yarn设计
3. Yarn主要组件
3.1 ClientRM
3.2 RMAM
3.2 AMNM
4. API
5. 总结

Yarn概述

Jun 07, 2016 pm 04:41 PM
hadoop yarn 개발하다 개요 함께

Yarn是随着hadoop发展而催生的新框架,全称是Yet Another Resource Negotiator,可以翻译为“另一个资源管理器”。yarn取代了以前hadoop中jobtracker(后面简写JT)的角色,因为以前JT的任务过重,负责任务的调度、跟踪、失败重启等过程,而且只能运行mapred

Yarn是随着hadoop发展而催生的新框架,全称是Yet Another Resource Negotiator,可以翻译为“另一个资源管理器”。yarn取代了以前hadoop中jobtracker(后面简写JT)的角色,因为以前JT的任务过重,负责任务的调度、跟踪、失败重启等过程,而且只能运行mapreduce作业,不支持其他编程模式,这也限制了JT使用范围,而yarn应运而生,解决了这两个问题。

为了表述清楚,大家可以先看hadoop版本说明这篇文章,我这里要说的是hadoop2.0,也就是新增了yarn之后的版本。

1. Yarn(或称MRv2)

Yarn把jobtracker的任务分解开来,分为:

  • ResourceManager(简写RM)负责管理分配全局资源
  • ApplicationMaster(简写AM),AM与每个具体任务对应,负责管理任务的整个生命周期内的所有事宜

除了上面两个以外,tasktracker被NodeManager(简写NM)替代,RM与NM构成了集群的计算平台。这种设计允许NM上长期运行一些辅助服务,这些辅助服务一般都是应用相关的,通过配置项指定,在NM启动时加载。例如在yarn上运行mapreduce程序时,shuffle就是一个由NM加载起来的辅助服务。需要注意的是,在hadoop 0.23之前的版本,shuffle是tasktracker的一部分。

与每个应用相关的AM是一个框架类库,它与RM沟通协商如何分配资源,与NM协同执行并且监测应用的执行情况。在yarn的设计中,mapreduce只是一种编程模式,yarn还允许像MPI(message passing interface),Spark等应用构架部署在yarn上运行。

2. Yarn设计

Yarn概述
上图是一个典型的YARN集群。可以看到RM有两个主要服务:

  • 可插拔的Scheduler,只负责用户提交任务的调度
  • ApplicationsMaster的(简写AsM)负责管理集群中每个任务的ApplicationMaster(简写AM),负责任务的监控、失败重起等

在hadoop1.0时,资源分配的单位是slot,再具体分为map的slot与reduce的slot,而且这些slot的个数是在任务运行前事先定义的,在任务运行过程中不能改变,很明显,这会造成资源的分配不均问题。在haodop2.0中,yarn采用了container的概念来分配资源。每个container由一些可以动态改变的属性组成,到现在为止,仅支持内存、cpu两种。但是yarn的这种资源管理方式是通用的,社区以后会加入更多的属性,比如网络带宽,本地硬盘大小等等。

3. Yarn主要组件

在这小节里,主要介绍yarn各个组件,以及他们之间是如何通信的。

3.1 ClientRM

Yarn概述

上面这个图是Client向RM提交任务时的流程。
(1) Client通过New Application Request来通知RM中的AsM组建
(2) AsM一般会返回一个新生成的全局ID,除此之外,传递的信息还有集群的资源状况,这样Client就可以在需要时请求资源来运行任务的第一个container即AM。
(3) 之后,Client就可以构造并发送ASC了。ASC中包括了调度队列,优先级,用户认证信息,除了这些基本的信息之外,还包括用来启动AM的CLC信息,一个CLC中包括jar包、依赖文件、安全token,以及运行任务过程中需要的其他文件。

经过上面这三步,一个Client就完成了一次任务的提交。之后,Client可以直接通过RM查询任务的状态,在必要时,可以要求RM杀死这个应用。如下图:
Yarn概述

3.2 RMAM

RM在收到Client端发送的ASC后,它会查询是否有满足其资源要求的container来运行AM,找到后,RM会与那个container所在机器上的NM通信,来启动AM。下面这个图描述了这其中的细节。
Yarn概述

(1) AM向RM注册,这个过程包括handshaking过程,并且传递一些信息,包括AM监听的RPC端口、用于监测任务运行状态的URL等。
(2) RM中的Scheduler部件做回应。这个过程会传递AM所需的信息,比如这个集群的最大与最小资源使用情况等。AM利用这些信息来计算并请求任务所需的资源。
(3) 这个过程是AM向RM请求资源。传递的信息主要包含请求container的列表,还有可能包含这个AM已经释放的container的列表。
(4) 在AM经过(3)请求资源之后,在稍微晚些时候,会把心跳包与任务进度信息发送给RM
(5) Scheduler在收到AM的资源请求后,会根据调度策略,来分配container以满足AM的请求。
(6) 在任务完成后,AM会给RM发送一个结束消息,然后退出。

在上面(5)与(6)之间,AM在收到RM返回的container列表后,会与每个container所在机器的NM通信,来启动这个container,下面就说说这个过程。

3.2 AMNM

Yarn概述
(1) AM向container所在机器的NM发送CLC来启动container
(2)(3) 在container运行过程中,AM可以查询它的运行状态

4. API

通过上面的描述,开发者在开发YARN上的应用时主要需要关注以下接口:

  • ApplicationClientProtocol

    Client使用这个协议来与RM通信,来启动一个新应用,检查任务的运行状态或杀死任务

  • ApplicationMasterProtocol

    AM使用这个协议来向RM注册/撤销,请求资源来运行任务。

  • ContainerManagementProtocol

    AM使用这个协议来与NM通信,来启动/停止container,查询container的状态。

5. 总结

用户在使用hadoop1.0 API编写的MapReduce可以不用修改直接运行在yarn上,不过随着yarn的发展,向后兼容性还不知道怎么样。不管怎样,新的yarn平台绝对值得我们使用。

Yarn是随着hadoop发展而催生的新框架,全称是Yet Another Resource Negotiator,可以翻译为“另一个资源管理器”。yarn取代了以前hadoop中jobtracker(后面简写JT)的角色,因为以前JT的任务过重,负责任务的调度、跟踪、失败

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

이 기사에서는 세 가지 JavaScript 패키지 관리자(npm, Yarn, pnpm)를 소개하고, 이 세 가지 패키지 관리자를 비교하고, npm, Yarn 및 pnpm 간의 차이점과 관계에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다. 도와주세요. 질문이 있으면 지적해 주세요!

Java 오류: Hadoop 오류, 처리 및 방지 방법 Java 오류: Hadoop 오류, 처리 및 방지 방법 Jun 24, 2023 pm 01:06 PM

Java 오류: Hadoop 오류, 처리 및 방지 방법 Hadoop을 사용하여 빅 데이터를 처리할 때 작업 실행에 영향을 미치고 데이터 처리 실패를 유발할 수 있는 Java 예외 오류가 자주 발생합니다. 이 기사에서는 몇 가지 일반적인 Hadoop 오류를 소개하고 이를 처리하고 방지하는 방법을 제공합니다. Java.lang.OutOfMemoryErrorOutOfMemoryError는 Java 가상 머신의 메모리 부족으로 인해 발생하는 오류입니다. 하둡이 있을 때

JS 패키지 관리 도구를 간략하게 분석한 기사: Yarn JS 패키지 관리 도구를 간략하게 분석한 기사: Yarn Aug 09, 2022 pm 03:49 PM

Yarn도 npm과 마찬가지로 JavaScript 패키지 관리 도구입니다. 이번 글에서는 Yarn 패키지 관리 도구를 소개하겠습니다.

C++의 연산자 오버로딩 문제 및 해결 방법 개요 C++의 연산자 오버로딩 문제 및 해결 방법 개요 Oct 08, 2023 pm 01:02 PM

C++의 연산자 오버로딩 문제 및 해결 방법 개요: 연산자 오버로딩은 C++ 언어의 중요한 기능으로, 이를 통해 프로그래머는 기존 연산자를 사용자 정의하여 사용자 정의 데이터 유형을 작동할 수 있습니다. 그러나 연산자 오버로딩은 부적절하거나 과도하게 사용할 경우 코드 가독성 저하, 모호성, 효율성 저하 등의 문제를 야기하므로 주의해서 사용해야 합니다. 이 문서에서는 C++의 연산자 오버로딩과 관련된 일반적인 문제를 간략하게 설명하고 해당 솔루션과 코드 예제를 제공합니다. 1. 연산자 과부하 문제 1.1 연산자 과부하의 모호성 문제

빅 데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase 사용 빅 데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase 사용 Jun 22, 2023 am 10:21 AM

빅데이터 시대가 도래하면서 데이터의 처리와 저장이 더욱 중요해지고 있으며, 대용량 데이터를 어떻게 효율적으로 관리하고 분석할 것인가가 기업의 과제가 되었습니다. Apache Foundation의 두 가지 프로젝트인 Hadoop과 HBase는 빅데이터 저장 및 분석을 위한 솔루션을 제공합니다. 이 기사에서는 빅데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase를 사용하는 방법을 소개합니다. 1. Hadoop 및 HBase 소개 Hadoop은 오픈 소스 분산 스토리지 및 컴퓨팅 시스템입니다.

Python Tkinter는 그 힘을 과시합니다: 멋진 GUI 애플리케이션 만들기 Python Tkinter는 그 힘을 과시합니다: 멋진 GUI 애플리케이션 만들기 Mar 24, 2024 am 09:11 AM

Tkinter는 크로스 플랫폼 데스크탑 애플리케이션을 만드는 데 사용할 수 있는 Python의 강력한 GUI 라이브러리입니다. 사용하기 쉽고 다양한 기능을 통해 사용자 인터페이스 구축, 이벤트 처리 및 레이아웃 관리를 위한 다양한 도구를 제공합니다. GUI 창 만들기 GUI 창을 만들려면 Tkinter.Tk() 메서드를 사용해야 합니다. 이 메서드는 응용 프로그램의 기본 창을 나타내는 Tk() 개체를 반환합니다. 창은 title() 메서드를 사용하여 제목을 가질 수 있고, 기하학() 메서드를 사용하여 창 크기와 위치를 가질 수 있습니다. importtkinterastkroot=tk.Tk()root.title("나의 첫 번째 Tkinter 응용 프로그램")root.g

블록체인 발전에 Golang이 미치는 영향과 역할에 대한 연구 블록체인 발전에 Golang이 미치는 영향과 역할에 대한 연구 Feb 26, 2024 pm 04:24 PM

프로그래밍 언어인 Golang(줄여서 Go 언어)은 최근 몇 년 동안 효율적인 동시 처리 기능과 간결한 구문 기능으로 인해 블록체인 분야에서 점차 등장했습니다. 이 기사에서는 Golang이 블록체인 개발에 어떻게 도움이 되는지 살펴보고 특정 코드 예제를 통해 블록체인 애플리케이션에서의 우수성을 입증할 것입니다. 1. 블록체인 분야에서 Golang의 장점: 효율적인 동시 처리 능력: 블록체인 시스템의 노드는 대량의 트랜잭션과 데이터를 동시에 처리해야 하는데, Gola

빅데이터 처리에 PHP와 Hadoop을 사용하는 방법 빅데이터 처리에 PHP와 Hadoop을 사용하는 방법 Jun 19, 2023 pm 02:24 PM

데이터의 양이 지속적으로 증가함에 따라 기존의 데이터 처리 방식으로는 더 이상 빅데이터 시대가 가져온 과제를 처리할 수 없습니다. 하둡(Hadoop)은 빅데이터 처리 시 단일 노드 서버로 인해 발생하는 성능 병목 현상을 분산 저장 및 대용량 데이터 처리를 통해 해결하는 오픈소스 분산 컴퓨팅 프레임워크이다. PHP는 웹 개발에 널리 사용되는 스크립팅 언어로 개발 속도가 빠르고 유지 관리가 쉽다는 장점이 있습니다. 이 글에서는 빅데이터 처리를 위해 PHP와 Hadoop을 사용하는 방법을 소개합니다. 하둡이란 무엇인가Hadoop이란

See all articles