????????隨著數(shù)據(jù)量的指數(shù)型增長悦即,以及Hadoop生態(tài)系統(tǒng)的不斷完善彼宠,越來越多的公司選擇Hadoop作為數(shù)據(jù)倉庫浴捆,并在大數(shù)據(jù)集群上架設了越來越多的相對復雜的應用場景需求。在公司內部烙心,多用戶業(yè)務應用架設在同一個Hadoop集群上膜廊,容易出現(xiàn)數(shù)據(jù)與集群資源混亂無序的狀態(tài),需要建立統(tǒng)一的調度平臺實現(xiàn)數(shù)據(jù)統(tǒng)一管理淫茵、任務合理化調度爪瓜,集群資源按需分配;
????????從集群使用角度延申匙瘪,Hadoop大數(shù)據(jù)平臺多租戶管理實現(xiàn)在以下幾點實現(xiàn):
一铆铆、集群使用認證:
? ? ? ?不能隨便某個用戶就可以直接登錄大數(shù)據(jù)平臺,必須有一個開關辆苔,將大數(shù)據(jù)開發(fā)平臺整體隔絕算灸。目前絕大部分公司使用Kerberos組件進行認證管理。
? ? ? ?大致的做法為驻啤,大數(shù)據(jù)平臺設置某公共堡壘機(大業(yè)務應用系統(tǒng)可以使用專用堡壘機)菲驴,多租戶登陸堡壘機后,通過Kerberos認證成功后骑冗,才能使用大數(shù)據(jù)平臺赊瞬,并且設置失效時間。Kerberos可以將認證的密鑰在集群部署時事先放到可靠的節(jié)點上贼涩。集群運行時巧涧,集群內的節(jié)點使用密鑰得到認證。只有被認證過節(jié)點才能正常使用遥倦。企圖冒充的節(jié)點由于沒有事先得到的密鑰信息谤绳,無法與集群內部的節(jié)點通信。
二袒哥、數(shù)據(jù)庫管理
? ? ? ?多租戶模式下缩筛,數(shù)據(jù)安全是最重要的問題,集群需要將不同用戶的數(shù)據(jù)統(tǒng)一管理運維堡称,對不同的數(shù)據(jù)進行權限隔離瞎抛。Hadoop集群數(shù)據(jù)存儲主要依賴HDFS,主要從以下幾個方面進行多租戶下數(shù)據(jù)層的管理:
(1)首先內部應制定并嚴格遵守hadoop集群數(shù)據(jù)存放管理規(guī)則却紧。
? ? ? ? ?示例一存放規(guī)則:第一級別目錄:(公共資源桐臊、不同用戶)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第二級別目錄:(數(shù)據(jù)類型)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第三級別目錄:(時間)
? ? ? ? 規(guī)則的指定需要嚴加執(zhí)行胎撤。
? ? ? ? ? ?同時為了保證對各用戶獨立數(shù)據(jù)資源量的可控,需要對其設置數(shù)據(jù)存儲的上線(50%三級断凶;75%二級伤提;90%一級)可在集群監(jiān)控中進行每日調度監(jiān)控。
(2)目錄權限控制:
? ? ? ?在數(shù)據(jù)資產價值日益凸顯懒浮,以及數(shù)據(jù)安全日益重要的情況下飘弧,應嚴格控制數(shù)據(jù)獲取權限,特別在某些金融行業(yè)砚著,客戶的隱私尤為重要。
????????多租戶下痴昧,hadoop生態(tài)系統(tǒng)有Ranger稽穆、Sentry兩個組件。大致功能一樣赶撰,可以對Hive舌镶、Hbase細粒度級、基于角色的授權豪娜。最近在搞ranger餐胀,ranger(HD出品)支持的組件相對較多。同時Cloudra公司在研發(fā)一種更好的權限控制組件瘤载。
(3)數(shù)據(jù)庫使用權限控制:
? ? ? ?hadoop生態(tài)圈使用加多的數(shù)據(jù)庫主要有HBase否灾、Hive等,大致都支持多schema分離設置鸣奔∧迹可以通過數(shù)據(jù)庫分區(qū)與存放目錄權限結合起來控制數(shù)據(jù)訪問。
三挎狸、資源管理
(1)資源隔離
? ? ? 在操作系統(tǒng)層面和服務層面(YARN)都可以做資源隔離扣汪。
? ? ? (1.1)服務層面, Hadoop資源池(pool)锨匆,或者作業(yè)池的分配主要依賴yarn組件(相對較多的計算引擎都支持yarn管理)崭别。 每個pool里有一定量的資源(管理員配置),每個用戶屬于某個pool恐锣,其提交的作業(yè)可使用這個pool中的資源茅主。資源的分配主要是依據(jù)CPU虛擬核數(shù)和內存量。另外個別組件有單獨的多租戶管理侥蒙,但是在一個統(tǒng)一的大數(shù)據(jù)平臺上暗膜,還是用yarn統(tǒng)計管理的好。
? ? ?(1.2)操作系統(tǒng)層Linux用CGROUPS做靜態(tài)資源隔離鞭衩。2006年 Google工程師在創(chuàng)建 CGROUPS這個特性的時候学搜,本來的名字不是 CGROUPS娃善,而是進程容器,這也是這個特性的本意瑞佩,就是在 Linux內核級別創(chuàng)建一個容器的概念聚磺,使得這些進程只競爭容器內部的資源。容器內的應用不會收到容器外的應用對于操作系統(tǒng)資源炬丸,CPU瘫寝、內存、網(wǎng)絡 IO稠炬、句柄的侵占焕阿,運行出現(xiàn)問題。CGROUPS同時也是 Docker的底層技術首启,Docker在 CGROUPS的基礎之上暮屡,實現(xiàn)了更加廣泛和易用的接口,和建立的一個廣泛的生態(tài)毅桃。個別公司的大數(shù)據(jù)平臺已經實現(xiàn)Docker底層資源隔離(星環(huán)的TDH)
(2)資源調度
????????在 Hadoop集群中 褒纲,由于資源是有限的,多租戶環(huán)境下會有很 多作業(yè)在同時運行钥飞,因此莺掠,資源的合理 分配和回收對多租戶來講相 當重要。多租戶環(huán)境通常用到的是公平調度策略读宙。因為這種高度既能讓長時間運行的作業(yè)及時完成彻秆,也能并發(fā)的運行占用資源少的作業(yè) 。
????????還是主要使用yarn的公平調度论悴,這是一種賦予作業(yè)(job)資源的方法掖棉,它的目的是讓所有的作業(yè)隨著時間的推移,都能平均的獲取等同的共享資源膀估。當單獨一個作業(yè)在運行時幔亥,它將使用整個集群。當有其它作業(yè)被提交上來時察纯,系統(tǒng)會將任務(task)空閑時間片(slot)賦給這些新的作業(yè)帕棉,以使得每一個作業(yè)都大概獲取到等量的CPU時間。
四饼记、系統(tǒng)接入管理
外部用用系統(tǒng)應用工程全部部署在堡壘機專有用戶下的目錄中香伴,同時只將部署在堡壘機上的應用作為后臺處理使用。
????????通過以上設置具则,一個大數(shù)據(jù)平臺可以從三個視角實現(xiàn)多用戶隔離:
????????一是邏輯隔離即纲。
????????從租戶的角度出發(fā),每個租戶都有自己獨立的邏輯模型博肋,擁有自己獨立的資源以及基于相同的邏輯模型實現(xiàn)的統(tǒng)一授權模型低斋。
????????二是資源隔離蜂厅。
????????對于不同租戶的任務,在集群運行時膊畴,能夠實現(xiàn)統(tǒng)一的掘猿、全局最優(yōu)的任務調度能力以及資源隔離能力。
????????三是運行隔離機制唇跨。
????????用戶任務請求運行在yarn調度上稠通,相互無影響,各進行隔離买猖。
目前在工作中才開始使用ranger作為目錄權限控制改橘,后續(xù)待將以下整體實現(xiàn)下,然后將各個部署再總結下政勃。好的總結是成功的開始唧龄,Good Luck。