Spark on Yarn相關一些使用小技巧總結

2021-09-10 14:19:09 字數 2397 閱讀 3269

1、spark on yarn 有兩種模式,一種是cluster模式,一種是client模式。

a.執行命令 「./spark-shell --master yarn」 預設執行的是client模式。

b.執行 "./spark-shell --master yarn-client" 或者 "./spark-shelll --master yarn --deploy-mode client",執行client模式。

c.執行 "./spark-shell --master yarn-cluster" 或者 "./spark-shell --master yarn --deploy-mode cluster"。

注:生產上通常使用的是spark on yarn-cluster模式,由於client模式的driver在客戶端上,可能與executor不在同一區域網,兩者之間的通訊會很慢。

2、提交作業的方式

./spark/bin/spark-submit --class org.apache.spark.examples.sparkpi \        #作業類名

--master yarn \                     #spark模式

--deploy-mode cluster \                #spark on yarn 模式

--driver-memory 4g \                    #每乙個driver的記憶體

--executor-memory 2g \                    #每乙個executor的記憶體

--executor-cores 1 \                        #每乙個executor占用的core數量

--queue thequeue \                            #作業執行的佇列

examples/jars/spark-examples*.jar \            #jar包

10                                               #傳入類中所需要的引數

3、提交作業時 yarn 會將spark jars分發到 yarn 的container中,這十分耗費資源,故而可以將spark jars放在乙個yarn可以訪問到的目錄中,具體的做法如下(調優點):

vim spark-default.conf 新增

spark.yarn.jars hdfs://ip:8021/somepath/*

儲存生效,並將所有的spark jars上傳至 hdfs://ip:9000/somepath/即可

4、spark對於同時執行的作業數目有一定的限制

該限制由引數 "spark.port.maxretries"決定,該引數預設值為16,表明同一時間執行的作業最多為17個(不是16個),可以進行更改:

vim spark-default.conf 新增

spark.port.maxretries $

5、啟動spark on yarn 的命令優化

舉個栗子:"/spark-shell --master yarn --jars mysql驅動包絕對路徑" ,該命令相對較繁瑣

vim spark-defaults.conf 新增

spark.executor.extraclasspath mysql驅動包絕對路徑

spark.driver.extraclasspath mysql驅動包絕對路徑

儲存生效,則啟動命令變成:「/spark-shell --master yarn」

注:當某個jar包或者某個類找不到的時候,都可以用這種方式手動指定類或jar包的路徑

繼續簡化,vim spark-defaufs.conf 新增

spark.master spark

則啟動命令變成:"/spark-shell"

6、直接修改spark.defaults.conf,會對其它spark模式產生影響

可以拷貝乙份spark-defaults.conf,重新命名後配置個性化引數,然後以命令:

/spark-shell --properties-file $ 啟動

7、命令列傳入屬性的方法

/spark-shell --master yarn --conf spark.屬性 = 值

8、作業最大重試次數

作業最大重試次數預設是等於yarn配置中設定的全域性最大重試數,可以進行設定:

但不應該大於yarn設定的全域性最大重試次數。

Spark on YARN 的一些碎碎念

adventage speed,tasks can start up very quickly in memory worker yarn 中是沒有這個概念的 因為 executor runs in container memory of container executor memory 客戶端提...

一些webrtc gcc相關

1.google congestion control 就是webrtc中用的 webrtc通控制傳送端資料傳送位元速率來達到控制網路擁塞。draft ietf rmcat gcc 02.pdf 較早的草案draft alvestrand rmcat congestion 03.pdf 2.1 從w...

一些stl相關

vector swap ivec 清記憶體,單純的clear或remove是不會把記憶體清掉的 ivec.reserve 100000 預設vector空間大小,避免因為vec分配得不夠,後期還需要重新分配空間 ivec.swap vector ivec or vector ivec swap iv...