多租戶管理相關概念
傳統(tǒng)上企業(yè)內每個部門都有它自己的私有集群滿足計算資源,這通常會導致平均利用率較差,也有管理多個獨立的集群的負擔。
Hadoop 的多租戶 Multi-tenancy 就是說一個 Hadoop 集群對多部門多用戶進行服務,每一個用戶被稱之為租戶 tenant。多租戶允許企業(yè)客戶用統(tǒng)一的平臺對同一份數(shù)據(jù)來進行批處理、交互訪問和實時處理,從而提高企業(yè)對 Hadoop 集群的利用率。
由于 Hadoop 集群的組件和服務眾多,如 Spark、HBase、Hive、MapReduce 等,而且企業(yè)客戶不同的部門和用戶都有不同的任務運行,Hadoop 集群的多租戶能力被設計為允許共享一個集群,同時給予每一個租戶計算能力的保證。
Hadoop YARN 的核心服務 Resource manager 負責分配和回收資源。在企業(yè)級 Hadoop 集群中,由于資源是有限的,多租戶環(huán)境會有很多作業(yè)在同時運行,因此資源分配和回收的是支持多租戶的重要內容,這部分機制由 Resource Manager 插件式的全局調度器來管理和控制集群所有的容器(資源)。
根據(jù)需求和資源可用性不同,分為 FIFO Scheduler、Capacity Scheduler 和 Fair Scheduler 等不同的策略實現(xiàn)。多租戶的環(huán)境通常會使用 Capacity Scheduler 或者 Fair Scheduler,因為這兩種調度不僅能讓長時間運行的作業(yè)及時完成,同時能讓并發(fā)運行小的即席查詢得到快速地響應。
FIFO Scheduler
最簡單的調度器 FIFO 顧名思義,就是 First In First Out,按照先進先出的方式處理應用。只有一個隊列可提交應用,所有用戶提交到這個隊列。FIFO scheduler 不需要配置,但它不適合多租戶的場合,因為大型應用程序將用完集群的所有資源,其它應用程序都必須等待。
圖 1. FIFO Scheduler


Fair Scheduler
公平調度器 Fair Scheduler 最初是由 Facebook 開發(fā)設計使得 Hadoop 應用能夠被多用戶公平地共享整個集群資源,現(xiàn)被 Cloudera CDH 所采用。
Fair Scheduler 不需要保留集群的資源,因為它會動態(tài)在所有正在運行的作業(yè)之間平衡資源。當?shù)谝粋€大作業(yè)開始后,如果這是唯一的作業(yè),它會占據(jù)集群的所有資源。接著第二個小作業(yè)啟動,F(xiàn)air Scheduler 會讓每個作業(yè)占據(jù)一半的集群資源以達到公平的資源分配。
在第二個小作業(yè)啟動和分配到資源之間有延時,因為它必須等待第一個大作業(yè)資源釋放。Fair Scheduler 是搶占式調度,如果在一段時間還沒有收到公平的資源分配,調度器會關閉第一個大作業(yè)超出資源的部分來釋放資源。
當?shù)诙€小作業(yè)完成,不再需要的資源之后,第一個大作業(yè)再次使用完整的集群能力。Fair Scheduler 既保證了集群的高利用率和及時的小型作業(yè)完成。
圖 2. Fair Scheduler


Capacity Scheduler
容量調度器 Capacity Scheduler 最初是由 Yahoo 最初開發(fā)設計使得 Hadoop 應用能夠被多用戶使用,且最大化整個集群資源的吞吐量,現(xiàn)被 IBM Biginsights 和 Hortonworks HDP 所采用。
Capacity Scheduler 被設計為允許應用程序在一個可預見的和簡單的方式共享集群資源,即"作業(yè)隊列"。Capacity Scheduler 是根據(jù)租戶的需要和要求把現(xiàn)有的資源分配給運行的應用程序。Capacity Scheduler 同時允許應用程序訪問還沒有被使用的資源,以確保隊列之間共享其它隊列被允許的使用資源。管理員可以控制每個隊列的容量,Capacity Scheduler 負責把作業(yè)提交到隊列中。
圖 3. Capacity Scheduler


IBM BigInsights 的多租戶管理
IBM Biginsights 是業(yè)界領先的 Hadoop 企業(yè)級發(fā)行版本,在世界著名 IT 行業(yè)獨立研究公司 Forrester 從 2012 年到 2016 年發(fā)布的三次 Hadoop 解決方案的評測報告中,IBM BigInsights 一直處于領導者位置。IBM BigInsights 以 Apache Hadoop 及其相關開源項目作為核心組件,并在 Hadoop 開源框架的基礎上進行了大量的企業(yè)化增強。