本發(fā)明涉及hadoop集群領(lǐng)域,具體涉及一種hadoop計算和存儲的分離方法。
背景技術(shù):
hadoop集群通常強調(diào)存儲和計算部署在一起,減少數(shù)據(jù)傳輸時的網(wǎng)絡(luò)壓力,以達到較好的性能,因此在搭建hadoop集群時,通常需要做好資源需求的規(guī)劃,以滿足業(yè)務(wù)對存儲、計算等資源的需求。對于hadoop集群中的離線計算,對計算執(zhí)行速度要求不高,隨著網(wǎng)絡(luò)帶寬的增加,網(wǎng)絡(luò)逐漸不是集群性能的瓶頸,可以考慮采用計算和存儲分離方案。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明提供一種hadoop的計算和存儲的分離方法。
本發(fā)明的技術(shù)方案是:一種hadoop計算存儲分離方法,包括:
s1:在宿主機部署kubernetes集群;
s2:將宿主機的數(shù)據(jù)盤格式化,并掛載到系統(tǒng)盤固定目錄;
s3:命令行部署容器化的hdfsnamenode節(jié)點和datanode節(jié)點;
s4:編寫yarn部署文件,基于kubernetes集群的petset特性和configmap特性部署yarn集群;
s5:進行yarn集群測試。
進一步地,宿主機的操作系統(tǒng)采用ubuntu14.04版本。
進一步地,kubernetes集群使用flannel網(wǎng)絡(luò)實現(xiàn)pod之間的跨主機通信。
進一步地,步驟s4中,kubernetes集群的petset特性為運行yarn組件的pod分配固定的域名,kubernetes集群的configmap特性將yarn組件的slave節(jié)點信息配置到y(tǒng)arn集群。
進一步地,kubernetes集群采用kubernetes1.3版本。
本發(fā)明提供的hadoop計算存儲分離方法,基于kubernetes、docker,將大數(shù)據(jù)存儲組件和計算組件分離,將計算組件部署在kuberentes環(huán)境,管理員可以根據(jù)業(yè)務(wù)場景的資源需求部署不同的計算組件,例如yarn+mapreduce、yarn+spark,當需要執(zhí)行大數(shù)據(jù)任務(wù)時,基于kubernetes快速創(chuàng)建hadoop集群,并執(zhí)行大數(shù)據(jù)任務(wù),當大數(shù)據(jù)任務(wù)結(jié)束時,可以將計算組件刪除,將不使用的資源釋放,從而提高資源利用率,節(jié)省成本。
附圖說明
圖1是本發(fā)明具體實施例方法流程圖。
圖2是本發(fā)明具體實施例hadoop組件部署圖。
圖3是本發(fā)明具體實施例hadoop組件交互圖。
具體實施方式
下面結(jié)合附圖并通過具體實施例對本發(fā)明進行詳細闡述,以下實施例是對本發(fā)明的解釋,而本發(fā)明并不局限于以下實施方式。
如圖1所示,本發(fā)明提供的hadoop計算存儲方法,包括以下步驟:
s1:在宿主機部署kubernetes集群;宿主機的操作系統(tǒng)采用ubuntu14.04版本,kubernetes集群使用flannel網(wǎng)絡(luò)實現(xiàn)pod之間的跨主機通信。
s2:將宿主機的數(shù)據(jù)盤格式化,并掛載到系統(tǒng)盤固定目錄;用于hdfs的datanode節(jié)點。
s3:命令行部署容器化的hdfsnamenode節(jié)點和datanode節(jié)點;用于對多個yarn集群提供存儲。
s4:編寫yarn部署文件,基于kubernetes集群的petset特性和configmap特性部署yarn集群;kubernetes集群的petset特性為運行yarn組件的pod分配固定的域名,kubernetes集群的configmap特性將yarn組件的slave節(jié)點信息配置到y(tǒng)arn集群。
s5:進行yarn集群測試,部署完成,此時,hadoop集群的計算組件和存儲組件已經(jīng)分離。
步驟s4中,yarn部署文件參考如下:
#aheadlessservicetocreatednsrecords
apiversion:v1
kind:service
metadata:
name:mr
namespace:bigdata
labels:
app:mr
spec:
ports:
-port:80
name:mr
#*.nginx.default.svc.cluster.local
clusterip:none
selector:
app:mr
---
apiversion:apps/v1alpha1
kind:petset
metadata:
name:mr
spec:
servicename:"mr"
replicas:3
template:
metadata:
labels:
app:mr
annotations:
pod.alpha.kubernetes.io/initialized:"true"
spec:
terminationgraceperiodseconds:0
containers:
-name:mr
image:10.110.17.138:5000/wangdk/bigdata:v0.6
imagepullpolicy:always
command:
-/usr/local/bin/start.sh
securitycontext:
privileged:true
env:
-name:resourcemanage_hostname
value:mr-0.mr.bigdata.svc.iopk8s.com
-name:node_role
value:yarn
-name:namenode_hostname
value:master.iop.com
-name:hdfsinfo
valuefrom:
configmapkeyref:
name:hdfsinfo
key:hdfsinfo
-name:slaves
valuefrom:
configmapkeyref:
name:hdfsinfo
key:yarnslaves
部署完成后,可以查看到y(tǒng)arn集群信息:
root@master:~#kubectlgetpods-owide|grepmr-
mr-01/1running1d172.17.18.4slave3.iop.com
mr-11/1running1d172.17.17.18master.iop.com
mr-21/1running1d172.17.60.11slave1.iop.com
本實施例中,可支持在同一物理環(huán)境部署多套yarn集群,集群直接由docker完成資源隔離,部署規(guī)劃圖如圖2和3所示。
以上公開的僅為本發(fā)明的優(yōu)選實施方式,但本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的沒有創(chuàng)造性的變化,以及在不脫離本發(fā)明原理前提下所作的若干改進和潤飾,都應落在本發(fā)明的保護范圍內(nèi)。