Jadual Kandungan
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 membangun Gambaran keseluruhan bersama-sama dengan

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的任务过重,负责任务的调度、跟踪、失败

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengurus pakej JavaScript dibandingkan: Npm vs Yarn vs Pnpm Pengurus pakej JavaScript dibandingkan: Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

Artikel ini akan membawa anda melalui tiga pengurus pakej JavaScript (npm, yarn, pnpm), membandingkan ketiga-tiga pengurus pakej ini dan bercakap tentang perbezaan dan hubungan antara npm, yarn dan pnpm Saya harap ia akan membantu semua orang bantuan, jika anda mempunyai sebarang soalan sila tunjukkan!

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Jun 24, 2023 pm 01:06 PM

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Apabila menggunakan Hadoop untuk memproses data besar, anda sering menghadapi beberapa ralat pengecualian Java, yang mungkin menjejaskan pelaksanaan tugas dan menyebabkan pemprosesan data gagal. Artikel ini akan memperkenalkan beberapa ralat Hadoop biasa dan menyediakan cara untuk menangani dan mengelakkannya. Java.lang.OutOfMemoryErrorOutOfMemoryError ialah ralat yang disebabkan oleh memori mesin maya Java yang tidak mencukupi. Apabila Hadoop adalah

Artikel yang menganalisis secara ringkas alat pengurusan pakej JS: yarn Artikel yang menganalisis secara ringkas alat pengurusan pakej JS: yarn Aug 09, 2022 pm 03:49 PM

Benang, seperti npm, juga merupakan alat pengurusan pakej JavaScript Dalam artikel ini, saya akan memperkenalkan anda kepada alat pengurusan pakej benang saya harap ia akan membantu anda.

Gambaran keseluruhan masalah pembebanan operator dan penyelesaian dalam C++ Gambaran keseluruhan masalah pembebanan operator dan penyelesaian dalam C++ Oct 08, 2023 pm 01:02 PM

Gambaran Keseluruhan Masalah dan Penyelesaian Lebih Muatan Operator dalam C++ Pengenalan: Lebih muatan operator ialah ciri penting bahasa C++, yang membolehkan pengaturcara menyesuaikan operator sedia ada untuk mengendalikan jenis data tersuai. Walau bagaimanapun, beban berlebihan pengendali perlu digunakan dengan berhati-hati, kerana jika digunakan secara tidak wajar atau berlebihan, ia akan membawa kepada masalah seperti kebolehbacaan kod yang berkurangan, kekaburan dan kecekapan yang berkurangan. Artikel ini akan menggariskan masalah biasa dengan operator terlebih muatan dalam C++ dan menyediakan penyelesaian yang sepadan serta contoh kod. 1. Masalah dengan operator lebih muatan 1.1 Masalah kesamaran dalam operator lebih muatan

Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Jun 22, 2023 am 10:21 AM

Dengan kemunculan era data besar, pemprosesan dan penyimpanan data menjadi semakin penting, dan cara mengurus dan menganalisis sejumlah besar data dengan cekap telah menjadi cabaran bagi perusahaan. Hadoop dan HBase, dua projek Yayasan Apache, menyediakan penyelesaian untuk penyimpanan dan analisis data besar. Artikel ini akan memperkenalkan cara menggunakan Hadoop dan HBase dalam Beego untuk storan dan pertanyaan data besar. 1. Pengenalan kepada Hadoop dan HBase Hadoop ialah sistem storan dan pengkomputeran teragih sumber terbuka yang boleh

Python Tkinter menunjukkan kuasanya: Cipta aplikasi GUI yang menakjubkan Python Tkinter menunjukkan kuasanya: Cipta aplikasi GUI yang menakjubkan Mar 24, 2024 am 09:11 AM

Tkinter ialah perpustakaan GUI yang berkuasa dalam python yang boleh digunakan untuk membuat aplikasi desktop merentas platform. Dengan kemudahan penggunaan dan pelbagai ciri, ia menyediakan pelbagai alatan untuk membina antara muka pengguna, mengendalikan acara dan mengurus susun atur. Mencipta Tetingkap GUI Untuk mencipta tetingkap GUI, anda perlu menggunakan kaedah Tkinter.Tk(). Kaedah ini mengembalikan objek Tk() yang mewakili tetingkap utama aplikasi. Tetingkap boleh mempunyai tajuk menggunakan kaedah title() dan saiz dan kedudukan tetingkap menggunakan kaedah geometri(). importtkinterastkroot=tk.Tk()root.title("Aplikasi Tkinter pertama saya")root.g

Penyelidikan tentang kesan dan peranan Golang terhadap pembangunan rantaian blok Penyelidikan tentang kesan dan peranan Golang terhadap pembangunan rantaian blok Feb 26, 2024 pm 04:24 PM

Golang (pendek kata bahasa Go) sebagai bahasa pengaturcaraan telah muncul secara beransur-ansur dalam bidang blockchain sejak beberapa tahun kebelakangan ini, keupayaan pemprosesan serentak yang cekap dan ciri sintaks yang ringkas menjadikannya pilihan yang digemari dalam pembangunan blok. Artikel ini akan meneroka bagaimana Golang membantu pembangunan blockchain dan menunjukkan keunggulannya dalam aplikasi blockchain melalui contoh kod tertentu. 1. Kelebihan Golang dalam bidang blockchain: Keupayaan pemprosesan serentak yang cekap: Nod dalam sistem blockchain perlu memproses sejumlah besar transaksi dan data pada masa yang sama, dan Gola

Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Jun 19, 2023 pm 02:24 PM

Memandangkan jumlah data terus meningkat, kaedah pemprosesan data tradisional tidak lagi dapat menangani cabaran yang dibawa oleh era data besar. Hadoop ialah rangka kerja pengkomputeran teragih sumber terbuka yang menyelesaikan masalah kesesakan prestasi yang disebabkan oleh pelayan nod tunggal dalam pemprosesan data besar melalui storan teragih dan pemprosesan sejumlah besar data. PHP adalah bahasa skrip yang digunakan secara meluas dalam pembangunan web dan mempunyai kelebihan pembangunan pesat dan penyelenggaraan yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP dan Hadoop untuk pemprosesan data besar. Apa itu HadoopHadoop

See all articles