????????隨著數據量的指數型增長,以及Hadoop生態系統的不斷完善,越來越多的公司選擇Hadoop作為數據倉庫,并在大數據集群上架設了越來越多的相對復雜的應用場景需求。在公司內部,多用戶業務應用架設在同一個Hadoop集群上,容易出現數據與集群資源混亂無序的狀態,需要建立統一的調度平臺實現數據統一管理、任務合理化調度,集群資源按需分配;
????????從集群使用角度延申,Hadoop大數據平臺多租戶管理實現在以下幾點實現:
一、集群使用認證:
? ? ? ?不能隨便某個用戶就可以直接登錄大數據平臺,必須有一個開關,將大數據開發平臺整體隔絕。目前絕大部分公司使用Kerberos組件進行認證管理。
? ? ? ?大致的做法為,大數據平臺設置某公共堡壘機(大業務應用系統可以使用專用堡壘機),多租戶登陸堡壘機后,通過Kerberos認證成功后,才能使用大數據平臺,并且設置失效時間。Kerberos可以將認證的密鑰在集群部署時事先放到可靠的節點上。集群運行時,集群內的節點使用密鑰得到認證。只有被認證過節點才能正常使用。企圖冒充的節點由于沒有事先得到的密鑰信息,無法與集群內部的節點通信。
二、數據庫管理
? ? ? ?多租戶模式下,數據安全是最重要的問題,集群需要將不同用戶的數據統一管理運維,對不同的數據進行權限隔離。Hadoop集群數據存儲主要依賴HDFS,主要從以下幾個方面進行多租戶下數據層的管理:
(1)首先內部應制定并嚴格遵守hadoop集群數據存放管理規則。
? ? ? ? ?示例一存放規則:第一級別目錄:(公共資源、不同用戶)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第二級別目錄:(數據類型)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第三級別目錄:(時間)
? ? ? ? 規則的指定需要嚴加執行。
? ? ? ? ? ?同時為了保證對各用戶獨立數據資源量的可控,需要對其設置數據存儲的上線(50%三級;75%二級;90%一級)可在集群監控中進行每日調度監控。
(2)目錄權限控制:
? ? ? ?在數據資產價值日益凸顯,以及數據安全日益重要的情況下,應嚴格控制數據獲取權限,特別在某些金融行業,客戶的隱私尤為重要。
????????多租戶下,hadoop生態系統有Ranger、Sentry兩個組件。大致功能一樣,可以對Hive、Hbase細粒度級、基于角色的授權。最近在搞ranger,ranger(HD出品)支持的組件相對較多。同時Cloudra公司在研發一種更好的權限控制組件。
(3)數據庫使用權限控制:
? ? ? ?hadoop生態圈使用加多的數據庫主要有HBase、Hive等,大致都支持多schema分離設置。可以通過數據庫分區與存放目錄權限結合起來控制數據訪問。
三、資源管理
(1)資源隔離
? ? ? 在操作系統層面和服務層面(YARN)都可以做資源隔離。
? ? ? (1.1)服務層面, Hadoop資源池(pool),或者作業池的分配主要依賴yarn組件(相對較多的計算引擎都支持yarn管理)。 每個pool里有一定量的資源(管理員配置),每個用戶屬于某個pool,其提交的作業可使用這個pool中的資源。資源的分配主要是依據CPU虛擬核數和內存量。另外個別組件有單獨的多租戶管理,但是在一個統一的大數據平臺上,還是用yarn統計管理的好。
? ? ?(1.2)操作系統層Linux用CGROUPS做靜態資源隔離。2006年 Google工程師在創建 CGROUPS這個特性的時候,本來的名字不是 CGROUPS,而是進程容器,這也是這個特性的本意,就是在 Linux內核級別創建一個容器的概念,使得這些進程只競爭容器內部的資源。容器內的應用不會收到容器外的應用對于操作系統資源,CPU、內存、網絡 IO、句柄的侵占,運行出現問題。CGROUPS同時也是 Docker的底層技術,Docker在 CGROUPS的基礎之上,實現了更加廣泛和易用的接口,和建立的一個廣泛的生態。個別公司的大數據平臺已經實現Docker底層資源隔離(星環的TDH)
(2)資源調度
????????在 Hadoop集群中 ,由于資源是有限的,多租戶環境下會有很 多作業在同時運行,因此,資源的合理 分配和回收對多租戶來講相 當重要。多租戶環境通常用到的是公平調度策略。因為這種高度既能讓長時間運行的作業及時完成,也能并發的運行占用資源少的作業 。
????????還是主要使用yarn的公平調度,這是一種賦予作業(job)資源的方法,它的目的是讓所有的作業隨著時間的推移,都能平均的獲取等同的共享資源。當單獨一個作業在運行時,它將使用整個集群。當有其它作業被提交上來時,系統會將任務(task)空閑時間片(slot)賦給這些新的作業,以使得每一個作業都大概獲取到等量的CPU時間。
四、系統接入管理
外部用用系統應用工程全部部署在堡壘機專有用戶下的目錄中,同時只將部署在堡壘機上的應用作為后臺處理使用。
????????通過以上設置,一個大數據平臺可以從三個視角實現多用戶隔離:
????????一是邏輯隔離。
????????從租戶的角度出發,每個租戶都有自己獨立的邏輯模型,擁有自己獨立的資源以及基于相同的邏輯模型實現的統一授權模型。
????????二是資源隔離。
????????對于不同租戶的任務,在集群運行時,能夠實現統一的、全局最優的任務調度能力以及資源隔離能力。
????????三是運行隔離機制。
????????用戶任務請求運行在yarn調度上,相互無影響,各進行隔離。
目前在工作中才開始使用ranger作為目錄權限控制,后續待將以下整體實現下,然后將各個部署再總結下。好的總結是成功的開始,Good Luck。