国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種Hadoop 集群限量使用模型

2016-06-29 19:38汪健蔡麗
電腦知識(shí)與技術(shù) 2016年13期
關(guān)鍵詞:訪問控制

汪健 蔡麗

摘要:Hadoop是當(dāng)今主要的云平臺(tái)之一,采用Kerberos作為身份認(rèn)證機(jī)制實(shí)現(xiàn)單點(diǎn)登錄,底層以SLA實(shí)現(xiàn)訪問授權(quán)。該模型可提供基本的安全訪問控制,但無法監(jiān)控用戶通過認(rèn)證授權(quán)后的行為。該文提出了一種基于訪問統(tǒng)計(jì)的控制模型,以限制用戶不能過量占用Hadoop集群計(jì)算能力。

關(guān)鍵詞:Hadoop;訪問控制;限量使用;LDAP

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)13-0047-02

隨著當(dāng)今社會(huì)的發(fā)展,所需要處理的信息量越來越大,Hadoop[1]作為一種高可靠、高可用、低成本的集群環(huán)境,已經(jīng)逐漸成為并行處理事實(shí)上的標(biāo)準(zhǔn)。致力于高效處理數(shù)據(jù)的初衷,Hadoop的開發(fā)及維護(hù)者最初并未將安全問題置于第一位,Hadoop集群管理者將內(nèi)網(wǎng)和所有主機(jī)置于一個(gè)絕對(duì)安全的封閉環(huán)境,所有作業(yè)只能由管理員運(yùn)行,也就是說,基本將Hadoop集群視為與外界隔絕的一臺(tái)“超級(jí)計(jì)算機(jī)”。隨著Hadoop的發(fā)展,各種新的應(yīng)用逐漸出現(xiàn)于Hadoop生態(tài)圈中,如Hive、Storm、Hbase等,而不僅僅只限于最初的HDFS和MapReduce[2],單個(gè)管理員難以管理越來越多的應(yīng)用;同時(shí)作為一種稀缺資源,開放Hadoop集群的計(jì)算能力給多個(gè)部門或用戶使用也逐漸成為必然。

然而,開放Hadoop集群也同時(shí)帶來了安全風(fēng)險(xiǎn)[3],因此Hadoop在身份認(rèn)證方面,采用了Simple(Linux用戶/組身份認(rèn)證)和Kerberos(單點(diǎn)登錄)兩種方式[4]。在身份認(rèn)證通過后,對(duì)于服務(wù)的訪問可打開SLA(Service Level Authorization)開關(guān)以控制哪些用戶可以訪問某種服務(wù)[5]。Hadoop提供了基本的認(rèn)證及授權(quán)保護(hù),但并未對(duì)用戶通過授權(quán)之后的行為進(jìn)行限制,一個(gè)“貪心”甚至是惡意的用戶可能會(huì)提交大量的作業(yè)或是HDFS操作,從而擠占寶貴的集群資源,使其他用戶不能公平地來分享集群。Hadoop YARN中的Fair Scheduler作業(yè)調(diào)度機(jī)制[6]盡可能保證當(dāng)前每個(gè)用戶的作業(yè)都獲得等量的資源份額,可在一定程度上解決該問題,但不能從根本上避免此類問題。因此,我們提出了一種基于“消費(fèi)”的權(quán)限控制手段,在對(duì)Hadoop底層機(jī)制僅作少量修改、不影響集群運(yùn)行效率的前提下,統(tǒng)計(jì)每個(gè)用戶在使用集群時(shí)耗費(fèi)的計(jì)算資源,從而限制每個(gè)用戶不能過度的使用集群資源。

1 Hadoop現(xiàn)有的認(rèn)證授權(quán)過程

對(duì)于開放共享的Hadoop集群,Simple認(rèn)證方式太過簡(jiǎn)單,無法起到保護(hù)作用,必須使用Kerberos單點(diǎn)登錄。Hadoop中基于Kerberos認(rèn)證的訪問過程[7]如圖1所示。

1)客戶端訪問Hadoop服務(wù)前,先向Kerberos KDC(Key Distribution Center,密鑰分發(fā)中心)驗(yàn)證身份。

2)若身份認(rèn)證通過,KDC返回一個(gè)TGT票據(jù)(Ticket Granting Ticket),單點(diǎn)登錄成功??蛻舳私窈罂沙衷撈睋?jù)向其他服務(wù)器表明身份并請(qǐng)求服務(wù)。在Hadoop集群中,客戶端接下來可向NameNode或ResourceMananger發(fā)出服務(wù)請(qǐng)求。

先看一下對(duì)HDFS的訪問流程。

3a. 客戶端持TGT與NameNode進(jìn)行通信,雙方互相證明身份,這里雙方均需與KDC交互,該過程不做詳述。

4a. 如果每次驗(yàn)證都使用TGT,開銷較大,因此NameNode第一次驗(yàn)證客戶端后,便向向客戶端分發(fā)一個(gè)NameNodeDelegation Token,以后客戶端就可以使用開銷較小的Token來證明身份。

5a. 客戶端接著使用Delegation Token向NameNode請(qǐng)求服務(wù),例如需要對(duì)HDFS中某個(gè)文件進(jìn)行讀/寫,向NameNode發(fā)出詢問。

6a. NameNode根據(jù)MetaData映射表得出文件信息,包括文件對(duì)應(yīng)的Block塊以及Block塊對(duì)應(yīng)的DataNode信息等,并生成一個(gè)Block Access Token分發(fā)給用戶。

7a. 用戶持Block Access Token向相應(yīng)的DataNode請(qǐng)求服務(wù),DataNode執(zhí)行讀寫請(qǐng)求并返回結(jié)果。

客戶端提交/查詢/中止作業(yè)需要與ResourceManager進(jìn)行交互,流程與上類似。

3b. 客戶端持TGT與ResourceManager進(jìn)行通信,雙方互相證明身份。

4b. ResourceManager向客戶端分發(fā)一個(gè)ResourceManager Delegation Token。

5b. 客戶端使用Delegation Token向ResourceManager發(fā)起作業(yè)請(qǐng)求,ResourceManager作為資源調(diào)度器,分配一個(gè)適當(dāng)?shù)腃ontainer運(yùn)行該作業(yè)的ApplicationMaster,再由ApplicationMaster向ResourceManager請(qǐng)求新的Container以運(yùn)行子任務(wù)??蛻舳酥慌cResourceManager進(jìn)行交互。

Hadoop中提供了最基本的系統(tǒng)級(jí)權(quán)限控制SLA,SLA通過設(shè)定權(quán)限控制表ACL的方式對(duì)Client-DFS、Client-Datanode、Datanode-Namenode等之間的訪問進(jìn)行控制。SLA可通過core-site.xml文件中的hadoop.security.authorization開關(guān)打開,并在hadoop-policy.xml文件中設(shè)置權(quán)限??蛻舳嗽趩吸c(diǎn)登錄并獲取Delegation Token后可以發(fā)起請(qǐng)求,ResourceManager/NameNode檢查ACL列表核實(shí)用戶身份是否有請(qǐng)求權(quán)限,通過后再調(diào)用相關(guān)行為函數(shù)。在SLA之上,各種應(yīng)用可具備進(jìn)一步的訪問控制,例如HDFS提供了類似于POSIX的文件和目錄權(quán)限管理DFS Permission;MapReduce可打開Access Control on Job Queues開關(guān)以配置多個(gè)隊(duì)列以及每個(gè)隊(duì)列的的權(quán)限;HBase可在表上對(duì)用戶行為(RWXCA五種權(quán)限)進(jìn)行授權(quán)等等。

2 基于訪問統(tǒng)計(jì)的增強(qiáng)控制模型

為了限制用戶對(duì)Hadoop集群的過量使用,我們提出了一種對(duì)Hadoop中現(xiàn)有訪問控制進(jìn)行增強(qiáng)的模型,如圖2所示。

在該模型中,我們引入了用戶可用余額(User AvailableQuota,UAQ)的概念,并在集群中增加一個(gè)LDAP服務(wù)器來存儲(chǔ)所有用戶的UAQ和其他相關(guān)屬性。與Hadoop中的其他節(jié)點(diǎn)一樣,LDAP服務(wù)器也是通過keytab文件預(yù)先向KDC注冊(cè)身份。集群中其他服務(wù)器通過基于Kerberos身份驗(yàn)證的SASL-GSSAPI接口來訪問LDAP目錄服務(wù)[8]。

如前述可知,客戶端發(fā)起請(qǐng)求時(shí),ResourceManager/NameNode先查詢ACL列表,若通過,再調(diào)用相應(yīng)處理函數(shù)。在這中間我們插入一個(gè)判定,當(dāng)ACL權(quán)限審核通過后,根據(jù)請(qǐng)求的類型,可能還要向LDAP服務(wù)器查詢并取回用戶UAQ相關(guān)信息,若LDAP不存在該用戶或UAQ不足,則拒絕此請(qǐng)求。有些請(qǐng)求不需要訪問LDAP來取得權(quán)限,例如作業(yè)的殺死和查詢。

ResourceManager/NameNode除了檢查用戶UAQ外,還要承擔(dān)收集用戶所消耗的計(jì)算資源數(shù)量工作,并適時(shí)地將該信息發(fā)送到LDAP服務(wù)器,由LDAP服務(wù)器負(fù)責(zé)更新用戶UAQ。NameNode的收集工作如圖3所示。

在前面分析可知,客戶端先向NameNode發(fā)起文件讀/寫請(qǐng)求,NameNode從MetaData映射表中查詢?cè)撐募植嫉腂lock塊和所在的DataNode,生成Block Access Token分發(fā)給客戶端??蛻舳嗽诿看巫x/寫DataNode上的block時(shí),DataNode在UserGroupInformation上下文中可取得用戶信息,將此次所做操作和塊號(hào)存入文件塊訪問記錄BlockAccessRecord={User,Request,BlockId}。由于每個(gè)DataNode會(huì)周期地向NameNode發(fā)送心跳信息(Heartbeat),因此我們?cè)谛奶畔⒅?,將這段周期內(nèi)記錄下的所有用戶的文件塊訪問記錄表List順帶發(fā)送到NameNode。NameNode將各個(gè)DataNode發(fā)送的訪問記錄表以文件形式寫在本地磁盤中,再定期將該文件拷貝至LDAP服務(wù)器特定目錄(NameNode與LDAP服務(wù)器預(yù)先配置無密碼登錄)。

ResourceManager的收集工作與NameNode類似。ResourceManager以Container的形式來分配資源,每個(gè)Container對(duì)應(yīng)一個(gè)RMContainer狀態(tài)機(jī)對(duì)象用于維護(hù)Container的生命周期。NodeManager通過心跳機(jī)制周期地將Container信息匯報(bào)給ResourceManager,ResourceManager從而可以修改RMContainer中的狀態(tài)。RMContainer狀態(tài)機(jī)中共有9種狀態(tài),通過修改RMContainer接口的實(shí)現(xiàn)類RMContainerImpl,記錄狀態(tài)轉(zhuǎn)換時(shí)的時(shí)刻,可以得到狀態(tài)-狀態(tài)的間隔時(shí)間。

為了收集用戶消耗的計(jì)算資源,這里我們可記錄Container從實(shí)際分配到任務(wù)結(jié)束的時(shí)間,即ACQUIRED到COMPLETED狀態(tài)的時(shí)間,ResourceManager從RMContainer對(duì)象中讀取所需信息,生成Container使用記錄ContainerRecord={User,ContainerId,NodeId,Resource{CPU,Memory},Period},并以文件形式存放在本地磁盤中,定期將該文件拷貝至LDAP服務(wù)器特定目錄。若該Container因某種原因未能正常結(jié)束,可視為未占用資源。

LDAP服務(wù)器作最后的統(tǒng)計(jì)工作,每隔一段時(shí)間從上傳文件中讀取BlockAccessRecord和ContainerRecord記錄,從而統(tǒng)計(jì)每個(gè)用戶在這段時(shí)間內(nèi)消耗的資源量,并刷新用戶的UAQ屬性。UAQ消耗后需要恢復(fù),用戶才能再次使用Hadoop資源,可以設(shè)置每天恢復(fù)一定的數(shù)量,或者由管理員手動(dòng)恢復(fù)。

3分析

該模型并未對(duì)Hadoop底層機(jī)制做任何修改,僅在ResourceManager和NameNode正常工作過程中加入少許記錄功能以及增加與LDAP進(jìn)行通信環(huán)節(jié),因此不會(huì)對(duì)Hadoop的性能有影響。LDAP具有良好的查詢性能,基于目錄的管理也較為方便,在大規(guī)模集群管理中應(yīng)用較多,Hadoop中的Hive、Impala等都可以配置LDAP工作,因此這里選用LDAP來管理用戶UAQ也方便將來Hadoop集群的集中管理。

在模型中,LDAP中的UAQ并不是實(shí)時(shí)更新的,這不僅是為了減少與LDAP的通信,更重要的是防止作業(yè)在執(zhí)行中因?yàn)閁AQ不足而中斷。在此前提下,UAQ可以為負(fù)值,意味著用戶可以預(yù)支額度,在當(dāng)前作業(yè)完成之后,需要等待UAQ恢復(fù)才能進(jìn)行下一次作業(yè)的提交。

在系統(tǒng)搭建時(shí),需要增加一臺(tái)LDAP服務(wù)器,NameNode和ResourceManager服務(wù)器需要安裝LDAP客戶端環(huán)境,所增加的安裝工作并不多。傳送的數(shù)據(jù)量較小,因此也不會(huì)對(duì)網(wǎng)絡(luò)流量造成影響。

存在的問題主要在于所耗費(fèi)資源量的計(jì)算標(biāo)準(zhǔn),對(duì)于Container以占用的CPU、內(nèi)存量和時(shí)間來衡量,由于ResourceManager對(duì)CPU和內(nèi)存資源的分配僅是最大閥值而非實(shí)際值,而操作系統(tǒng)線程實(shí)際運(yùn)行情況未可知,這樣對(duì)實(shí)際的耗費(fèi)量會(huì)有一定誤差。

4 結(jié)束語(yǔ)

Hadoop安全機(jī)制較為簡(jiǎn)陋,無法滿足多用戶下的安全保護(hù)需求。本文通過提出基于訪問統(tǒng)計(jì)的限量使用模型,在一定程度上對(duì)用戶行為進(jìn)行限制,增強(qiáng)了現(xiàn)有安全模型,減輕Hadoop管理工作。今后還可在此基礎(chǔ)上進(jìn)一步實(shí)現(xiàn)更細(xì)粒度的資源使用統(tǒng)計(jì)。

參考文獻(xiàn):

[1] Apache Hadoop [EB/OL].http://hadoop.apache.org,2016-2-13

[2] Dean J, GhemawatS. MapReduce:Simplified data processingon large clusters[J]. Communications of the ACM, 2008, 51(1).

[3] Zissis D,Lekkas D. Addressing cloud computing security issues[J]. Future Generation Computer Systems, 2012, 28(3).

[4] 朱建波, 李萍, 于炯,等. 改進(jìn)的Kerberos協(xié)議在HDFS環(huán)境下的研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2014, 35(10).

[5] Apache Hadoop. Service Level Authorization Guide [EB/OL]. (2014-11-14).http://hadoop.apache.org/docs/r2.5.2/hadoop-proje ct-dist/hadoop-common/ServiceLevelAuth.html.

[6] Amr M Elkholy, Elsayed A H,Sallam.Self adaptiveHadoop scheduler for heterogeneous resources[C]. Computer Engineering & Systems(ICCES), 2014, 9th International Conference on, 2014.

[7] 劉莎, 譚良. Hadoop云平臺(tái)中基于信任的訪問控制模型[J]. 計(jì)算機(jī)科學(xué), 2014, 41(5).

[8] 鄭之華. 基于SASL框架下身份認(rèn)證機(jī)制的研究[J]. 長(zhǎng)春大學(xué)學(xué)報(bào), 2015, 25(2).

猜你喜歡
訪問控制
ONVIF的全新主張:一致性及最訪問控制的Profile A
動(dòng)態(tài)自適應(yīng)訪問控制模型
淺析云計(jì)算環(huán)境下等級(jí)保護(hù)訪問控制測(cè)評(píng)技術(shù)
大數(shù)據(jù)平臺(tái)訪問控制方法的設(shè)計(jì)與實(shí)現(xiàn)
基于崗位映射的應(yīng)急組織間跨域訪問控制研究
徐汇区| 姚安县| 渝中区| 香格里拉县| 清河县| 越西县| 饶平县| 灵石县| 临安市| 开阳县| 沿河| 集贤县| 陆川县| 峨眉山市| 吉木萨尔县| 勃利县| 海宁市| 临澧县| 剑川县| 从江县| 西峡县| 灵宝市| 浙江省| 深州市| 汶川县| 桂阳县| 长治市| 筠连县| 黎城县| 贵州省| 沧源| 滁州市| 呈贡县| 吕梁市| 兴国县| 和平县| 临江市| 安溪县| 辉南县| 桦甸市| 涟水县|