hadoop資源排程器

2021-09-01 17:33:18 字數 3975 閱讀 9149

hadoop支援多使用者環境,在生產環境中,往往乙個大的hadoop集群,供多個應用如hive,mahout等之類的使用。在多使用者環境下,有的使用者提交的工作量很大、很頻繁,而有的很少,還有的優先順序很高,那麼如何保證「按需」來為各個使用者分配資源(記憶體、cpu、頻寬、io、磁碟)呢?這就需要用到資源排程器。

這裡,我對hadoop的資源排程做個簡單的歸納總結:

一、基本術語

使用者分組管理

用於按組為單位組織管理,某個使用者只能向固定分組中提交作業,只能使用固定分組中配置的資源;同時可以限制每個使用者提交的作業數,使用的資源量等

作業管理

包括作業提交許可權控制,作業執行狀態檢視許可權控制等。如:可限定可提交作業的使用者;可限定可檢視作業執行狀態的使用者;可限定普通使用者只能修改自己作業的優先順序,kill自己的作業;高階使用者可以控制所有作業等。

使用者(user)

hadoop使用linux使用者管理,hadoop中的使用者就是linux中的使用者

分組(group)

hadoop使用linux分組管理,hadoop中的分組就是linux中的分組

池(pool)

hadoop fair scheduler中的概念,乙個pool可以是乙個user,乙個group,或者乙個queue。

佇列(queue)

佇列是hadoop提出的概念,乙個queue可以由任意幾個group和任意幾個user組成。

二、資源排程管理簡介

hadoop的資源管理核心

儲存容量管理

hdfs儲存管理

計算容量管理

mr任務槽管理

任務排程器

三、儲存容量管理

主要是對hdfs的管理:

hdfs本身也是一種檔案系統,與linux檔案系統有類似之處

對使用者組、使用者、路徑設定quotas(包括空間大小和檔案數量)

hadoop dfsadmin -setspacequota size path

hadoop dfsadmin -setquota number path

hadoop共享linux的使用者組和使用者

hdfs的許可權控制:使用者和使用者組

四、計算容量管理

主要是對mapreduce任務槽的管理,任務槽也可以理解為伺服器的資源綜合統稱:

cpu(如何設定mr,見下面備註)

記憶體(設定子任務的jvm引數和gc引數。在1 . 0以後的版本中,可以全域性m/r記憶體和job               m/r記憶體)

網路頻寬

磁碟io

單台主機或整個集群資源是有限的。在多工、多使用者環境下,大量併發提交和執行任務是非常常見的,這就導致資源不足而競爭,如何保證在有限資源或業務約束下有序排程和執行任務,需要有乙個協調者,這就是hadoop的資源排程器。

hadoop的排程器

fifo(default)。先進先出排程器

hadoop預設提供。

fair scheduler(plugin)。公平排程器

facebook提供。

capacity scheduler (plugin)。容量排程器

yahoo提供。

1、fifo scheduler

先進先出排程器

優點:hadoop預設提供。非常簡單、jobtracker無負擔

支援五級優先順序,每級乙個佇列,從佇列優先順序高低提取任務執行。五級分別是:very low 、low 、normal 、high 、very hign;

在同級佇列中,按提交job的時間先後順序執行

無需額外配置

缺點:完全忽略不同作業的需求差異

公平分享排程器:在多個使用者之間共享集群資源。它按資源池來組織作業,並把資源按時間公平地分到這些資源池裡。在每乙個資源池內,會使用公平共享地方法在執行作業之間共享容量。

特徵:支援多使用者(預設乙個使用者對乙個池,依賴於linux多使用者環境)

資源公平共享(公平共享量由優先順序決定,同優先順序按fifo排程)

保證最小共享量

支援時間片搶占

限制作業併發量,以防止中間資料塞滿磁碟

容量排程器:使多個使用者可以安全地共享乙個大的集群,應用程式可以在容量限度下獲取到需要的資源,最大化集群的吞吐率和利用率。它按佇列來組織作業,每個佇列會配置一定比例的計算資源,且所有提交到佇列中的作業共享該佇列中的資源。

特徵:

層次化的佇列

層次化的佇列支援在乙個組織內子佇列的優先共享資源,從而提供了更多的控制和預

測的能力,不支援搶占

資源容量保證

佇列實現了一種資源的劃分,所有的應用都會被指定到特定的佇列,這些應用所能使用到的資源受到佇列所擁有資源的限制

安全性

每乙個佇列都有乙個嚴格的acl來控制那些使用者可以訪問佇列,並且有乙個safe-guard來保證使用者不能夠看或者修改其他使用者的應用,而且每個佇列或系統都可以設定管理員角色。 

彈性

空閒的資源可以分配給任何佇列,這樣可能超出佇列的資源限制。也就是說,如果集群有空閒的資源,而有些佇列需要的資源超出了分給他的限制,這些空閒的資源將被分配給這些佇列,這樣就保證了資源的可**性和彈性,從而防止了人工孤島,幫助實現資源的優化利用。

多使用者

系列的綜合設定可以防止單一的應用或使用者占用佇列或集群的全部資源,防止集群被單使用者過度使用,從而保證了多使用者可以共同使用集群

可操作性

runtimeconfiguration:一些設定可以在執行時進行配置,例如資源分配的容量,                     acl

基於資源的排程

支援資源密集型的應用,應用可以被指定分配超出預設設定的更多的資源

相同點

均支援多使用者多佇列,即:適用於多使用者共享集群的應用環境

單個佇列均支援優先順序和fifo排程方式

均支援資源共享,即某個queue中的資源有剩餘時,可共享給其他缺資源的queue

異同點

核心排程策略不同。 計算能力排程器的排程策略是,先選擇資源利用率低的queue,然後在queue中同時考慮fifo和memory constraint因素;而公平排程器僅考慮公平,而公平是通過作業缺額體現的,排程器每次選擇缺額最大的job(queue的資源量,job優先順序等僅用於計算作業缺額)。

記憶體約束。計算能力排程器排程job時會考慮作業的記憶體限制,為了滿足某些特殊job的特殊記憶體需求,可能會為該job分配多個slot;而公平排程器對這種特殊的job無能為力,只能殺掉這種task。

單一使用者環境下,fair只能共享乙個池,capacity可以多佇列

Hadoop資源排程器

目前,hadoop作業排程器主要有三種 fifo capacity scheduler和fair scheduler。hadoop2.7.2預設的資源排程器是capacity scheduler。具體設定詳見 yarn default.xml檔案 the class to use as the re...

Hadoop資源排程器

目前,hadoop作業排程器主要有三種 fifo scheduler capacity scheduler和fair scheduler。hadoop2.7.2預設的資源排程器是capacity scheduler。具體設定詳見 yarn site.xml檔案 the class to use as...

Hadoop資源感知排程器

1.什麼是hadoop資源感知排程器?hadoop資源感知排程器是指排程器根據各個tasktracker當前資源負載情況 cpu,記憶體,網路io等 動態決定將新任務排程給哪個節點處理。2.hadoop資源感知排程器的必要性和重要性 當前絕大多數hadoop排程器是按照slot多少進行排程。在had...