yarn執行模式就是說spark客戶端直接連線yarn,不需要額外構建spark集群。如果yarn是分布式部署的,那麼spark就跟隨它形成了分布式部署的效果。有yarn-client和yarn-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...