Spark Yarn部署(尚硅谷)


在Yarn上部署Spark程序,前提是啟動HDFS和YARN,需要有相關環境。

Spark客戶端直接連接Yarn,不需要額外構建Spark集群。有yarn-client和yarn-cluster兩種模式,主要區別在於:Driver程序的運行節點。
yarn-client:Driver程序運行在客戶端,適用於交互、調試,希望立即看到app的輸出
yarn-cluster:Driver程序運行在由RM(ResourceManager)啟動的AP(APPMaster)適用於生產環境。

 

配置

①修改hadoop配置文件yarn-site.xml,添加如下內容

[atguigu@hadoop102 hadoop]$ vi yarn-site.xml
<!--是否啟動一個線程檢查每個任務正使用的物理內存量,如果任務超出分配值,則直接將其殺掉,默認是true -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<!--是否啟動一個線程檢查每個任務正使用的虛擬內存量,如果任務超出分配值,則直接將其殺掉,默認是true -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

②修改spark-env.sh,添加如下配置,指定Yarn配置文件所在目錄

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

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

 

執行程序

--master yarn  指定Master的地址為yarn(默認為local)
--deploy-mode client  Driver運行在客戶端
[atguigu@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

 

查看執行進程

[atguigu@hadoop102 hadoop]$ yarn application -list
20/05/22 02:41:10 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.138.129:8032
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Total number of applications (application-types: [] and states: [SUBMITTED, ACCEPTED, RUNNING]):1
                Application-Id      Application-Name        Application-Type          User           Queue                   State             Final-State             Progress                        Tracking-URL
application_1590086434708_0002              Spark Pi                   SPARK       atguigu         default                ACCEPTED               UNDEFINED                   0%                                 N/A

 

部署流程

①spark client提交運行應用相關信息給ResourceManager
②ResourceManager在某一個NodeManager上創建ApplicationMaster
③ApplicationMaster向ResourceManager申請可用的資源
④ResourceManager向ApplicationMaster返回可用的資源列表
⑤ApplicationMaster選擇某個NodeManager上的Container,讓其創建Spark的執行器Executor
⑥Executor創建完畢后,向ApplicationMaster反向注冊,告訴它已經准備就緒,可以把任務發過來了
⑦ApplicationMaster分解任務並調度任務(發給Executor執行)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM