? ? ? ? ?hadoop支持多用戶環境,在生產環境中,往往一個大的hadoop集群,供多個應用如Hive,Mahout等之類的使用。在多用戶環境下,有的用戶提交的工作量很大、很頻繁,而有的很少,還有的優先級很高,那么如何保證“按需”來為各個用戶分配資源(內存、CPU
? ? ? ? ?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的時間先后順序執行
? ? ? ? ? ? ? ? ? ? ? ? ? ?無需額外配置
? ? ? ? ? ? ? ? ? ? 缺點:
? ? ? ? ? ? ? ? ? ? ? ? ? ?完全忽略不同作業的需求差異
? ? ? ? ? ? ? ? ? ??
?
?
? ? ? ? ? ? ? ? ? 2、Fair Scheduler?
? ? ? ? ? ? ? ? ? 公平分享調度器:在多個用戶之間共享集群資源。它按資源池來組織作業,并把資源按時間公平地分到這些資源池里。在每一個資源池內,會使用公平共享地方法在運行作業之間共享容量。
?
? ? ? ? ? ? ? ? ? 特征:
? ? ? ? ? ? ? ? ? ? ? ? ? 支持多用戶(默認一個用戶對一個池,依賴于Linux多用戶環境)
? ? ? ? ? ? ? ? ? ? ? ? ? 資源公平共享(公平共享量由優先級決定,同優先級按FIFO調度)
? ? ? ? ? ? ? ? ? ? ? ? ? 保證最小共享量
? ? ? ? ? ? ? ? ? ? ? ? ? 支持時間片搶占
? ? ? ? ? ? ? ? ? ? ? ? ? 限制作業并發量,以防止中間數據塞滿磁盤
? ? ? ? ? ? ? ? ? ? ? ? ??
?
?
? ? ? ? ? ? ? ? ? ?3、Capacity Scheduler?
? ? ? ? ? ? ? ? ? ? ?容量調度器:使多個用戶可以安全地共享一個大的集群,應用程序可以在容量限度下獲取到需要的資源,最大化集群的吞吐率和利用率。它按隊列來組織作業,每個隊列會配置一定比例的計算資源,且所有提交到隊列中的作業共享該隊列中的資源。
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ?特征:
? ? ? ? ? ? ? ? ? ? ? ? ? ? 層次化的隊列
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 層次化的隊列支持在一個組織內子隊列的優先共享資源,從而提供了更多的控制和預
測的能力,不支持搶占
? ? ? ? ? ? ? ? ? ? ? ? ? ? 資源容量保證
? ? ? ? ? ? ? ? ? ? ? ? ? ?隊列實現了一種資源的劃分,所有的應用都會被指定到特定的隊列,這些應用所能使用到的資源受到隊列所擁有資源的限制
? ? ? ? ? ? ? ? ? ? ? ? ? ? 安全性?
? ? ? ? ? ? ? ? ? ? ? ? ? ?每一個隊列都有一個嚴格的ACL來控制那些用戶可以訪問隊列,并且有一個safe-guard來保證用戶不能夠看或者修改其他用戶的應用,而且每個隊列或系統都可以設置管理員角色。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? 彈性
? ? ? ? ? ? ? ? ? ? ? ? ??空閑的資源可以分配給任何隊列,這樣可能超出隊列的資源限制。也就是說,如果集群有空閑的資源,而有些隊列需要的資源超出了分給他的限制,這些空閑的資源將被分配給這些隊列,這樣就保證了資源的可預測性和彈性,從而防止了人工孤島,幫助實現資源的優化利用。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 多用戶
? ? ? ? ? ? ? ? ? ? ? ? ? ?系列的綜合設置可以防止單一的應用或用戶占用隊列或集群的全部資源,防止集群被單用戶過度使用,從而保證了多用戶可以共同使用集群
? ? ? ? ? ? ? ? ? ? ? ? ? ? 可操作性
? ? ? ? ? ? ? ? ? ? ? ? ? ?RuntimeConfiguration:一些設置可以在運行時進行配置,例如資源分配的容量, ? ? ? ? ? ? ? ? ? ? ACL
? ? ? ? ? ? ? ? ? ? ? ? ? ? 基于資源的調度?
? ? ? ? ? ? ? ? ? ? ? ? ? ? 支持資源密集型的應用,應用可以被指定分配超出缺省設置的更多的資源
?
?
? ? ? ? ? ? ?Fair VS Capacity
?
? ? ? ? ? ? ? 相同點
? ? ? ? ? ? ? ? ? ? 均支持多用戶多隊列,即:適用于多用戶共享集群的應用環境
? ? ? ? ? ? ? ? ? ? 單個隊列均支持優先級和FIFO調度方式
? ? ? ? ? ? ? ? ? ? 均支持資源共享,即某個queue中的資源有剩余時,可共享給其他缺資源的queue
? ? ? ? ? ? ? 異同點
? ? ? ? ? ? ? ? ? ? ?核心調度策略不同。 計算能力調度器的調度策略是,先選擇資源利用率低的queue,然后在queue中同時考慮FIFO和memory constraint因素;而公平調度器僅考慮公平,而公平是通過作業缺額體現的,調度器每次選擇缺額最大的job(queue的資源量,job優先級等僅用于計算作業缺額)。
? ? ? ? ? ? ? ? ? ? ?內存約束。計算能力調度器調度job時會考慮作業的內存限制,為了滿足某些特殊job的特殊內存需求,可能會為該job分配多個slot;而公平調度器對這種特殊的job無能為力,只能殺掉這種task。
單一用戶環境下,Fair只能共享一個池,Capacity可以多隊列
?
原文地址:hadoop資源調度器, 感謝原作者分享。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com