李亞如,劉建華
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,西安 710061; 2.西安郵電大學(xué) 信息中心,西安 710061 )
?
大數(shù)據(jù)環(huán)境下MapReduce準(zhǔn)入控制的設(shè)計(jì)與實(shí)現(xiàn)
李亞如1,劉建華2
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,西安710061; 2.西安郵電大學(xué) 信息中心,西安710061 )
摘要:為了保證Hadoop平臺(tái)的安全性,確保執(zhí)行MapReduce作業(yè)的TaskTracker節(jié)點(diǎn)符合Hadoop平臺(tái)的安全管理要求,杜絕非法用戶對(duì)TaskTracker節(jié)點(diǎn)訪問并對(duì)其分配任務(wù),提出了一種對(duì)JobTracker節(jié)點(diǎn)進(jìn)行身份認(rèn)證的方法,設(shè)計(jì)實(shí)現(xiàn)了對(duì)JobTracker節(jié)點(diǎn)進(jìn)行身份認(rèn)證的認(rèn)證體系;該認(rèn)證體系主要是基于802.1x進(jìn)行準(zhǔn)入控制,重點(diǎn)分析了MapReduce分布式計(jì)算的流程,提出了總體設(shè)計(jì)方案,完成了相關(guān)模塊的配置實(shí)現(xiàn),最終結(jié)果顯示只有通過認(rèn)證的JobTracker才能通過交換機(jī)的可控端口給相應(yīng)的TaskTracker節(jié)點(diǎn)分配任務(wù),有效地避免了非法用戶的訪問,增強(qiáng)了Hadoop平臺(tái)的安全性、可靠性,為建設(shè)安全的大數(shù)據(jù)環(huán)境提供了很好的技術(shù)支持。
關(guān)鍵詞:Hadoop;TaskTracker節(jié)點(diǎn);802.1x ;大數(shù)據(jù)
0引言
隨著網(wǎng)絡(luò)的普及和發(fā)展,數(shù)據(jù)正在以爆炸式的方式生產(chǎn)積累,世界已進(jìn)入網(wǎng)絡(luò)化的大數(shù)據(jù)時(shí)代,然而大規(guī)模數(shù)據(jù)的匯集無形中加大了信息泄漏的風(fēng)險(xiǎn)性,因此大數(shù)據(jù)的安全問題成為新的挑戰(zhàn)。Hadoop作為對(duì)大數(shù)據(jù)時(shí)代所特有的數(shù)據(jù)進(jìn)行存儲(chǔ)和處理的框架,以成本低、搭建靈活、便于管理等優(yōu)勢(shì),在互聯(lián)網(wǎng)的各個(gè)領(lǐng)域得到了廣泛的應(yīng)用和發(fā)展,但其安全機(jī)制薄弱缺乏一個(gè)安全認(rèn)證機(jī)制,以致無法保證在集群上進(jìn)行操作的用戶為合法用戶[1]。就MapReduce分布式計(jì)算框架而言,JobTracker通過分配任務(wù)給TaskTracker節(jié)點(diǎn)運(yùn)行,來協(xié)調(diào)管理全部運(yùn)行在平臺(tái)上的作業(yè),如果任意用戶都可訪問TaskTracker節(jié)點(diǎn)并對(duì)其分配任務(wù),會(huì)導(dǎo)致信息的泄露,產(chǎn)生嚴(yán)重后果,這將直接影響著整個(gè)平臺(tái)的安全性能[2-3]。本文通過對(duì)Hadoop的MapReduce分布式計(jì)算框架的研究,改良其不足之處,設(shè)計(jì)實(shí)現(xiàn)對(duì)MapReduce進(jìn)行基于802.1x的準(zhǔn)入控制,從而避免非法用戶訪問TaskTracker節(jié)點(diǎn)并對(duì)其分配任務(wù),對(duì)提高Hadoop平臺(tái)的整體安全性能具有重要的現(xiàn)實(shí)意義。
1系統(tǒng)總體設(shè)計(jì)
Hadoop是一個(gè)能夠在集群上對(duì)大規(guī)模數(shù)據(jù)進(jìn)行分布式計(jì)算和處理的開源框架,實(shí)現(xiàn)了Google的Map-Reduce編程模型和框架,能夠把應(yīng)用程序分割成許多小的工作單元,并把這些單元放到集群的節(jié)點(diǎn)上執(zhí)行處理[4]。Hadoop框架最核心的兩個(gè)設(shè)計(jì)模塊就是HDFS分布式文件系統(tǒng)和MapReduce分布式計(jì)算框架。HDFS以流式數(shù)據(jù)訪問的模式實(shí)現(xiàn)了大規(guī)模數(shù)據(jù)的存儲(chǔ),MapReduce實(shí)現(xiàn)了對(duì)海量數(shù)據(jù)進(jìn)行并行計(jì)算處理的應(yīng)用[5]。
當(dāng)client節(jié)點(diǎn)向Hadoop集群提交一個(gè)MapReduce作業(yè)時(shí),JobClient調(diào)用runJob()方法創(chuàng)建JobClient實(shí)例并通過調(diào)用其submitJob()方法提交作業(yè),與此同時(shí)JobClient會(huì)在client節(jié)點(diǎn)將運(yùn)行作業(yè)所需的資源信息打包成jar文件存儲(chǔ)到HDFS中。當(dāng)JobTracker接收到submitJob()方法的調(diào)用后,會(huì)創(chuàng)建一個(gè)正在運(yùn)行的作業(yè)對(duì)象,為創(chuàng)建任務(wù)運(yùn)行列表,JobTracker需從共享文件系統(tǒng)(Shared FileSystem)中檢索Hadoop已劃分好的獨(dú)立的輸入數(shù)據(jù)分片(input slipt)。為了確保試圖在Hadoop集群上對(duì)TaskTracker節(jié)點(diǎn)執(zhí)行操作的用戶為安全合法用戶,JobTracker將每一個(gè)分片創(chuàng)建的task任務(wù)發(fā)送給TaskTracker時(shí)需通過認(rèn)證者進(jìn)行身份驗(yàn)證,若為合法的安全用戶,任務(wù)發(fā)送成功,若不合法,任務(wù)發(fā)送失敗并重新進(jìn)行身份驗(yàn)證。當(dāng)TaskTracker接收到分配的任務(wù)后,首先將任務(wù)所包含的所有信息從共享文件中檢索緩存,然后創(chuàng)建一個(gè)TaskRunner實(shí)例來執(zhí)行該任務(wù),TaskRunner將啟動(dòng)一個(gè)新的JVM運(yùn)行Map 任務(wù)或Reduce 任務(wù),以確保Map和Reduce的獨(dú)立性。具體系統(tǒng)的總體設(shè)計(jì)如圖1所示。
圖1 具體系統(tǒng)的總體設(shè)計(jì)
對(duì)于hadoop集群執(zhí)行MapReduce作業(yè)的過程來講,主要分為5個(gè)獨(dú)立的部分:Client節(jié)點(diǎn)、JobTracker節(jié)點(diǎn)、TaskTracke節(jié)點(diǎn)、HDFS和認(rèn)證者。具體各部分功能概述如表1所示。其中JobTracker節(jié)點(diǎn)、TaskTracke節(jié)點(diǎn)和認(rèn)證者構(gòu)成了認(rèn)證體系,在認(rèn)證體系模塊中進(jìn)行詳細(xì)的介紹。
表1 各部分功能概述
2具體的設(shè)計(jì)方案
2.1Hadoop集群的配置方案
Hadoop集群是一種典型的主從式架構(gòu),它可劃分為Master和Slave兩個(gè)角色, 其中在Master節(jié)點(diǎn)上運(yùn)行著NameNode、JobTracker,而在每個(gè)Slave節(jié)點(diǎn)上,都部署一個(gè)DataNode和TaskTracker。Hadoop是基于Java編程語(yǔ)言的可運(yùn)行在大型主機(jī)群上的應(yīng)用程序,因此對(duì)Hadoop進(jìn)行安裝之前首先要配置SSH和支持Java運(yùn)行環(huán)境的JDK,其中SSH和JDK的配置安裝沒有先后順序。配置完成SSH和JDK后,再進(jìn)行Hadoop的安裝配置,最后完成Hadoop集群的搭建。
2.1.1SSH和JDK的配置
Hadoop通過SSH(Secure Shell)來管理其守護(hù)進(jìn)程,因此必須安裝SSH。在完全分布的模式下,Hadoop控制腳本依賴SSH來執(zhí)行針對(duì)整個(gè)集群的操作,為了支持無縫工作,需要在各個(gè)節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候進(jìn)行無密碼登陸的形式,所以在配置SSH需要無密碼公鑰認(rèn)證的形式。
首先確保 Hadoop集群的各個(gè)節(jié)點(diǎn)中SSH 已經(jīng)被安裝。為了實(shí)現(xiàn)無密碼登錄,在集群的master節(jié)點(diǎn)下生成一組無密碼登錄的密鑰,在默認(rèn)的情況下將authorized_keys文件復(fù)制到各個(gè)授權(quán)的slave節(jié)點(diǎn)的/.ssh 目錄下。這樣配置之后,master節(jié)點(diǎn)可以無密碼登錄所有的slave節(jié)點(diǎn)。
配置支持Java運(yùn)行環(huán)境的JDK之前,先對(duì)集群的各個(gè)節(jié)點(diǎn)安裝jdk1.8.0_51并保證其安裝路徑一致,在此基礎(chǔ)上對(duì)/.bashrc文件中的環(huán)境變量JAVA_HOME、CLASSPATH、PATH和JRE_HOME進(jìn)行配置。
2.1.2Hadoop的配置
搭建Hadoop集群首先在Master節(jié)點(diǎn)上安裝Hadoop,本系統(tǒng)使用的Hadoop版本為hadoop-1.2.1。安裝完成之后需要在hadoop/conf目錄下進(jìn)行配置,其常用的3個(gè)配置文件為core-site.xml文件、hdfs-site.xml文件、mapred-site.xml文件,分別完成對(duì)HDFS地址和端口、HDFS數(shù)據(jù)副本數(shù)量、MapReduce的地址和端口的配置。啟動(dòng) Hadoop之前,需要對(duì)Hadoop 的HDFS文件系統(tǒng)進(jìn)行格式化,在Master節(jié)點(diǎn)hadoop的安裝目錄下輸入bin/hadoop namenode -format命令格式化文件系統(tǒng),自此 Hadoop 的文件配置全部完成。
2.1.3Hadoop集群的搭建
完成Master節(jié)點(diǎn)的Hadoop安裝配置后,將該節(jié)點(diǎn)的hadoop文件夾拷貝至其他Slave節(jié)點(diǎn)處即可完成集群配置,在Master節(jié)點(diǎn)hadoop的安裝目錄下執(zhí)行bin/start-all.sh命令啟動(dòng) Hadoop集群。
2.2認(rèn)證體系的配置方案
在Hadoop平臺(tái)執(zhí)行MapReduce作業(yè)的過程中,JobTracker節(jié)點(diǎn)作為請(qǐng)求者向TaskTracker節(jié)點(diǎn)發(fā)送分配任務(wù)時(shí),根據(jù)802.1x認(rèn)證程序,輸入認(rèn)證信息發(fā)起802.1x認(rèn)證,認(rèn)證者通過非可控端口收到請(qǐng)求者提交的認(rèn)證數(shù)據(jù)信息,發(fā)送至TaskTracker節(jié)點(diǎn)上的認(rèn)證服務(wù)器進(jìn)行驗(yàn)證,服務(wù)器將接收到的用戶信息與數(shù)據(jù)庫(kù)中的用戶信息進(jìn)行比對(duì),如果用戶信息一致則認(rèn)證成功,可控端口打開任務(wù)發(fā)送成功,如果認(rèn)證失敗,交換機(jī)的端口保持關(guān)閉狀態(tài),任務(wù)分配失敗。
802.1x是一種基于物理端口或邏輯端口(如VLAN)的認(rèn)證協(xié)議,是一種對(duì)用戶身份進(jìn)行認(rèn)證的方法和策略。進(jìn)行802.1x認(rèn)證的最終目的就是限制未授權(quán)的用戶或設(shè)備通過端口接入網(wǎng)絡(luò)[6-7]。它的體系結(jié)構(gòu)包括二個(gè)模塊:即請(qǐng)求模塊、認(rèn)證模塊,其中認(rèn)證模塊包括認(rèn)證者和認(rèn)證服務(wù)器。具體的認(rèn)證體系結(jié)構(gòu)如圖2所示。
圖2 認(rèn)證體系結(jié)構(gòu)
2.2.1請(qǐng)求模塊的配置
請(qǐng)求模塊一般是支持802.1x認(rèn)證的用戶終端設(shè)備,用戶通過啟動(dòng)客戶端軟件發(fā)起802.1x認(rèn)證,由認(rèn)證系統(tǒng)對(duì)其進(jìn)行身份認(rèn)證來實(shí)現(xiàn)基于端口的接入控制[8-9]。在MapReduce作業(yè)執(zhí)行的過程中JobTracker節(jié)點(diǎn)作為請(qǐng)求者訪問被分配任務(wù)的TaskTracker節(jié)點(diǎn),因此在JobTracker節(jié)點(diǎn)進(jìn)行配置以實(shí)現(xiàn)對(duì)802.1x認(rèn)證標(biāo)準(zhǔn)的支持。
2.2.2認(rèn)證模塊的配置
在hadoop 集群中執(zhí)行MapReduce作業(yè)的過程中,交換機(jī)和被分配任務(wù)的TaskTracker節(jié)點(diǎn)充當(dāng)了認(rèn)證體系中的認(rèn)證模塊。交換機(jī)作為認(rèn)證者通常為兩層可網(wǎng)管的交換機(jī),其作用就是在端口上啟用802.1x進(jìn)行認(rèn)證、指定認(rèn)證服務(wù)器的信息以及根據(jù)認(rèn)證結(jié)果控制端口狀態(tài)等。
TaskTracker節(jié)點(diǎn)作為認(rèn)證服務(wù)器為認(rèn)證系統(tǒng)提供認(rèn)證服務(wù)的實(shí)體,本系統(tǒng)使用freeradius服務(wù)器來實(shí)現(xiàn)認(rèn)證服務(wù)器的認(rèn)證和授權(quán)功能。freeradius是一款開源的、免費(fèi)的服務(wù)器軟件,不僅具有一般radius服務(wù)器所具有的認(rèn)證、授權(quán)和計(jì)費(fèi)功能,還可以靈活的配置和發(fā)送請(qǐng)求[10]。在TaskTracker節(jié)點(diǎn)上安裝freeradius軟件,并對(duì)其進(jìn)行相關(guān)的配置,從而實(shí)現(xiàn)在Hadoop平臺(tái)下的認(rèn)證服務(wù)器。由于需要在服務(wù)器系統(tǒng)通過獲取mysql數(shù)據(jù)庫(kù)中存儲(chǔ)的用戶名和密碼等認(rèn)證信息,以此來校驗(yàn)JobTracker節(jié)點(diǎn)發(fā)送來的認(rèn)證信息,所以需先安裝mysql數(shù)據(jù)庫(kù)。安裝完數(shù)據(jù)庫(kù)之后再安裝freeradius并對(duì)其進(jìn)行配置。配置完成后,啟動(dòng)服務(wù)器,在終端輸入radtest test test 192.168.0.147 100 testing123,可以看到服務(wù)器收到了請(qǐng)求,并返回成功接收信息。如圖3所示。
圖3 配置成功后服務(wù)器狀態(tài)
3實(shí)驗(yàn)結(jié)果與分析
根據(jù)上述的設(shè)計(jì)方案,利用實(shí)驗(yàn)室的資源搭建了一個(gè)Hadoop集群的實(shí)驗(yàn)平臺(tái),實(shí)現(xiàn)對(duì)TaskTracker節(jié)點(diǎn)進(jìn)行訪問控制的驗(yàn)證。整個(gè)實(shí)驗(yàn)平臺(tái)由3臺(tái)普通的pc機(jī)和一個(gè)可網(wǎng)管的銳捷交換機(jī)組成,操作系統(tǒng)選擇ubuntu,支持Java運(yùn)行環(huán)境的JDK版本為jdk-8u51-linux,Hadoop軟件版本為Hadoop-1.2.1,實(shí)現(xiàn)認(rèn)證功能的服務(wù)器軟件為freeradius。
在Hadoop的實(shí)驗(yàn)平臺(tái),將pc1作為JobTracker節(jié)點(diǎn),pc2和pc3作為TaskTracker節(jié)點(diǎn)。平臺(tái)結(jié)構(gòu)如圖4所示。
圖4 平臺(tái)結(jié)構(gòu)示意圖
在master節(jié)點(diǎn)的hadoop安裝目錄下使用bin/start-all.sh命令開啟hadoop集群,然后可以通過 web 模式看到MapReduce基本信息的管理界面如圖5所示,通過該界面我們可以看到MapReduce 系統(tǒng)的運(yùn)行狀態(tài),啟動(dòng)時(shí)間等基本信息,以及集群正在運(yùn)行的 maps 和 reduces 數(shù)目,活躍節(jié)點(diǎn)數(shù),Maptask 的容量,Reducetask的容量等的摘要信息。
圖5 MapReduce 管理界面
為了實(shí)現(xiàn)對(duì)TaskTracker節(jié)點(diǎn)進(jìn)行訪問控制的驗(yàn)證,開啟TaskTracker節(jié)點(diǎn)的 freeradius服務(wù)器來進(jìn)行實(shí)驗(yàn)測(cè)試。我們采用系統(tǒng)的 wordcount程序?qū)斎胛募M(jìn)行單詞個(gè)數(shù)統(tǒng)計(jì),并匯總所有統(tǒng)計(jì)結(jié)果輸出。輸入實(shí)驗(yàn)測(cè)試信息,彈出用戶輸入憑據(jù),如圖6所示。
圖6 用戶輸入憑據(jù)
輸入正確的用戶信息后,點(diǎn)擊連接。實(shí)驗(yàn)運(yùn)行結(jié)束,可以通過 web 模式看到實(shí)驗(yàn)結(jié)果信息的管理界面,如圖7所示。
圖7 實(shí)驗(yàn)結(jié)果界面
通過在Hadoop的實(shí)驗(yàn)平臺(tái)運(yùn)行wordcount程序作業(yè)對(duì)TaskTracker節(jié)點(diǎn)進(jìn)行身份認(rèn)證的實(shí)驗(yàn),實(shí)現(xiàn)了Hadoop平臺(tái)中對(duì)TaskTracker節(jié)點(diǎn)進(jìn)行身份認(rèn)證的安全控制。從實(shí)際效果來看,系統(tǒng)整體運(yùn)行狀況平穩(wěn),達(dá)到了系統(tǒng)設(shè)計(jì)目標(biāo)。
4結(jié)束語(yǔ)
Hadoop作為一個(gè)能夠?qū)A繑?shù)據(jù)進(jìn)行分布式存儲(chǔ)和計(jì)算的平臺(tái),在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。MapReduce分布式計(jì)算作為Hadoop的核心技術(shù)之一,主要對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算處理。但是目前在MapReduce計(jì)算的環(huán)境中缺乏一個(gè)安全機(jī)制,無法保證對(duì)TaskTracker節(jié)點(diǎn)進(jìn)行任務(wù)分配的是合法安全的用戶,本設(shè)計(jì)通過使用802.1x協(xié)議的網(wǎng)絡(luò)準(zhǔn)入控制對(duì)訪問者進(jìn)行身份驗(yàn)證,有效地避免了非法用戶訪問TaskTracker節(jié)點(diǎn),增強(qiáng)了Hadoop平臺(tái)的安全性、可靠性,為建設(shè)安全的大數(shù)據(jù)環(huán)境提供了很好的技術(shù)支持。
參考文獻(xiàn):
[1]李曉蕾. 基于Hadoop社交網(wǎng)絡(luò)分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制,2014(12):4094-4097.
[2]鄭曉薇,項(xiàng)明,張大為,等. 基于節(jié)點(diǎn)能力的Hadoop集群任務(wù)自適應(yīng)調(diào)度方法[J]. 計(jì)算機(jī)研究與發(fā)展,2014(3):618-626.
[3]曹旭. Hadoop平臺(tái)下海量日志數(shù)據(jù)處理模型的研究及改進(jìn)[D].杭州:浙江理工大學(xué),2013.
[4]何翔,李仁發(fā),唐卓. 一種異構(gòu)環(huán)境下的基于MapReduce任務(wù)調(diào)度改進(jìn)機(jī)制[J]. 計(jì)算機(jī)應(yīng)用研究,2013(11):3370-3373,3379.
[5]任萱萱. 基于Hadoop平臺(tái)的作業(yè)調(diào)度研究[D].天津:天津師范大學(xué),2011.
[6]王昌旭,周振柳,許榕生. 網(wǎng)絡(luò)接入安全控制研究[J]. 計(jì)算機(jī)應(yīng)用與軟件,2008(11):92-94.
[7]朱兵,周爽,張攀. 基于主機(jī)信息的802.1x的改進(jìn)方案設(shè)計(jì)[J]. 信息安全與技術(shù),2010(7):114-116.
[8]鹿凱寧,韋乃文. 802.1x協(xié)議安全性能的改進(jìn)[J]. 電子測(cè)量技術(shù),2007(1):107-109.
[9]黃永鋒,王濱,許曉東. RADIUS在802.1x中的應(yīng)用[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2006(5):798-801.
[10]楊凌鳳. 使用USBKey提高FreeRadius證書認(rèn)證的安全性[J]. 計(jì)算機(jī)安全,2008(2):42-44.
Design and Implementation of Mapreduce Access Control in Big Data Environment
Li Yaru1,Liu Jianhua2
(1.School of Communication and Information Engineering,Xi'an University of Posts and Telecommunications,Xi'an710061, China; 2.Information Center, School of Communication and Information Engineering,Xi'an University of Posts and Telecommunications,Xi'an710061, China )
Abstract:In order to ensure the security of Hadoop platform,to ensure that the TaskTracker node of the MapReduce operation is in accordance with the safety management requirements of the Hadoop platform, Put an end to the illegal users access to TaskTracker node and the assigned task, A method of authentication for JobTracker node is proposed, Design and implementation of the authentication system for JobTracker nodes. The certification system is mainly based on 802.1x performs admission control, Focus on the analysis of the process of MapReduce distributed computing, Put forward the overall design scheme, Complete the configuration of the relevant module, The final result shows that the TaskTracker node assignment can be assigned to the corresponding JobTracker node through the control of the switch, Effectively avoid the illegal user access, Enhanced security and reliability of the Hadoop platform, For the construction safety of big data environment provides a good technical support.
Keywords:Hadoop;TaskTracker node;802.1x;big data
文章編號(hào):1671-4598(2016)02-0114-04
DOI:10.16526/j.cnki.11-4762/tp.2016.02.031
中圖分類號(hào):TP273
文獻(xiàn)標(biāo)識(shí)碼:A
作者簡(jiǎn)介:李亞如(1988-),女,山西晉城人,碩士研究生,主要從事網(wǎng)絡(luò)與信息安全方向的研究。劉建華(1963-),男,陜西西安人,教授,高級(jí)工程師,主要從事信息安全方向的研究。
收稿日期:2015-12-03;修回日期:2015-12-30。