Spark學習筆記(四) Yarn模式

2022-07-31 07:09:11 字數 3123 閱讀 4126

yarn執行模式就是說spark客戶端直接連線yarn,不需要額外構建spark集群。如果yarn是分布式部署的,那麼spark就跟隨它形成了分布式部署的效果。有yarn-clientyarn-cluster兩種模式,主要區別在於:driver程式的執行節點。

其實簡單說來,就是用spark替換掉了hadoop中的mapreduce;或者理解成,用yarn替換掉了spark的資源排程器。都是一回事,取長補短的結果。

1)修改hadoop配置檔案yarn-site.xml,新增如下內容:

yarn.nodemanager.pmem-check-enabled

false

yarn.nodemanager.vmem-check-enabled

false

2)修改spark-env.sh,新增如下配置,指定yarn的配置 :

[simon@hadoop102 conf]$ vi spark-env.sh

yarn_conf_dir=/opt/module/hadoop-2.7.2/etc/hadoop

3)分發配置檔案

[simon@hadoop102 conf]$ xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml

#spark-env.sh可分發可不分發,因為yarn是集群模式,spark執行在yarn上

[simon@hadoop102 conf]$ xsync spark-env.sh

4)啟動hadoop集群:

[simon@hadoop102 hadoop-2.7.2]$ start-dfs.sh

#在resourcemanager上啟動yarn

[simon@hadoop103 module]$ start-yarn.sh

5)執行乙個應用程式:

bin/spark-submit \

--class org.apache.spark.examples.sparkpi \

--master yarn \

--deploy-mode client \

./examples/jars/spark-examples_2.11-2.1.1.jar \

100

我們比較一下,它和local模式有什麼不一樣的地方:

bin/spark-submit \

--class org.apache.spark.examples.sparkpi \

./examples/jars/spark-examples_2.11-2.1.1.jar \

100

引數說明:

不同的地方很明顯:指定了master為yarn模式,--deploy-mode,為client模式,預設的代表是local模式。

畫了一張圖,感受一下:

其實我感覺圖畫的已經挺清楚的了,再嘗試用文字解釋一下吧,以後看原始碼會對圖的理解更加深刻:

1)客戶端提交應用給yarn的resourcemanager(rm);

3)am向rm索要執行任務的資源;

4)rm返回給am可用的資源列表(例如:nm1、nm2、nm3);

5)am選擇乙個nm,建立spark的執行器物件executor

6)那麼am怎麼知道這個executor建立了以及它的狀態呢,這時候executor反向註冊到am;

7)am知道了executor的狀態,開始分解任務,交給它執行。

先有乙個大致的印象,方便之後看原始碼去理解,這樣整個**的邏輯才更加清晰,反過來對整個流程也能理解的更加深刻。

有時候我們需要對任務進行實時的監控,或者返回來看任務的執行流程,那麼就需要檢視日誌了。由於我們現在使用的yarn模式,那麼就自然而然的想到,日誌資訊應該是在yarn的web ui中檢視。也就是:使得yarn能夠看到spark的執行日誌。

1)修改配置檔案spark-defaults.conf

新增如下內容:

spark.yarn.historyserver.address=hadoop102:18080

spark.history.ui.port=18080

2)重啟spark歷史服務

[simon@hadoop102 spark]$ sbin/stop-history-server.sh 

#輸出stopping org.apache.spark.deploy.history.historyserver

[simon@hadoop102 spark]$ sbin/start-history-server.sh

#輸出starting org.apache.spark.deploy.history.historyserver, logging to /opt/module/spark/logs/spark-simon-org.apache.spark.deploy.history.historyserver-1-hadoop102.out

3)提交任務到yarn執行

[simon@hadoop102 spark]$ bin/spark-submit \

--class org.apache.spark.examples.sparkpi \

--master yarn \

--deploy-mode client \

./examples/jars/spark-examples_2.11-2.1.1.jar \

100

4)web頁面檢視日誌

Spark學習筆記(四) Spark記憶體管理

1.2 堆外記憶體 2.記憶體空間分配 3.儲存記憶體 storage 管理 主要需要學習的executor上面的記憶體管理 作為乙個jvm程序,executor的記憶體管理建立在jvm的記憶體管理之上,spark對jvm的堆內記憶體 on heap 空間進行更詳細的分配,以充分利用記憶體空間。同時...

Python學習筆記四(Python OS模組)

python os模組提供了乙個統一的作業系統介面函式,通過python os模組可以實現對系統本身的命令,檔案,目錄進行操作,官方參考文件 1 os.sep 可以取代作業系統特定的路徑分割符 在linux unix下它是 在windows下它是 而在mac os下它是 os.sep 在linux返...

Hadoop學習筆記 YARN

yarn產生背景 為什麼會產生yran?這個與mapreduce1.x的架構有關,正是因為mapreduce1.x存在許多的問題,才會產生 yarn。mapreduce1.x的架構如下 hadoop1.x時,mapreduce的架構仍然是主從架構。乙個jobtracker帶多個tasktracker...