您好,登錄后才能下訂單哦!
在使用 Apache Spark 的時(shí)候,作業(yè)會(huì)以分布式的方式在不同的節(jié)點(diǎn)上運(yùn)行;特別是當(dāng)集群的規(guī)模很大時(shí),集群的節(jié)點(diǎn)出現(xiàn)各種問(wèn)題是很常見(jiàn)的,比如某個(gè)磁盤(pán)出現(xiàn)問(wèn)題等。我們都知道 ApacheSpark 是一個(gè)高性能、容錯(cuò)的分布式計(jì)算框架,一旦它知道某個(gè)計(jì)算所在的機(jī)器出現(xiàn)問(wèn)題(比如磁盤(pán)故障),它會(huì)依據(jù)之前生成的 lineage 重新調(diào)度這個(gè) Task。
我們現(xiàn)在來(lái)考慮下下面的場(chǎng)景:
? 有個(gè)節(jié)點(diǎn)上的磁盤(pán)由于某些原因出現(xiàn)間歇性故障,導(dǎo)致某些扇區(qū)不能被讀取。假設(shè)我們的 Spark 作業(yè)需要的數(shù)據(jù)正好就在這些扇區(qū)上,這將會(huì)導(dǎo)致這個(gè) Task 失敗。
? 這個(gè)作業(yè)的 Driver 獲取到這個(gè)信息,知道 Task 失敗了,所以它會(huì)重新提交這個(gè) Task。
? Scheduler 獲取這個(gè)請(qǐng)求之后,它會(huì)考慮到數(shù)據(jù)的本地性問(wèn)題,所以很可能還是把這個(gè) Task 分發(fā)到上述的機(jī)器,因?yàn)樗⒉恢郎鲜鰴C(jī)器的磁盤(pán)出現(xiàn)了問(wèn)題。
? 因?yàn)檫@個(gè)機(jī)器的磁盤(pán)出現(xiàn)問(wèn)題,所以這個(gè) Task 可能一樣失敗。然后 Driver 重新這些操作,最終導(dǎo)致了 Spark 作業(yè)出現(xiàn)失敗!
上面提到的場(chǎng)景其實(shí)對(duì)我們?nèi)藖?lái)說(shuō)可以通過(guò)某些措施來(lái)避免。但是對(duì)于 Apache Spark 2.2.0 版本之前是無(wú)法避免的,不過(guò)高興的是,來(lái)自 Cloudera 的工程師解決了這個(gè)問(wèn)題:引入了黑名單機(jī)制 Blacklist(詳情可以參見(jiàn)SPARK-8425,具體的設(shè)計(jì)文檔參見(jiàn)Design Doc for Blacklist Mechanism),并且隨著 Apache Spark 2.2.0 版本發(fā)布,不過(guò)目前還處于實(shí)驗(yàn)性階段。
黑名單機(jī)制其實(shí)是通過(guò)維護(hù)之前出現(xiàn)問(wèn)題的執(zhí)行器(Executors)和節(jié)點(diǎn)(Hosts)的記錄。當(dāng)某個(gè)任務(wù)(Task)出現(xiàn)失敗,那么黑名單機(jī)制將會(huì)追蹤這個(gè)任務(wù)關(guān)聯(lián)的執(zhí)行器以及主機(jī),并記下這些信息;當(dāng)在這個(gè)節(jié)點(diǎn)調(diào)度任務(wù)出現(xiàn)失敗的次數(shù)超過(guò)一定的數(shù)目(默認(rèn)為2),那么調(diào)度器將不會(huì)再將任務(wù)分發(fā)到那臺(tái)節(jié)點(diǎn)。調(diào)度器甚至可以殺死那臺(tái)機(jī)器對(duì)應(yīng)的執(zhí)行器,這些都可以通過(guò)相應(yīng)的配置實(shí)現(xiàn)。
我們可以通過(guò) Apache Spark WEB UI 界面看到執(zhí)行器的狀態(tài)(Status):如果執(zhí)行器處于黑名單狀態(tài),你可以在頁(yè)面上看到其狀態(tài)為 Blacklisted ,否則為 Active。如下圖所示:
擁有了黑名單機(jī)制之后,上面場(chǎng)景的問(wèn)題就可以很好的解決。
目前黑名單機(jī)制可以通過(guò)一系列的參數(shù)來(lái)控制,主要如下:
因?yàn)楹诿麊螜C(jī)制目前還處于實(shí)驗(yàn)性狀態(tài),所以上面的一些參數(shù)可能會(huì)在后面的 Spark 中有所修改。
結(jié)語(yǔ)
感謝您的觀看,如有不足之處,歡迎批評(píng)指正。
如果有對(duì)大數(shù)據(jù)感興趣的小伙伴或者是從事大數(shù)據(jù)的老司機(jī)可以加群:
658558542
歡迎大家交流分享,學(xué)習(xí)交流,共同進(jìn)步。(里面還有大量的免費(fèi)資料,幫助大家在成為大數(shù)據(jù)工程師,乃至架構(gòu)師的路上披荊斬棘?。?/span>
最后祝福所有遇到瓶頸的大數(shù)據(jù)程序員們突破自己,祝福大家在往后的工作與面試中一切順利。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。