Spark on YARN

      網友投稿 713 2025-04-02

      YARN概述

      YARN是什么

      Apache Hadoop YARN(Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

      YARN在Hadoop生態系統中的位置:

      YARN產生的背景

      隨著互聯網高速發展導致數據量劇增,MapReduce 這種基于磁盤的離線計算框架已經不能滿足應用要求,從而出現了一些新的計算框架以應對各種場景,包括內存計算框架、流式計算框架和迭代式計算框架等,而MRv1 不能支持多種計算框架并存。

      YARN基本架構YARN基本架構

      ResourceManager(RM)

      ResourceManager負責集群資源的統一管理和調度,承擔了 JobTracker 的角色,整個集群只有“一個”,總的來說,RM有以下作用:

      1.處理客戶端請求

      2.啟動或監控ApplicationMaster

      3.監控NodeManager

      4.資源的分配與調度

      NodeManager(NM)

      NodeManager管理YARN集群中的每個節點。NodeManager 提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1 通過slot管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表著可供一個特定應用程序使用的針對每個節點的資源。

      NM有以下作用:

      1.管理單個節點上的資源

      2.處理來自ResourceManager的命令

      3.處理來自ApplicationMaster的命令

      ApplicationMaster(AM)

      每個應用有一個,負責應用程序的管理 。ApplicationMaster 負責協調來自 ResourceManager 的資源,并通過 NodeManager 監視容器的執行和資源使用(CPU、內存等的資源分配)。請注意,盡管目前的資源更加傳統(CPU 核心、內存),但未來會支持新資源類型(比如圖形處理單元或專用處理設備)。

      AM有以下作用:

      1.負責數據的切分

      2.為應用程序申請資源并分配給內部的任務

      3.任務的監控與容錯

      Container

      ●Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。Container有以下作用:

      1.對任務運行環境進行抽象,封裝CPU、內存等多維度的資源以及環境變量、啟動命令等任務運行相關的信息

      Spark on YARN配置與部署

      編譯時包含YARN:

      mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.7.1 -Phive -Phive-thriftserver -Psparkr -DskipTests clean package

      /make-distribution.sh --name hadoop2.7.1 --tgz -Psparkr -Phadoop-2.6 -Dhadoop.version=2.7.1 -Phive -Phive-thriftserver –Pyarn

      注意:

      hadoop的版本跟你使用的hadoop要對應,建議使用CDH或者HDP的hadoop發行版,對應關系已經處理好了。

      export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

      Spark on YARN的安裝

      Spark On YARN安裝非常簡單,只需要下載編譯好的Spark安裝包,在一臺帶有Hadoop Yarn客戶端的機器上解壓即可

      基本配置

      配置HADOOP_CONF_DIR或者YARN_CONF_DIR環境變量,讓Spark知道Yarn的配置信息。有三種方式:

      配置在spark-env.sh中

      在提交Spark應用之前export

      配置到操作系統的環境變量中

      如果使用的是HDP,請在spark-defaults.conf中加入:

      spark.driver.extraJavaOptions -Dhdp.version=current

      spark.yarn.am.extraJavaOptions -Dhdp.version=current

      spark-shell運行在YARN上

      登陸安裝Spark那臺機器

      ./spark-shell --master yarn

      提交Spark job給YARN

      ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] [app options]

      例子:

      ./spark-submit --master yarn --class com.dajiangtai.spark.MyWordCout ~/learning-saprk-1.0-SNAPSHOT.jar /tmp/test /tmp/output

      Spark on YARN運行架構解析

      回顧Spark基本工作流程

      以SparkContext為程序運行的總入口,在SparkContext的初始化過程中,Spark會分別創建DAGScheduler作業調度和TaskScheduler任務調度兩級調度模塊。其中作業調度模塊是基于任務階段的高層調度模塊,它為每個Spark作業計算具有依賴關系的多個調度階段(通常根據shuffle來劃分),然后為每個階段構建出一組具體的任務(通常會考慮數據的本地性等),然后以TaskSets(任務組)的形式提交給任務調度模塊來具體執行。而任務調度模塊則負責具體啟動任務、監控和匯報任務運行情況。

      YARN standalone/YARN cluster

      YARN standalone是0.9及之前版本的叫法,1.0開始更名為YARN cluster

      yarn-cluster(YarnClusterScheduler)

      Driver和AM運行在起,Client單獨的:

      ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] [app options]

      YARN standalone/YARN cluster

      Spark Driver首選作為一個ApplicationMaster在Yarn集群中啟動,客戶端提交給ResourceManager的每一個job都會在集群的worker節點上分配一個唯一的ApplicationMaster,由該ApplicationMaster管理全生命周期的應用。因為Driver程序在YARN中運行,所以事先不用啟動Spark Master/Client,應用的運行結果不能再客戶端顯示(可以在history server中查看)

      YARN standalone/YARN cluster

      YARN client

      yarn-client(YarnClientClusterScheduler)

      Client和Driver運行在一起(運行在本地),AM只用來管理資源

      ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode client [options] [app options]

      YARN client

      在Yarn-client模式下,Driver運行在Client上,通過ApplicationMaster向RM獲取資源。本地Driver負責與所有的executor container進行交互,并將最后的結果匯總。結束掉終端,相當于kill掉這個spark應用。一般來說,如果運行的結果僅僅返回到terminal上時需要配置這個。

      如何選擇:

      如果需要返回數據到client就用YARN client模式

      數據存儲到hdfs的建議用YARN cluster模式

      其他配置和注意事項

      如何更改默認配置

      spark_home/conf/spark-defaults.conf,每個app提交時都會使用他里面的配置

      --conf PROP=VALUE,為單獨的app指定個性化參數

      環境變量

      spark_home/conf/spark-defaults.conf,每個app提交時都會使用他里面的配置

      spark.yarn.appMasterEnv.[EnvironmentVariableName]

      相關配置

      特別注意:

      Spark on YARN

      在cluster mode下,yarn.nodemanager.local-dirs對?Spark executors 和Spark driver都管用, spark.local.dir將被忽略

      在client mode下, Spark executors 使用yarn.nodemanager.local-dirs, Spark driver使用spark.local.dir

      --files and –archives支持用#映射到hdfs

      --jars

      至此.

      spark Yarn

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在WPS使用熒光筆
      下一篇:word文檔如何找回未保存的文檔(如何找回未保存的word文檔內容)
      相關文章
      亚洲乱人伦中文字幕无码| 亚洲综合一区无码精品| 亚洲人成网亚洲欧洲无码| 亚洲人成在线精品| 亚洲高清在线mv| 亚洲精品韩国美女在线| 亚洲综合小说久久另类区| 亚洲色成人网一二三区| 亚洲国产成人精品久久 | 亚洲AV无码国产精品色| 亚洲伊人久久大香线焦| 亚洲国产日韩在线人成下载| 亚洲伊人久久大香线焦| 亚洲成人激情小说| 亚洲色最新高清av网站| 亚洲精华液一二三产区| 豆国产96在线|亚洲| 亚洲精品高清在线| 91麻豆国产自产在线观看亚洲 | 亚洲福利视频网址| 亚洲人成电影网站| 在线综合亚洲欧洲综合网站| 亚洲国产精品成人综合色在线| 亚洲精品无码专区久久| 亚洲a∨国产av综合av下载| xvideos亚洲永久网址| 亚洲男女内射在线播放| 国产偷v国产偷v亚洲高清| 亚洲AV无码久久精品色欲| 日木av无码专区亚洲av毛片| 亚洲国产精品久久人人爱| 亚洲中文字幕无码一去台湾 | 久久精品国产亚洲av四虎| 亚洲视频免费观看| 中文字幕乱码亚洲无线三区| 亚洲av中文无码字幕色不卡| 亚洲色欲久久久久综合网| 亚洲成色www久久网站夜月| 亚洲理论精品午夜电影| 亚洲色少妇熟女11p| 亚洲高清国产拍精品青青草原|