spark運(yùn)行級(jí)別問(wèn)題詳解

本地化級(jí)別

PROCESS_LOCAL
進(jìn)程本地化,代碼和數(shù)據(jù)在同一個(gè)進(jìn)程中,也就是在同一個(gè)executor中;計(jì)算數(shù)據(jù)的task由executor執(zhí)行,數(shù)據(jù)在executor的BlockManager中;性能最好

NODE_LOCAL

節(jié)點(diǎn)本地化,代碼和數(shù)據(jù)在同一個(gè)節(jié)點(diǎn)中;比如說(shuō),數(shù)據(jù)作為一個(gè)HDFS block塊,就在節(jié)點(diǎn)上,而task在節(jié)點(diǎn)上某個(gè)executor中運(yùn)行;或者是,數(shù)據(jù)和task在一個(gè)節(jié)點(diǎn)上的不同executor中;數(shù)據(jù)需要在進(jìn)程間進(jìn)行傳輸

NO_PREF

對(duì)于task來(lái)說(shuō),數(shù)據(jù)從哪里獲取都一樣,沒(méi)有好壞之分

RACK_LOCAL

機(jī)架本地化,數(shù)據(jù)和task在一個(gè)機(jī)架的兩個(gè)節(jié)點(diǎn)上;數(shù)據(jù)需要通過(guò)網(wǎng)絡(luò)在節(jié)點(diǎn)之間進(jìn)行傳輸

ANY

數(shù)據(jù)和task可能在集群中的任何地方,而且不在一個(gè)機(jī)架中,性能最差。

我們多數(shù)優(yōu)化最高做到NODE_LOCAL級(jí)別。為了達(dá)到這一級(jí)別,走以下步驟。

1,判斷hdfs本地化是否生效

使用命令hadoop checknative -a


1.png

如上圖1.png所示,已經(jīng)正確載入本地化

2,spark配置

在spark-env.sh文件里配置變量
export LD_LIBRARY_PATH=/home/dmp/hadoop/lib/native/:$LD_LIBRARY_PATH
在spark-default.conf里配置
spark.locality.wait 10
是對(duì)于運(yùn)行級(jí)別檢查的時(shí)間設(shè)置,單位是秒

3,啟動(dòng)spark,查看日志

Unable to load native-hadoop library for your platform
或者可以使用spark-shell腳本來(lái)查看配置項(xiàng)的問(wèn)題
也是看此日志是否出現(xiàn)。

4,使用beeline進(jìn)行測(cè)試

beeline -u jdbc:hive2://host:10000 -n root
select count(*) from tablename where time=20170211;
查看頁(yè)面spark運(yùn)行級(jí)別。

問(wèn)題發(fā)現(xiàn)與解決方式(spark 對(duì)于hostname與ip解析有區(qū)別)

使用spark sbin下面的腳本start-all.sh啟動(dòng)之后,頁(yè)面顯示的master是hostname,但是對(duì)于worker來(lái)說(shuō),顯示的卻是ip,其實(shí)它應(yīng)該像hadoop一樣,去顯示hostname,這塊不知道它內(nèi)部是怎么設(shè)置的。請(qǐng)看下圖


2.png

再看hadoop的圖


3.png

此種情況之下,spark本地化失效??聪聢D運(yùn)行級(jí)別。全部是any


4.png

跑完這條sql語(yǔ)句需要2.6*10=26min之久。


55.png

以上是一種效果。
現(xiàn)在先啟動(dòng)master,sbin/start-master.sh
然后手動(dòng)啟動(dòng)worker,指定worker的名字與master
/home/dmp/spark/sbin/start-slave.sh -h dmp3 spark://dmp8:7077
此時(shí)頁(yè)面worker情況


5.png

然后進(jìn)行sql語(yǔ)句查詢(xún)
select count(*) from tablename where time=20170211;
此時(shí)頁(yè)面的運(yùn)行級(jí)別


6.png

此種情況下查詢(xún)時(shí)間為:


7.png

速度提高10倍。對(duì)比原來(lái)的26分鐘。
這就是spark 運(yùn)行級(jí)別的奧妙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容