本發(fā)明涉及Hadoop集群的創(chuàng)建技術(shù)領(lǐng)域,特別是一種基于容器云技術(shù)快速搭建Hadoop集群的方法。
背景技術(shù):
目前,Hadoop集群通常是基于虛擬機(jī)或PC來進(jìn)行搭建;在預(yù)先設(shè)定好集群的規(guī)模(包括主節(jié)點(diǎn)和從節(jié)點(diǎn)數(shù)量等)之后,需要根據(jù)預(yù)設(shè)的規(guī)模建立指定數(shù)量臺(tái)虛擬機(jī)或購買指定數(shù)量臺(tái)PC;建立好這些服務(wù)器之后,需要逐臺(tái)安裝操作系統(tǒng),并安裝搭建Hadoop集群所必要的JDK等服務(wù),指定好每臺(tái)服務(wù)器的主機(jī)名,配置好每?jī)膳_(tái)服務(wù)器之間的SSH免密認(rèn)證;最后,需要在主節(jié)點(diǎn)部署Hadoop,修改配置后,分發(fā)給集群中其余的每臺(tái)服務(wù)器;完成這些步驟之后,才可以使用Hadoop的啟動(dòng)腳本啟動(dòng)集群。
江蘇物聯(lián)網(wǎng)研究發(fā)展中心公開的發(fā)明專利一種基于OpenStack的提供Hadoop服務(wù)的方法(CN104065716A)中,采用如下圖所示的架構(gòu)搭建Hadoop集群;該系統(tǒng)首先搭建基于OpenStack的云平臺(tái),并另外架設(shè)一個(gè)系統(tǒng)控制節(jié)點(diǎn),當(dāng)用戶需要服務(wù)時(shí),選擇云平臺(tái)中預(yù)裝的計(jì)算環(huán)境及特定的配置,發(fā)送請(qǐng)求給系統(tǒng)控制節(jié)點(diǎn),利用云平臺(tái)虛擬化技術(shù),架設(shè)虛擬主機(jī),啟動(dòng)已經(jīng)安裝Hadoop的系統(tǒng)鏡像,通過系統(tǒng)控制節(jié)點(diǎn)發(fā)送命令,上傳配置文件,啟動(dòng)Hadoop服務(wù),通過云平臺(tái)內(nèi)部網(wǎng)絡(luò)交互消息,完成Hadoop平臺(tái)的啟動(dòng)。
然而,由于廠商眾多,發(fā)行版本眾多,OpenStack有各種技術(shù)上的難點(diǎn);首先,OpenStack在集成性、擴(kuò)展性和穩(wěn)定性上還遠(yuǎn)遠(yuǎn)不足;Nova、Swift、Cinder和Neutron分別使用各自的數(shù)據(jù)庫存儲(chǔ)配置信息,安裝和升級(jí)均費(fèi)時(shí)費(fèi)力;
其次,OpenStack缺乏完整性;OpenStack只能提供計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)三種云產(chǎn)品,如果基于OpenStack自助搭建Hadoop集群,需要打通OpenStack和Hadoop之間的賬戶、安全、管理運(yùn)維和監(jiān)控體系,流程復(fù)雜而繁瑣;
再者,OpenStack不能提供端到端的服務(wù)保障;用戶拿到手的只是散落的“框架”和組建,必須手工將多廠商、多版本的功能集成起來;
最后,OpenStack缺乏通用的基礎(chǔ)版本;OpenStack目前可下載的廠商定制版有20多個(gè),客戶不清楚應(yīng)該選擇哪個(gè)版本,更不清楚如何根據(jù)自己的需求來在不同版本之間進(jìn)行組合、混搭和遷移;以上這些缺陷導(dǎo)致了江蘇物聯(lián)網(wǎng)研究發(fā)展中心公開的這個(gè)發(fā)明專利在系統(tǒng)安裝實(shí)施耗時(shí)較長(zhǎng),藕合性也較高,系統(tǒng)穩(wěn)定性也無法保證,需要專門進(jìn)行系統(tǒng)維護(hù),或?qū)penStack代碼進(jìn)行優(yōu)化。
使用多臺(tái)PC或物理服務(wù)器來搭建Hadoop集群,成本相對(duì)較高,資源利用率較低;使用虛擬機(jī)會(huì)提供整個(gè)虛擬化硬件層,但是使用成本也會(huì)顯著提升,資源利用率同樣不高;此外,使用PC或虛擬機(jī)搭建Hadoop集群后,若使用時(shí)破壞了集群環(huán)境,很難立即發(fā)現(xiàn)問題;發(fā)現(xiàn)環(huán)境被破壞后,需要將被破壞的單臺(tái)或多臺(tái)服務(wù)器或虛擬機(jī)的環(huán)境進(jìn)行重建,處理的及時(shí)性得不到保證。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是,克服現(xiàn)有技術(shù)的缺點(diǎn),提供一種基于容器云技術(shù)快速搭建Hadoop集群的方法。
為了解決以上技術(shù)問題,本發(fā)明提供一種基于容器云技術(shù)快速搭建Hadoop集群的方法,包括如下具體步驟:
根據(jù)實(shí)際需要確定選用的物理服務(wù)器數(shù)量,將這些選取好的物理服務(wù)器整體看做一個(gè)集群,指定該集群的master節(jié)點(diǎn),并分配實(shí)際部署節(jié)點(diǎn),即作為slave節(jié)點(diǎn);
為集群中的每臺(tái)物理服務(wù)器安裝CentOS7操作系統(tǒng);
在該集群的每個(gè)master節(jié)點(diǎn)上采用yum install命令安裝并啟動(dòng)容器編排服務(wù)Kubernetes和網(wǎng)絡(luò)服務(wù)Flannel;
在預(yù)先分配好的master節(jié)點(diǎn)上安裝MySQL數(shù)據(jù)庫、鏡像倉庫服務(wù)及管理門戶;
使用管理員賬戶登錄管理門戶界面,建立用戶;使用建立的用戶登錄管理門戶,創(chuàng)建該用戶的集群環(huán)境并搭建Hadoop集群。
技術(shù)效果:相比基于OpenStack或VMWare等虛擬機(jī)技術(shù)來搭建Hadoop集群,本發(fā)明在步驟3直接使用Kubernetes服務(wù)來編排用戶創(chuàng)建的集群環(huán)境中的各個(gè)容器實(shí)例,保證服務(wù)的穩(wěn)定性的同時(shí),利用容器的輕量性特點(diǎn),使得建立這些集群服務(wù)器的速度有很大提升,而且每臺(tái)服務(wù)器所占用的系統(tǒng)資源相對(duì)于虛擬機(jī)技術(shù)也有所減少,因此可以搭建出更多的Hadoop集群。
此外,本發(fā)明在鏡像倉庫中做好了集成包括Hadoop集群在內(nèi)的多種大數(shù)據(jù)集群環(huán)境的快速搭建腳本,因此可以在步驟6中實(shí)現(xiàn)一鍵搭建Hadoop集群,優(yōu)化用戶體驗(yàn);Kubernetes官方提供了一系列的原子性API接口,在實(shí)際調(diào)用中,往往需要按照一定的順序依次執(zhí)行多個(gè)接口來完成諸如容器實(shí)例創(chuàng)建、容器實(shí)例銷毀等在內(nèi)的操作。
本發(fā)明中針對(duì)搭建Hadoop集群環(huán)境等實(shí)際業(yè)務(wù)需求,封裝了Kubernetes的這些API,提供了一組操作容器的方法,也就是集成在管理門戶中的k8Sclient接口:
底層使用Docker容器實(shí)例取代虛擬機(jī)或物理服務(wù)器來向用戶提供Hadoop集群服務(wù)器環(huán)境,它們之間采用flannel進(jìn)行網(wǎng)絡(luò)通訊,并提供標(biāo)準(zhǔn)的Docker API;
Kubernetes通過調(diào)用Docker API和鏡像倉庫的獲取鏡像接口來編排和操縱底層容器,并提供了一組REST接口Kubernetes API;
MySQL提供了集群管理和用戶管理兩個(gè)數(shù)據(jù)操縱接口;
管理門戶通過內(nèi)部集成的k8Sclient調(diào)用Kubernetes API來創(chuàng)建Hadoop集群環(huán)境,并調(diào)用MySQL的集群管理和用戶管理接口來記錄和展示每個(gè)用戶的集群環(huán)境。
本專利由于采用了Docker容器來取代虛擬機(jī)或物理服務(wù)器,使得對(duì)用戶來說每臺(tái)集群中的服務(wù)器開銷更小,創(chuàng)建速度更快,還能夠搭建出更多的Hadoop集群環(huán)境;每個(gè)Docker容器實(shí)例實(shí)際上只運(yùn)行Hadoop服務(wù),符合容器技術(shù)中每個(gè)容器實(shí)例只運(yùn)行單個(gè)服務(wù)的規(guī)范;且由于容器的隔離性,單個(gè)用戶集群重新創(chuàng)建不會(huì)影響到其它用戶的集群;采用谷歌推出的成熟的容器編排服務(wù)Kubernetes來維護(hù)底層的Docker容器實(shí)例,保證了整個(gè)服務(wù)的穩(wěn)定性,并且能夠很快發(fā)現(xiàn)問題節(jié)點(diǎn),快速實(shí)現(xiàn)故障恢復(fù)。
本發(fā)明進(jìn)一步限定的技術(shù)方案是:
進(jìn)一步的,前述的基于容器云技術(shù)快速搭建Hadoop集群的方法,步驟中搭建Hadoop集群的具體步驟為:
用戶登錄管理門戶,在界面上點(diǎn)擊創(chuàng)建Hadoop集群環(huán)境,管理門戶向Kubernetes發(fā)送創(chuàng)建集群服務(wù)器請(qǐng)求,Kubernetes從鏡像倉庫獲取指定鏡像并調(diào)用Docker API創(chuàng)建集群容器實(shí)例,并將創(chuàng)建結(jié)果通過管理門戶返回給用戶;
用戶在管理門戶界面點(diǎn)擊一鍵搭建Hadoop集群,管理門戶直接向該用戶創(chuàng)建的集群容器實(shí)例發(fā)送搭建Hadoop集群的請(qǐng)求,集群容器實(shí)例接收到請(qǐng)求后,執(zhí)行內(nèi)置的搭建Hadoop集群腳本,自動(dòng)完成SSH免密認(rèn)證、設(shè)置master和slave節(jié)點(diǎn)、同步Hadoop集群配置、啟動(dòng)Hadoop服務(wù)等動(dòng)作,并將搭建結(jié)果通過管理門戶返回給用戶。
前述的基于容器云技術(shù)快速搭建Hadoop集群的方法,管理門戶為基于ApacheTomcat的網(wǎng)站,內(nèi)部集成了k8Sclient接口。
本發(fā)明中管理門戶集成的k8Sclient接口所提供的主要功能如下:
創(chuàng)建Namespace(命名空間);
刪除Namespace;
獲取指定Namespace;
獲取全部Namespace;
獲取指定Node(節(jié)點(diǎn));
獲取所有Node;
創(chuàng)建Pod(容器組);
刪除Pod;
獲取指定Pod;
獲取全部Pod;
獲取指定Pod的日志;
更新Pod信息;
創(chuàng)建RC(副本控制器);
刪除RC;
獲取指定RC;
獲取全部RC;
更新RC信息;
創(chuàng)建Service(服務(wù));
刪除Service;
獲取指定Service;
獲取全部Service;
更新Service信息。
本發(fā)明中的鏡像倉庫中加入了跟快速搭建Hadoop等大數(shù)據(jù)集群相關(guān)的6個(gè)自定義鏡像,它們均采用基于CentOS7的基礎(chǔ)鏡像,并在其基礎(chǔ)上完成了防火墻調(diào)整、時(shí)鐘同步等基礎(chǔ)配置,安裝了JDK和Hadoop等各種大數(shù)據(jù)相關(guān)的軟件及服務(wù),還導(dǎo)入了自行編寫的一鍵部署腳本等腳本,以供用戶使用,具體步驟如下:①基于CentOS7鏡像,安裝ssh等必需的軟件及服務(wù)、安裝并配置JAVA環(huán)境,導(dǎo)入Hadoop2.7.1版本安裝包并設(shè)置Hadoop環(huán)境變量;
②導(dǎo)入Hadoop實(shí)驗(yàn)相關(guān)數(shù)據(jù);
③導(dǎo)入編寫好的Hadoop集群的一鍵搭建腳本;
④導(dǎo)入編寫好的API_Server,并設(shè)置隨master節(jié)點(diǎn)自動(dòng)啟動(dòng);
⑤生成Hadoop集群鏡像。
用戶使用我們的鏡像創(chuàng)建指定的大數(shù)據(jù)集群后,無需再尋找Hadoop等大數(shù)據(jù)相關(guān)的軟件包,也無需再進(jìn)行防火墻設(shè)置、時(shí)鐘同步、JDK安裝等復(fù)雜繁瑣的前置性環(huán)境配置,可以快速搭建Hadoop集群,專注于大數(shù)據(jù)的應(yīng)用。
本發(fā)明的有益效果是:
本發(fā)明所設(shè)計(jì)的基于容器云技術(shù)快速搭建Hadoop集群的方法能夠針對(duì)不同的用戶需求提供定制化的服務(wù)方案;相比于傳統(tǒng)的虛擬機(jī)和OpenStack虛擬化技術(shù),該方法具有安裝部署簡(jiǎn)便、資源利用率高、服務(wù)穩(wěn)定和提供的集群數(shù)量多等優(yōu)勢(shì),適用于受到物理服務(wù)器規(guī)模限制的希望進(jìn)行大數(shù)據(jù)科研和運(yùn)算的中小企業(yè)或科研院所,可以顯著減少它們搭建和部署大數(shù)據(jù)集群的硬件成本,并使用戶可以更便利地采用Hadoop等框架來進(jìn)行大數(shù)據(jù)相關(guān)分析或計(jì)算;此外,各學(xué)校也可以使用該方法來在有限幾臺(tái)物理服務(wù)器上搭建出幾十或上百個(gè)集群環(huán)境,以開展大數(shù)據(jù)相關(guān)學(xué)科的教學(xué)和實(shí)驗(yàn),填補(bǔ)大數(shù)據(jù)行業(yè)的人才缺口。
附圖說明
圖1為專利CN104065716A中所搭建的Hadoop集群的架構(gòu)示意圖;
圖2為本發(fā)明中所設(shè)計(jì)的基于容器云技術(shù)快速搭建Hadoop集群的方法的組件圖;
圖3為本發(fā)明中搭建的Hadoop集群的時(shí)序圖。
具體實(shí)施方式
如圖2-3所示,本實(shí)施例提供的一種基于容器云技術(shù)快速搭建Hadoop集群的方法,包括如下具體步驟:
根據(jù)實(shí)際需要確定選用的物理服務(wù)器數(shù)量,將這些選取好的物理服務(wù)器整體看做一個(gè)集群,指定該集群的master節(jié)點(diǎn),并分配實(shí)際部署節(jié)點(diǎn),即作為slave節(jié)點(diǎn);
為集群中的每臺(tái)物理服務(wù)器安裝CentOS7操作系統(tǒng);
在該集群的每個(gè)master節(jié)點(diǎn)上采用yuminstall命令安裝并啟動(dòng)容器編排服務(wù)Kubernetes和網(wǎng)絡(luò)服務(wù)Flannel;
在預(yù)先分配好的master節(jié)點(diǎn)上安裝MySQL數(shù)據(jù)庫、鏡像倉庫服務(wù)及管理門戶;
使用管理員賬戶登錄管理門戶界面,建立用戶;使用建立的用戶登錄管理門戶,創(chuàng)建該用戶的集群環(huán)境并搭建Hadoop集群;管理門戶為基于ApacheTomcat的網(wǎng)站,內(nèi)部集成了k8Sclient接口。
步驟中搭建Hadoop集群的具體步驟為:
用戶登錄管理門戶,在界面上點(diǎn)擊創(chuàng)建Hadoop集群環(huán)境,管理門戶向Kubernetes發(fā)送創(chuàng)建集群服務(wù)器請(qǐng)求,Kubernetes從鏡像倉庫獲取指定鏡像并調(diào)用Docker API創(chuàng)建集群容器實(shí)例,并將創(chuàng)建結(jié)果通過管理門戶返回給用戶;
用戶在管理門戶界面點(diǎn)擊一鍵搭建Hadoop集群,管理門戶直接向該用戶創(chuàng)建的集群容器實(shí)例發(fā)送搭建Hadoop集群的請(qǐng)求,集群容器實(shí)例接收到請(qǐng)求后,執(zhí)行內(nèi)置的搭建Hadoop集群腳本,自動(dòng)完成SSH免密認(rèn)證、設(shè)置master和slave節(jié)點(diǎn)、同步Hadoop集群配置、啟動(dòng)Hadoop服務(wù)等動(dòng)作,并將搭建結(jié)果通過管理門戶返回給用戶。
相比基于OpenStack或VMWare等虛擬機(jī)技術(shù)來搭建Hadoop集群,本發(fā)明在步驟3直接使用Kubernetes服務(wù)來編排用戶創(chuàng)建的集群環(huán)境中的各個(gè)容器實(shí)例,保證服務(wù)的穩(wěn)定性的同時(shí),利用容器的輕量性特點(diǎn),使得建立這些集群服務(wù)器的速度有很大提升,而且每臺(tái)服務(wù)器所占用的系統(tǒng)資源相對(duì)于虛擬機(jī)技術(shù)也有所減少,因此可以搭建出更多的Hadoop集群。
此外,本發(fā)明在鏡像倉庫中做好了集成包括Hadoop集群在內(nèi)的多種大數(shù)據(jù)集群環(huán)境的快速搭建腳本,因此可以在步驟6中實(shí)現(xiàn)一鍵搭建Hadoop集群,優(yōu)化用戶體驗(yàn);Kubernetes官方提供了一系列的原子性API接口,在實(shí)際調(diào)用中,往往需要按照一定的順序依次執(zhí)行多個(gè)接口來完成諸如容器實(shí)例創(chuàng)建、容器實(shí)例銷毀等在內(nèi)的操作。
本發(fā)明中針對(duì)搭建Hadoop集群環(huán)境等實(shí)際業(yè)務(wù)需求,封裝了Kubernetes的這些API,提供了一組操作容器的方法,也就是集成在管理門戶中的k8Sclient接口:
底層使用Docker容器實(shí)例取代虛擬機(jī)或物理服務(wù)器來向用戶提供Hadoop集群服務(wù)器環(huán)境,它們之間采用flannel進(jìn)行網(wǎng)絡(luò)通訊,并提供標(biāo)準(zhǔn)的Docker API;
Kubernetes通過調(diào)用Docker API和鏡像倉庫的獲取鏡像接口來編排和操縱底層容器,并提供了一組REST接口Kubernetes API;
MySQL提供了集群管理和用戶管理兩個(gè)數(shù)據(jù)操縱接口;
管理門戶通過內(nèi)部集成的k8Sclient調(diào)用Kubernetes API來創(chuàng)建Hadoop集群環(huán)境,并調(diào)用MySQL的集群管理和用戶管理接口來記錄和展示每個(gè)用戶的集群環(huán)境。
本專利由于采用了Docker容器來取代虛擬機(jī)或物理服務(wù)器,使得對(duì)用戶來說每臺(tái)集群中的服務(wù)器開銷更小,創(chuàng)建速度更快,還能夠搭建出更多的Hadoop集群環(huán)境;每個(gè)Docker容器實(shí)例實(shí)際上只運(yùn)行Hadoop服務(wù),符合容器技術(shù)中每個(gè)容器實(shí)例只運(yùn)行單個(gè)服務(wù)的規(guī)范;且由于容器的隔離性,單個(gè)用戶集群重新創(chuàng)建不會(huì)影響到其它用戶的集群;采用谷歌推出的成熟的容器編排服務(wù)Kubernetes來維護(hù)底層的Docker容器實(shí)例,保證了整個(gè)服務(wù)的穩(wěn)定性,并且能夠很快發(fā)現(xiàn)問題節(jié)點(diǎn),快速實(shí)現(xiàn)故障恢復(fù)。
本發(fā)明中管理門戶集成的k8Sclient接口所提供的主要功能如下:
創(chuàng)建Namespace(命名空間);
刪除Namespace;
獲取指定Namespace;
獲取全部Namespace;
獲取指定Node(節(jié)點(diǎn));
獲取所有Node;
創(chuàng)建Pod(容器組);
刪除Pod;
獲取指定Pod;
獲取全部Pod;
獲取指定Pod的日志;
更新Pod信息;
創(chuàng)建RC(副本控制器);
刪除RC;
獲取指定RC;
獲取全部RC;
更新RC信息;
創(chuàng)建Service(服務(wù));
刪除Service;
獲取指定Service;
獲取全部Service;
更新Service信息。
本發(fā)明中的鏡像倉庫中加入了跟快速搭建Hadoop等大數(shù)據(jù)集群相關(guān)的6個(gè)自定義鏡像,它們均采用基于CentOS7的基礎(chǔ)鏡像,并在其基礎(chǔ)上完成了防火墻調(diào)整、時(shí)鐘同步等基礎(chǔ)配置,安裝了JDK和Hadoop等各種大數(shù)據(jù)相關(guān)的軟件及服務(wù),還導(dǎo)入了自行編寫的一鍵部署腳本等腳本,以供用戶使用,具體步驟如下:
①基于CentOS7鏡像,安裝ssh等必需的軟件及服務(wù)、安裝并配置JAVA環(huán)境,導(dǎo)入Hadoop2.7.1版本安裝包并設(shè)置Hadoop環(huán)境變量;
②導(dǎo)入Hadoop實(shí)驗(yàn)相關(guān)數(shù)據(jù);
③導(dǎo)入編寫好的Hadoop集群的一鍵搭建腳本;
④導(dǎo)入編寫好的API_Server,并設(shè)置隨master節(jié)點(diǎn)自動(dòng)啟動(dòng);
⑤生成Hadoop集群鏡像。
用戶使用我們的鏡像創(chuàng)建指定的大數(shù)據(jù)集群后,無需再尋找Hadoop等大數(shù)據(jù)相關(guān)的軟件包,也無需再進(jìn)行防火墻設(shè)置、時(shí)鐘同步、JDK安裝等復(fù)雜繁瑣的前置性環(huán)境配置,可以快速搭建Hadoop集群,專注于大數(shù)據(jù)的應(yīng)用。本實(shí)施例在實(shí)際應(yīng)用中,以9臺(tái)物理服務(wù)器為例,設(shè)置ip地址為從192.168.10.101到192.168.10.109;
1.設(shè)置每臺(tái)主機(jī)的主機(jī)名為從node-101到node-109,并使用ssh-keygen和ssh-copy-id命令為每?jī)膳_(tái)服務(wù)器之間配置SSH密鑰認(rèn)證方式,實(shí)現(xiàn)彼此之間的免密登錄;
2.指定node-101為Kubernetes的主節(jié)點(diǎn),在該服務(wù)器上安裝Kubernetes、Flannel和鏡像倉庫服務(wù);
3.指定node-109為管理門戶節(jié)點(diǎn),在該服務(wù)器上安裝Flannel、MySQL和管理門戶Tomcat服務(wù);
4.其余7臺(tái)服務(wù)器為Kubernetes的從節(jié)點(diǎn),在這些服務(wù)器上安裝Kubernetes和Flannel服務(wù);
5.使用一鍵部署腳本完成所有服務(wù)器上Flannel和Kubernetes服務(wù)的配置調(diào)整并啟動(dòng)這些服務(wù);
6.使用默認(rèn)管理員賬號(hào)登錄管理門戶,創(chuàng)建用戶;
7.使用創(chuàng)建的用戶登錄管理門戶,測(cè)試是否可以創(chuàng)建Hadoop集群環(huán)境并一鍵搭建Hadoop集群。
以上實(shí)施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍之內(nèi)。