小編給大家分享一下CDSW在Session中運(yùn)行代碼超過(guò)一次就報(bào)錯(cuò)怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站是一家以網(wǎng)站建設(shè)公司、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為iso認(rèn)證等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。
在CDSW中啟動(dòng)一個(gè)Session然后運(yùn)行代碼,第一次能夠正常運(yùn)行,在第一次運(yùn)行完成后不關(guān)閉Session,在同一個(gè)Session中再次運(yùn)行代碼,此時(shí)就會(huì)出現(xiàn)報(bào)錯(cuò),主要的報(bào)錯(cuò)信息為“Delegation Token can be issued only with kerberos or web authentication”,報(bào)錯(cuò)的截圖如下:
由于這個(gè)報(bào)錯(cuò)出現(xiàn)在CDSW服務(wù)中,因此首先需要確認(rèn)是CDSW側(cè)導(dǎo)致的問(wèn)題還是CDH側(cè)導(dǎo)致的問(wèn)題。
針對(duì)報(bào)錯(cuò)的Session,到CDSW所在服務(wù)器通過(guò)kubectl命令獲取到Session的日志,在日志中并無(wú)報(bào)錯(cuò)的信息,日志截圖如下:
在Session日志中沒(méi)有查看到有效信息的情況下,在啟動(dòng)Session的Terminal中執(zhí)行了兩次同樣的代碼,第二次依然報(bào)錯(cuò);在這之后,在CDSW的Master節(jié)點(diǎn),通過(guò)啟動(dòng)pyspark-shell命令行的方式提交了兩次同樣的代碼,第二次和之前一樣報(bào)錯(cuò),通過(guò)上面的測(cè)試,我們可以得出該問(wèn)題與CDSW無(wú)關(guān),由于報(bào)錯(cuò)的作業(yè)類型是PySpark,因此我們將問(wèn)題的重點(diǎn)轉(zhuǎn)移到CDH集群的Spark上,目前報(bào)錯(cuò)的環(huán)境使用的Spark版本是Spark2.2.0-cloudera1,下面針對(duì)Spark來(lái)分析該問(wèn)題。
通過(guò)報(bào)錯(cuò)信息分析是與認(rèn)證相關(guān)的報(bào)錯(cuò),通過(guò)查詢資料在Apache官網(wǎng)上找到了相關(guān)的jira,編號(hào)為SPARK-21890,鏈接如下:
https://issues.apache.org/jira/browse/SPARK-21890
該jira描述Spark Client已經(jīng)擁有了hdfs token,但是Spark Client本身無(wú)法感知到該hdfs token已獲取,因此還是會(huì)繼續(xù)請(qǐng)求,同時(shí)hdfs credentials provider對(duì)于這種已有憑據(jù)的請(qǐng)求不會(huì)進(jìn)行任何處理,因此導(dǎo)致了Delegation Token的報(bào)錯(cuò),詳情可以查閱上面的jira鏈接,同時(shí)該jira影響的版本是Spark2.2.0,與行內(nèi)使用的Spark版本相符,在與Support溝通后,確認(rèn)了問(wèn)題是該jira導(dǎo)致。
基于該問(wèn)題是Spark版本的bug導(dǎo)致,因此從根本上解決該問(wèn)題的方式是升級(jí)行內(nèi)的Spark版本,目前行內(nèi)所使用的Spark2.2.0是一個(gè)比較老的版本,該版本在CDH5.16.2上其實(shí)已經(jīng)不支持了,參考下面鏈接:
https://docs.cloudera.com/documentation/spark2/latest/topics/spark2_requirements.html
目前行內(nèi)的集群由于是從5.13升級(jí)上來(lái)的,因此還在繼續(xù)使用該版本的Spark,建議將行內(nèi)的Spark版本升級(jí)到Spark2.4,一方面來(lái)說(shuō)Spark2.4是Spark2的最高版本,相比Spark2.2多了新特性以及一些bug的修復(fù),同時(shí)行內(nèi)之前也有業(yè)務(wù)人員提出過(guò)更高版本Spark的需求,另一方面CDH6以及目前CDP7.1.4打包的都是Spark2.4。
CDH中Spark各版本對(duì)應(yīng)的fix可以參考下面的鏈接:
https://docs.cloudera.com/documentation/spark2/latest/topics/spark2_fixed_issues.html
在進(jìn)行Spark版本升級(jí)之前,如果遇到多次執(zhí)行代碼時(shí)遇到該報(bào)錯(cuò),那么停止當(dāng)前Session后,重新打開(kāi)一個(gè)新的Session再運(yùn)行代碼即可。
以上是“CDSW在Session中運(yùn)行代碼超過(guò)一次就報(bào)錯(cuò)怎么辦”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!