IBM BigInsights 采用 Capacity Scheduler 作為多租戶的資源管理,可以通過基于瀏覽器的 Ambari 控制臺進行層次化隊列,以確保資源的一個組織的子隊列之間共享其它隊列被允許的使用資源。
IBM BigInsights 還提供和 IBM Platform Symphony 的集成,支持 Symphony Multi-dimensional Scheduling 多維度的資源調(diào)度和分配。多維調(diào)度策略通過實現(xiàn)更細粒度的資源分配與不同的資源需求的應(yīng)用提高了資源利用率。它可以容納多維資源分配,其中每個分配可以要求不同量的物理資源類型,包括但不限于 CPU,內(nèi)核,存儲器和磁盤的數(shù)目。多維調(diào)度的其他優(yōu)點包括:
在一個資源計劃中的多個資源組
命名資源的所有權(quán)(節(jié)點的所有權(quán),包括部分所有權(quán))
按優(yōu)先級以及比例份額的資源共享
回收資源和資源借用寬限期
一個實際的例子
下面我們通過一個動手練習(xí)來描述如何在 IBM BigInsights 上采用 Capacity Scheduler 實現(xiàn)多租戶的。
管理的界面
首先登陸到 IBM BigInsights 的管理控制臺 Ambari,管理員的缺省用戶名和密碼是 admin / admin。
圖 4. 登陸到管理控制臺 Ambari


成功登陸以后,會進入到集群儀表盤中,可以看到整個 Hadoop 集群的狀況。選擇 YARN 組件,可以在 Summary 標(biāo)簽頁中看到 IBM BigInsights 缺省只有一個隊列。
圖 5. YARN 的配置管理


展開 Quick Links 點擊 ResourceManager UI 后進入到 ResourceManager 的管理界面。選擇 Scheduler 視圖可以查看到 Capacity Scheduler 的隊列情況:只有一個缺省隊列。
圖 6. ResourceManager 的管理界面


IBM BigInsights 提供圖形化的 Capacity Scheduler 配置界面,通過 圖 4. YARN 的配置管理 的右上角進入 YARN Queue Manager 的管理界面。這個管理界面在 IBM BigInsights 4.1 版本是缺省就有的,用戶也可以按照 IBM BigInsights 信息中心 在 Ambari 管理界面上自行創(chuàng)建 Capacity-Scheduler 視圖。
圖 7. Capacity-Scheduler 的視圖


IBM BigInsights 通過該視圖配置的 Capacity Scheduler 會自動修改 Hadoop 集群的 capacity-scheduler.xml 配置文件,讓系統(tǒng)管理員關(guān)注隊列本身,而不需要修改底層的配置文件,從而簡化整個集群的多租戶管理。清單 1列出了缺省的隊列配置。
清單 1. Capacity Scheduler 缺省的配置
yarn.scheduler.capacity.default.minimum-user-limit-percent=100
yarn.scheduler.capacity.maximum-am-resource-percent=0.2
yarn.scheduler.capacity.maximum-applications=10000
yarn.scheduler.capacity.node-locality-delay=40
yarn.scheduler.capacity.root.accessible-node-labels=*
yarn.scheduler.capacity.root.acl_administer_queue=*
yarn.scheduler.capacity.root.capacity=100
yarn.scheduler.capacity.root.default.acl_administer_jobs=*
yarn.scheduler.capacity.root.default.acl_submit_applications=*
yarn.scheduler.capacity.root.default.capacity=100
yarn.scheduler.capacity.root.default.maximum-capacity=100
yarn.scheduler.capacity.root.default.state=RUNNING
yarn.scheduler.capacity.root.default.user-limit-factor=1
yarn.scheduler.capacity.root.queues=default
隊列的設(shè)置
例如一個公司有多個部門:工程,支持和市場。工程部有兩個子團隊:開發(fā)和質(zhì)量。支持部有兩個子團隊:培訓(xùn)和服務(wù)。市場部有兩個子團隊:銷售和廣告。下圖顯示了這個例子的隊列層次: