本發(fā)明涉及通信技術(shù)領(lǐng)域,更具體的說,涉及kerberos認(rèn)證集群訪問方法、SparkStandalone集群及其驅(qū)動(dòng)節(jié)點(diǎn)。
背景技術(shù):
Spark是UC Berkeley AMP lab(加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的通用并行框架,內(nèi)部實(shí)現(xiàn)了容錯(cuò)性和資源管理,Spark的Standalone模式可以部署到單獨(dú)的集群中,無需依賴其他資源管理系統(tǒng),相對(duì)于其他的部署方式在性能上有一定的優(yōu)勢(shì)。
在實(shí)際應(yīng)用中,SparkStandalone集群需要用到的計(jì)算資源可能會(huì)存放在某些認(rèn)證集群中,例如Kerberos認(rèn)證集群。然而,由于Kerberos認(rèn)證的限制,SparkStandalone集群并不能直接對(duì)Kerberos認(rèn)證集群中的計(jì)算資源進(jìn)行訪問,而且,目前也并沒有可行的技術(shù)方案能夠?qū)崿F(xiàn)SparkStandalone集群對(duì)Kerberos認(rèn)證集群中的計(jì)算資源的訪問。
所以,目前迫切需要一種能夠?qū)崿F(xiàn)SparkStandalone集群對(duì)Kerberos認(rèn)證集群中的計(jì)算資源進(jìn)行訪問的技術(shù)方案。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種kerberos認(rèn)證集群訪問方法、SparkStandalone集群及其驅(qū)動(dòng)節(jié)點(diǎn),以解決目前SparkStandalone集群無法訪問kerberos認(rèn)證集群中計(jì)算資源的問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種kerberos認(rèn)證集群訪問方法,應(yīng)用于SparkStandalone集群中的驅(qū)動(dòng)節(jié)點(diǎn),所述方法包括:
當(dāng)接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件,其中,所述第一用戶為一kerberos認(rèn)證用戶;
利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
當(dāng)獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
優(yōu)選的,所述SparkStandalone集群由第二用戶啟動(dòng),所述第二用戶是與所述第一用戶不同的另一kerberos認(rèn)證用戶。
優(yōu)選的,所述kerberos認(rèn)證集群中的第一用戶的身份信息與密鑰表文件,是由所述客戶端在提交所述Spark任務(wù)時(shí)發(fā)送至所述kerberos認(rèn)證集群的。
優(yōu)選的,所述密鑰表文件與所述第一用戶的身份信息相匹配。
優(yōu)選的,在所述從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件之后,以及,所述利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器之前,所述方法還包括:
將所述第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證服務(wù)器進(jìn)行認(rèn)證;
當(dāng)認(rèn)證通過后,執(zhí)行所述利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器的步驟。
優(yōu)選的,在從所述kerberos認(rèn)證集群獲取授權(quán)令牌之后,所述方法還包括:
當(dāng)獲取到所述授權(quán)令牌后,確定所述授權(quán)令牌的失效時(shí)間;
在所述失效時(shí)間到達(dá)結(jié)束之前,重新執(zhí)行所述從所述kerberos認(rèn)證集群獲取授權(quán)令牌的步驟。
優(yōu)選的,每一個(gè)授權(quán)令牌都具有一個(gè)唯一標(biāo)識(shí)。
優(yōu)選的,所述將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),包括:
開啟HTTP服務(wù)器;
通過所述HTTP服務(wù)器將所述授權(quán)令牌發(fā)送至所述執(zhí)行節(jié)點(diǎn)。
一種SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn),包括:
任務(wù)接收單元,用于接收第一用戶通過客戶端提交的Spark任務(wù);
信息獲取單元,用于當(dāng)所述任務(wù)接收單元接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件,其中,所述第一用戶為一kerberos認(rèn)證用戶;
用戶登陸單元,用于利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
令牌獲取單元,用于當(dāng)用戶登陸單元登陸kerberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
令牌發(fā)送單元,用于當(dāng)令牌獲取單元獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
一種SparkStandalone集群,包括客戶端、執(zhí)行節(jié)點(diǎn)以及前述的驅(qū)動(dòng)節(jié)點(diǎn);
所述客戶端,用于將第一用戶的Spark任務(wù)提交至所述驅(qū)動(dòng)節(jié)點(diǎn);
所述執(zhí)行節(jié)點(diǎn),用于獲取所述驅(qū)動(dòng)節(jié)點(diǎn)發(fā)送的授權(quán)令牌,以及,利用所述授權(quán)令牌訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
從上述的技術(shù)方案可以看出,本發(fā)明提供的kerberos認(rèn)證集群訪問方法、SparkStandalone集群及其驅(qū)動(dòng)節(jié)點(diǎn),驅(qū)動(dòng)節(jié)點(diǎn)在接收到Spark任務(wù)后,從kerberos認(rèn)證集群中獲取第一用戶的身份信息與密鑰表文件,并利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,獲取kerberos認(rèn)證集群的授權(quán)令牌,將所述授權(quán)令牌發(fā)送給執(zhí)行節(jié)點(diǎn)后,使執(zhí)行節(jié)點(diǎn)能夠利用所述授權(quán)令牌訪問到kerberos認(rèn)證集群的計(jì)算資源,從而實(shí)現(xiàn)了SparkStandalone集群對(duì)kerberos認(rèn)證集群的計(jì)算資源的訪問。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的一種流程圖;
圖2為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的另一種流程圖;
圖3為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的再一種流程圖;
圖4為本申請(qǐng)實(shí)施例提供的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn)的一種結(jié)構(gòu)示意圖;
圖5為本申請(qǐng)實(shí)施例提供的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn)的另一種結(jié)構(gòu)示意圖;
圖6為本申請(qǐng)實(shí)施例提供的SparkStandalone集群的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了引用和清楚起見,下文中使用的技術(shù)名詞的說明、簡(jiǎn)寫或縮寫總結(jié)如下:
kerberos認(rèn)證集群:Kerberos是為TCP/IP網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)的可信的第三方認(rèn)證協(xié)議,kerberos認(rèn)證集群是指采用Kerberos認(rèn)證協(xié)議的集群。
SparkStandalone集群:Spark是UC Berkeley AMP lab(加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的通用并行框架,Standalone是Spark所支持的一種分布式部署模式,SparkStandalone集群是指采用Spark的Standalone模式部署的集群。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,圖1為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的一種流程圖。
SparkStandalone集群中主要包括主控節(jié)點(diǎn)(Master)、工作節(jié)點(diǎn)(Worker)、驅(qū)動(dòng)節(jié)點(diǎn)(Driver)、執(zhí)行節(jié)點(diǎn)(Executor)和客戶端(Client)等。本發(fā)明的kerberos認(rèn)證集群訪問方法,應(yīng)用于SparkStandalone集群中的驅(qū)動(dòng)節(jié)點(diǎn)(Driver)。
如圖1所示,所述方法包括:
S101:當(dāng)接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件;
在SparkStandalone集群中,第一用戶會(huì)通過客戶端向驅(qū)動(dòng)節(jié)點(diǎn)提交Spark任務(wù),驅(qū)動(dòng)節(jié)點(diǎn)當(dāng)接收到該Spark任務(wù)后,從kerberos認(rèn)證集群獲取第一用戶的身份信息與密鑰表文件(keytab),以利用第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,其中,第一用戶為kerberos認(rèn)證用戶。
在一示例中,驅(qū)動(dòng)節(jié)點(diǎn)在獲取到第一用戶的身份信息與密鑰表文件后,可以將第一用戶的身份信息與密鑰表文件保存在該驅(qū)動(dòng)節(jié)點(diǎn)的工作空間目錄下,該工作空間目錄可以防止其中的第一用戶的身份信息與密鑰表文件被其他程序或服務(wù)所獲取,從而保證第一用戶的身份信息與密鑰表文件的安全性。
在另一示例中,SparkStandalone集群由第二用戶啟動(dòng)。
在傳統(tǒng)應(yīng)用中,第二用戶通常為預(yù)設(shè)安全用戶,無論是提交Spark任務(wù),還是執(zhí)行Spark任務(wù),均是以第二用戶的身份來進(jìn)行,所以無法確定出提交Spark任務(wù)的真實(shí)用戶,導(dǎo)致用戶身份的敏感性較差,也無法針對(duì)真實(shí)用戶來進(jìn)行任務(wù)追蹤。
在該示例中,第二用戶可以是與所述第一用戶不同的另一kerberos認(rèn)證用戶。由第二用戶啟動(dòng)SparkStandalone集群后,再切換至由第一用戶通過客戶端來提交Spark任務(wù),從而使提交的Spark任務(wù)與提交該Spark任務(wù)的第一用戶相對(duì)應(yīng)。其中,第二用戶可以是SparkStandalone集群的預(yù)設(shè)安全用戶,第一用戶可以是提交Spark任務(wù)的真實(shí)用戶,從而能夠在SparkStandalone集群中針對(duì)不同的真實(shí)用戶來追蹤其相對(duì)應(yīng)的Spark任務(wù)執(zhí)行情況。
相應(yīng)地,若無需針對(duì)不同的真實(shí)用戶來追蹤其相對(duì)應(yīng)的Spark任務(wù)執(zhí)行情況,所述第二用戶也可以與所述第一用戶相同。
在又一示例中,kerberos認(rèn)證集群中的第一用戶的身份信息與密鑰表文件,是由所述客戶端在提交所述Spark任務(wù)時(shí)發(fā)送至所述kerberos認(rèn)證集群的。
由于第一用戶為kerberos認(rèn)證用戶,所以以第一用戶的身份信息登錄的客戶端可以將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群。
具體地,客戶端可以將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群中的指定位置。當(dāng)指定位置已保存有用戶的身份信息與密鑰表文件時(shí),先刪除指定位置已保存的用戶的身份信息與密鑰表文件,再將第一用戶的身份信息與密鑰表文件發(fā)送到指定位置;當(dāng)指定位置未保存有用戶的身份信息與密鑰表文件時(shí),直接將第一用戶的身份信息與密鑰表文件發(fā)送到指定位置。
該示例中,由于第一用戶的身份信息與密鑰表文件被保存在kerberos認(rèn)證集群中,只有kerberos認(rèn)證用戶才能獲取到第一用戶的身份信息與密鑰表文件,從而保證了第一用戶的身份信息與密鑰表文件的安全性,有效降低了第一用戶的身份信息與密鑰表文件被竊取的風(fēng)險(xiǎn)。
S102:利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
驅(qū)動(dòng)節(jié)點(diǎn)在獲取到第一用戶的身份信息與密鑰表文件后,可以利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器。當(dāng)?shù)谝挥脩魹閗erberos認(rèn)證用戶,且,密鑰表文件與第一用戶的身份信息相匹配時(shí),驅(qū)動(dòng)節(jié)點(diǎn)便能夠利用第一用戶的身份信息與密鑰表文件,成功登陸kerberos認(rèn)證服務(wù)器。
S103:當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
kerberos認(rèn)證集群提供的每一個(gè)授權(quán)令牌(Token)都具有一個(gè)唯一標(biāo)識(shí),從而保證不同的驅(qū)動(dòng)節(jié)點(diǎn)獲取到的授權(quán)令牌都是唯一的,進(jìn)而使得多個(gè)驅(qū)動(dòng)節(jié)點(diǎn)的任務(wù)行為都是相互獨(dú)立的,從而保證Spark任務(wù)的高并行度。例如,將授權(quán)令牌的唯一標(biāo)識(shí)設(shè)定為獲取該授權(quán)令牌的驅(qū)動(dòng)節(jié)點(diǎn)的工作空間目錄的名稱,由于每一個(gè)驅(qū)動(dòng)節(jié)點(diǎn)的工作空間目錄的名稱都是唯一的,所以保證了該驅(qū)動(dòng)節(jié)點(diǎn)獲取的授權(quán)令牌的唯一標(biāo)識(shí)也是唯一的。
由于驅(qū)動(dòng)節(jié)點(diǎn)是以第一用戶的身份從kerberos認(rèn)證集群獲取的授權(quán)令牌,所以,該授權(quán)令牌不僅與該驅(qū)動(dòng)節(jié)點(diǎn)相對(duì)應(yīng),而且還與該第一用戶相對(duì)應(yīng)。當(dāng)然,第一用戶還可以通過客戶端將多個(gè)Spark任務(wù)分別提交至多個(gè)驅(qū)動(dòng)節(jié)點(diǎn),多個(gè)驅(qū)動(dòng)節(jié)點(diǎn)分別獲取相應(yīng)的授權(quán)令牌。因此,同一個(gè)第一用戶可以對(duì)應(yīng)多個(gè)Spark任務(wù)、多個(gè)驅(qū)動(dòng)節(jié)點(diǎn)以及多個(gè)授權(quán)令牌,而同一個(gè)授權(quán)令牌僅可以對(duì)應(yīng)同一個(gè)驅(qū)動(dòng)節(jié)點(diǎn)、同一個(gè)Spark任務(wù)以及同一個(gè)第一用戶。
S104:當(dāng)獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
執(zhí)行節(jié)點(diǎn)利用授權(quán)令牌可以訪問到kerberos認(rèn)證集群中的計(jì)算資源,從而利用kerberos認(rèn)證集群中的計(jì)算資源,執(zhí)行第一用戶提交的Spark任務(wù)。
kerberos認(rèn)證集群主要包括HDFS、Hbase和Hive等。
在一示例中,驅(qū)動(dòng)節(jié)點(diǎn)將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),包括:
S1041:開啟HTTP服務(wù)器;
S1042:通過所述HTTP服務(wù)器將所述授權(quán)令牌發(fā)送至所述執(zhí)行節(jié)點(diǎn)。
在另一示例中,執(zhí)行節(jié)點(diǎn)在接收到授權(quán)令牌后,可以將授權(quán)令牌保存在該執(zhí)行節(jié)點(diǎn)的工作空間目錄,以防止該授權(quán)令牌被其他程序或服務(wù)所獲取,從而保證授權(quán)令牌的安全性。并且,執(zhí)行節(jié)點(diǎn)還可以在Spark任務(wù)執(zhí)行結(jié)束后,刪除存放該授權(quán)令牌的工作空間目錄,從而進(jìn)一步保證授權(quán)令牌的安全性。
由于授權(quán)令牌與第一用戶相對(duì)應(yīng),所以執(zhí)行節(jié)點(diǎn)利用該授權(quán)令牌訪問kerberos認(rèn)證集群中的計(jì)算資源以執(zhí)行Spark任務(wù),就相當(dāng)于執(zhí)行節(jié)點(diǎn)是以第一用戶的身份來執(zhí)行Spark任務(wù)。
執(zhí)行節(jié)點(diǎn)利用該授權(quán)令牌訪問kerberos認(rèn)證集群中的計(jì)算資源,具體可以是將該授權(quán)令牌添加到訪問kerberos認(rèn)證集群的對(duì)象中,以使該對(duì)象能夠在授權(quán)令牌過期前訪問kerberos認(rèn)證集群中的計(jì)算資源。
本實(shí)施例提供的kerberos認(rèn)證集群訪問方法,應(yīng)用于SparkStandalone集群中的驅(qū)動(dòng)節(jié)點(diǎn),驅(qū)動(dòng)節(jié)點(diǎn)在接收到Spark任務(wù)后,從kerberos認(rèn)證集群中獲取第一用戶的身份信息與密鑰表文件,并利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,獲取kerberos認(rèn)證集群的授權(quán)令牌,將所述授權(quán)令牌發(fā)送給執(zhí)行節(jié)點(diǎn)后,使執(zhí)行節(jié)點(diǎn)能夠利用所述授權(quán)令牌訪問到kerberos認(rèn)證集群的計(jì)算資源,從而實(shí)現(xiàn)了SparkStandalone集群對(duì)kerberos認(rèn)證集群的計(jì)算資源的訪問。
在實(shí)際應(yīng)用中,為了保證kerberos認(rèn)證集群中計(jì)算資源的安全性,還可以進(jìn)一步加強(qiáng)對(duì)第一用戶的認(rèn)證。
請(qǐng)參閱圖2,圖2為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的另一種流程圖。
如圖2所示,所述方法包括:
S201:當(dāng)接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件;
其中,所述第一用戶為一kerberos認(rèn)證用戶。
在一示例中,kerberos認(rèn)證集群中的第一用戶的身份信息與密鑰表文件,是由所述客戶端在提交所述Spark任務(wù)時(shí)發(fā)送至所述kerberos認(rèn)證集群的??蛻舳嗽趯⒌谝挥脩舻纳矸菪畔⑴c密鑰表文件發(fā)送至kerberos認(rèn)證集群之前,還包括:客戶端將所述第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證服務(wù)器進(jìn)行認(rèn)證;當(dāng)認(rèn)證通過后,客戶端利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器。
當(dāng)客戶端登錄kerberos認(rèn)證服務(wù)器成功后,kerberos認(rèn)證服務(wù)器允許客戶端將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群;當(dāng)客戶端登錄kerberos認(rèn)證服務(wù)器失敗后,kerberos認(rèn)證服務(wù)器拒絕客戶端將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群。
客戶端在將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群之前,增加利用第一用戶的身份信息與密鑰表文件執(zhí)行kerberos認(rèn)證與登錄的過程,進(jìn)一步保證了kerberos認(rèn)證集群訪問過程的安全性。
S202:將所述第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證服務(wù)器進(jìn)行認(rèn)證;
驅(qū)動(dòng)節(jié)點(diǎn)在利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器之前,進(jìn)一步加強(qiáng)對(duì)第一用戶的認(rèn)證,從而進(jìn)一步保證了kerberos認(rèn)證集群訪問過程的安全性。
S203:當(dāng)認(rèn)證通過后,利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
在認(rèn)證通過后,驅(qū)動(dòng)節(jié)點(diǎn)才能夠利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,以獲取授權(quán)令牌,從而進(jìn)一步保證了授權(quán)令牌的合法性,而執(zhí)行節(jié)點(diǎn)利用合法的授權(quán)令牌來訪問kerberos認(rèn)證集群中的計(jì)算資源,進(jìn)而保證了kerberos認(rèn)證集群訪問過程的安全性。
S204:當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
S205:當(dāng)獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
S204-S205與前述S103-S104相類似,在此不作贅述。
本實(shí)施提供的kerberos認(rèn)證集群訪問方法,在客戶端側(cè)與驅(qū)動(dòng)節(jié)點(diǎn)側(cè),都增加了對(duì)第一用戶的kerberos認(rèn)證與登錄過程,進(jìn)一步保證了第一用戶的身份信息與密鑰表文件以及授權(quán)令牌的合法性,從而提高了kerberos認(rèn)證集群訪問過程的安全性。
在實(shí)際應(yīng)用中,Spark任務(wù)可能是長(zhǎng)時(shí)任務(wù),需要長(zhǎng)時(shí)間的執(zhí)行處理,很可能會(huì)超過授權(quán)令牌的失效時(shí)間,導(dǎo)致長(zhǎng)時(shí)任務(wù)無法順利完成。對(duì)此,本發(fā)明提供了以下實(shí)施例。
請(qǐng)參閱圖3,圖3為本申請(qǐng)實(shí)施例提供的kerberos認(rèn)證集群訪問方法的又一種流程圖。
本實(shí)施例方案不僅適用于長(zhǎng)時(shí)任務(wù)的執(zhí)行,同樣也適用于其他Spark任務(wù)的執(zhí)行。其中,長(zhǎng)時(shí)任務(wù)是指需要長(zhǎng)時(shí)間執(zhí)行的Spark任務(wù)。
如圖3所示,所述方法包括:
S301:當(dāng)接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件;
其中,所述第一用戶為一kerberos認(rèn)證用戶。
S302:利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
S303:當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
S301-S303與前述S101-S103相類似,在此不再贅述。
S304:當(dāng)獲取到所述授權(quán)令牌后,確定所述授權(quán)令牌的失效時(shí)間;
每個(gè)授權(quán)令牌中都包含一個(gè)失效時(shí)間,驅(qū)動(dòng)節(jié)點(diǎn)在獲取到授權(quán)令牌時(shí),即可確定出該授權(quán)令牌的失效時(shí)間。當(dāng)授權(quán)令牌的失效時(shí)間到達(dá)時(shí),該授權(quán)令牌失效,失效的授權(quán)令牌并不能用于執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
S305:在所述失效時(shí)間到達(dá)之前,返回步驟S303;
S306:當(dāng)獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
其中,步驟S304、S305和S306均是在獲取到授權(quán)令牌之后執(zhí)行,步驟306可以在S304和S305之前或之后執(zhí)行,也可以在S304與S305之間執(zhí)行,還可以與S304和S305同步執(zhí)行,在此不作限定。
在一示例中,在所述失效時(shí)間到達(dá)之前,重新從所述kerberos認(rèn)證集群獲取授權(quán)令牌的時(shí)間,可以是第一用戶設(shè)置的預(yù)設(shè)時(shí)間,該預(yù)設(shè)時(shí)間早于授權(quán)令牌的失效時(shí)間;也可以是根據(jù)第一用戶設(shè)置的更新周期確定出的更新時(shí)間,該更新時(shí)間早于授權(quán)令牌的失效時(shí)間。
為了提高授權(quán)令牌的利用率,還可以將預(yù)設(shè)時(shí)間或更新時(shí)間的值設(shè)置為失效時(shí)間的值的80%。例如,授權(quán)令牌的失效時(shí)間為60分鐘,那么,將預(yù)設(shè)時(shí)間或更新時(shí)間設(shè)置為48分鐘,當(dāng)時(shí)間到達(dá)48分鐘時(shí),距離到達(dá)失效時(shí)間還有12分鐘,此時(shí)重新獲取授權(quán)令牌,重新獲取到授權(quán)令牌后,到達(dá)重新獲取的授權(quán)令牌的失效時(shí)間還有60分鐘,然后把重新獲取的授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),從而延長(zhǎng)了執(zhí)行節(jié)點(diǎn)利用授權(quán)令牌訪問kerberos認(rèn)證集群中的計(jì)算資源的時(shí)間,保證了Spark任務(wù)的順利完成。
本實(shí)施提供的kerberos認(rèn)證集群訪問方法,通過在授權(quán)令牌失效之前,重新獲取有效的授權(quán)令牌,并將該授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),能夠使得執(zhí)行節(jié)點(diǎn)訪問kerberos認(rèn)證集群中計(jì)算資源所利用的授權(quán)令牌在Spark任務(wù)執(zhí)行期間永遠(yuǎn)都是有效的,從而保證了長(zhǎng)時(shí)任務(wù)的順利執(zhí)行。
對(duì)應(yīng)于kerberos認(rèn)證集群訪問方法,本發(fā)明實(shí)施例還提供了SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn)。
請(qǐng)參閱圖4,圖4為本申請(qǐng)實(shí)施例的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn)的一種結(jié)構(gòu)示意圖。
本實(shí)施例的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn),用于實(shí)施前述實(shí)施例的kerberos認(rèn)證集群訪問方法,如圖4所示,所述驅(qū)動(dòng)節(jié)點(diǎn)U100包括:
任務(wù)接收單元U101,用于接收第一用戶通過客戶端提交的Spark任務(wù);
信息獲取單元U102,用于當(dāng)所述任務(wù)接收單元U101接收到第一用戶通過客戶端提交的Spark任務(wù)后,從所述kerberos認(rèn)證集群獲取所述第一用戶的身份信息與密鑰表文件,其中,所述第一用戶為一kerberos認(rèn)證用戶;
用戶登陸單元U103,用于利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器;
令牌獲取單元U104,用于當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器成功后,從所述kerberos認(rèn)證集群獲取授權(quán)令牌;
令牌發(fā)送單元U105,用于當(dāng)令牌獲取單元U104獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),所述授權(quán)令牌用于所述執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
在一示例中,所述驅(qū)動(dòng)節(jié)點(diǎn)U100還包括:
用戶認(rèn)證單元,用于將所述第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證服務(wù)器進(jìn)行認(rèn)證。當(dāng)認(rèn)證通過后,再由用戶登陸單元U103利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器。
在另一示例中,所述驅(qū)動(dòng)節(jié)點(diǎn)U100還包括:
HTTP開啟單元,用于開啟HTTP服務(wù)器。令牌發(fā)送單元U105通過所述HTTP服務(wù)器將所述授權(quán)令牌發(fā)送至所述執(zhí)行節(jié)點(diǎn)。
本實(shí)施例提供的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn),在接收到Spark任務(wù)后,從kerberos認(rèn)證集群中獲取第一用戶的身份信息與密鑰表文件,并利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,獲取kerberos認(rèn)證集群的授權(quán)令牌,將所述授權(quán)令牌發(fā)送給執(zhí)行節(jié)點(diǎn)后,使執(zhí)行節(jié)點(diǎn)能夠利用所述授權(quán)令牌訪問到kerberos認(rèn)證集群的計(jì)算資源,從而實(shí)現(xiàn)了SparkStandalone集群對(duì)kerberos認(rèn)證集群的計(jì)算資源的訪問。
請(qǐng)參閱圖5,圖5為本申請(qǐng)實(shí)施例的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn)的另一種結(jié)構(gòu)示意圖。
在本實(shí)施例中,所述驅(qū)動(dòng)節(jié)點(diǎn)U100還包括:
令牌確定單元U106,用于當(dāng)令牌獲取單元U104獲取到所述授權(quán)令牌后,確定所述授權(quán)令牌的失效時(shí)間;
具體地,在令牌獲取單元U104從所述kerberos認(rèn)證集群獲取授權(quán)令牌后,令牌確定單元U106確定所述授權(quán)令牌的失效時(shí)間。
每個(gè)授權(quán)令牌中都包含一個(gè)失效時(shí)間,令牌獲取單元U104在獲取到授權(quán)令牌時(shí),令牌確定單元U106即可確定出該授權(quán)令牌的失效時(shí)間。當(dāng)授權(quán)令牌的失效時(shí)間到達(dá)時(shí),該授權(quán)令牌失效,失效的授權(quán)令牌并不能用于執(zhí)行節(jié)點(diǎn)訪問所述kerberos認(rèn)證集群中的計(jì)算資源。
令牌更新單元U107,用于在所述失效時(shí)間到達(dá)之前,控制令牌獲取單元U104重新從所述kerberos認(rèn)證集群獲取授權(quán)令牌。
具體地,在所述失效時(shí)間到達(dá)之前,令牌更新單元U107控制令牌獲取單元U104重新從所述kerberos認(rèn)證集群獲取授權(quán)令牌。
本實(shí)施例提供的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn),通過在授權(quán)令牌失效之前,不斷獲取有效的授權(quán)令牌,并將該授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),能夠使得執(zhí)行節(jié)點(diǎn)訪問kerberos認(rèn)證集群中計(jì)算資源所利用的授權(quán)令牌永遠(yuǎn)都是有效的,從而保證了長(zhǎng)時(shí)任務(wù)的順利執(zhí)行。
在實(shí)際應(yīng)用中,Spark任務(wù)可能是長(zhǎng)時(shí)任務(wù),需要長(zhǎng)時(shí)間的執(zhí)行處理,很可能會(huì)超過授權(quán)令牌的失效時(shí)間,導(dǎo)致長(zhǎng)時(shí)任務(wù)無法順利完成。對(duì)此,本發(fā)明提供了以下實(shí)施例。
請(qǐng)參閱圖6,圖6為本申請(qǐng)實(shí)施例的SparkStandalone集群的結(jié)構(gòu)示意圖。
本實(shí)施例的SparkStandalone集群中,包括:客戶端U200、執(zhí)行節(jié)點(diǎn)U300以及前述實(shí)施例中的驅(qū)動(dòng)節(jié)點(diǎn)U100;
所述客戶端U200,用于將第一用戶的Spark任務(wù)提交至所述驅(qū)動(dòng)節(jié)點(diǎn)U100;
在一示例中,所述客戶端U200還用于在提交所述Spark任務(wù)時(shí),將第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證集群U400。
在該示例中,客戶端U200在將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群之前,還包括:客戶端U200將所述第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證服務(wù)器U500進(jìn)行認(rèn)證;當(dāng)認(rèn)證通過后,客戶端U200利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器U500。
當(dāng)客戶端U200登錄kerberos認(rèn)證服務(wù)器U500成功后,kerberos認(rèn)證服務(wù)器U500允許客戶端U200將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群U400;當(dāng)客戶端U200登錄kerberos認(rèn)證服務(wù)器U500失敗后,kerberos認(rèn)證服務(wù)器U500拒絕客戶端U200將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群U400。
客戶端U200在將第一用戶的身份信息與密鑰表文件發(fā)送至kerberos認(rèn)證集群U400之前,增加利用第一用戶的身份信息與密鑰表文件執(zhí)行kerberos認(rèn)證與登錄的過程,進(jìn)一步保證了kerberos認(rèn)證集群訪問過程的安全性。
所述驅(qū)動(dòng)節(jié)點(diǎn)U100,用于接收第一用戶通過客戶端U200提交的Spark任務(wù);當(dāng)接收到第一用戶通過客戶端U200提交的Spark任務(wù)后,從kerberos認(rèn)證集群U400獲取所述第一用戶的身份信息與密鑰表文件;利用所述第一用戶的身份信息與密鑰表文件,登陸kerberos認(rèn)證服務(wù)器U500;當(dāng)?shù)顷慿erberos認(rèn)證服務(wù)器U500成功后,從所述kerberos認(rèn)證集群U400獲取授權(quán)令牌;當(dāng)獲取到所述授權(quán)令牌后,將所述授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn)U300。
所述執(zhí)行節(jié)點(diǎn)U300,用于獲取所述驅(qū)動(dòng)節(jié)點(diǎn)U100發(fā)送的授權(quán)令牌,以及,利用所述授權(quán)令牌訪問所述kerberos認(rèn)證集群U400中的計(jì)算資源。
在一示例中,執(zhí)行節(jié)點(diǎn)在獲取到授權(quán)令牌后,可以將授權(quán)令牌保存在執(zhí)行節(jié)點(diǎn)U300的工作空間目錄,以防止該授權(quán)令牌被其他程序或服務(wù)所獲取,從而保證授權(quán)令牌的安全性。并且,執(zhí)行節(jié)點(diǎn)U300還可以在Spark任務(wù)執(zhí)行結(jié)束后,刪除存放該授權(quán)令牌的工作空間目錄,從而進(jìn)一步保證授權(quán)令牌的安全性。
由于授權(quán)令牌與第一用戶相對(duì)應(yīng),執(zhí)行節(jié)點(diǎn)U300利用該授權(quán)令牌訪問kerberos認(rèn)證集群U400中的計(jì)算資源以執(zhí)行Spark任務(wù),就相當(dāng)于執(zhí)行節(jié)點(diǎn)U300是以第一用戶的身份來執(zhí)行Spark任務(wù)。
執(zhí)行節(jié)點(diǎn)U300利用該授權(quán)令牌訪問kerberos認(rèn)證集群U400中的計(jì)算資源,具體可以是將該授權(quán)令牌添加到訪問kerberos認(rèn)證集群的對(duì)象中,以使該對(duì)象能夠在授權(quán)令牌過期前訪問kerberos認(rèn)證集群U400中的計(jì)算資源。
本實(shí)施例提供的SparkStandalone集群,由客戶端將第一用戶的Spark任務(wù)提交至所述驅(qū)動(dòng)節(jié)點(diǎn),并由驅(qū)動(dòng)節(jié)點(diǎn)在接收到Spark任務(wù)后,從kerberos認(rèn)證集群中獲取第一用戶的身份信息與密鑰表文件,并利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,獲取kerberos認(rèn)證集群的授權(quán)令牌,將所述授權(quán)令牌發(fā)送給執(zhí)行節(jié)點(diǎn),再由執(zhí)行節(jié)點(diǎn)利用所述授權(quán)令牌訪問所述kerberos認(rèn)證集群中的計(jì)算資源,從而實(shí)現(xiàn)了SparkStandalone集群對(duì)kerberos認(rèn)證集群的計(jì)算資源的訪問。
本發(fā)明提供的kerberos認(rèn)證集群訪問方法、SparkStandalone集群及其驅(qū)動(dòng)節(jié)點(diǎn),驅(qū)動(dòng)節(jié)點(diǎn)在接收到Spark任務(wù)后,從kerberos認(rèn)證集群中獲取第一用戶的身份信息與密鑰表文件,并利用所述第一用戶的身份信息與密鑰表文件登陸kerberos認(rèn)證服務(wù)器,獲取kerberos認(rèn)證集群的授權(quán)令牌,將所述授權(quán)令牌發(fā)送給執(zhí)行節(jié)點(diǎn)后,使執(zhí)行節(jié)點(diǎn)能夠利用所述授權(quán)令牌訪問到kerberos認(rèn)證集群的計(jì)算資源,從而實(shí)現(xiàn)了SparkStandalone集群對(duì)kerberos認(rèn)證集群的計(jì)算資源的訪問。
本發(fā)明提供的技術(shù)方案,在客戶端將第一用戶的身份信息與密鑰表文件發(fā)送至所述kerberos認(rèn)證集群之前,以及,驅(qū)動(dòng)節(jié)點(diǎn)從kerberos認(rèn)證集群獲取授權(quán)令牌之前,均對(duì)第一用戶的身份信息與密鑰表文件進(jìn)行kerberos認(rèn)證與登陸,保證了kerberos認(rèn)證集群訪問過程的安全性。
本發(fā)明提供的SparkStandalone集群的驅(qū)動(dòng)節(jié)點(diǎn),通過在授權(quán)令牌失效之前,重新獲取授權(quán)令牌,并將該授權(quán)令牌發(fā)送至執(zhí)行節(jié)點(diǎn),能夠使得執(zhí)行節(jié)點(diǎn)訪問kerberos認(rèn)證集群中計(jì)算資源所利用的授權(quán)令牌在Spark任務(wù)執(zhí)行期間永遠(yuǎn)都是有效的,從而保證了長(zhǎng)時(shí)任務(wù)的順利執(zhí)行。
最后,還需要說明的是,在本文中,諸如第一和第一等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以全部通過硬件來實(shí)施,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本申請(qǐng)的技術(shù)方案對(duì)背景技術(shù)做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。
本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。