在Spark搭建YARN

(一)什么是SparkONYarn模式
Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中運行的一種部署模式,它借助 Hadoop YARN 來管理資源和調度任務。

架構組成

ResourceManager:作為 YARN 的核心,負責整個集群的資源管理和調度。它會接收來自各個應用程序的資源請求,并根據集群資源的使用情況進行合理分配。

NodeManager:部署在集群中的每個節點上,負責管理該節點上的資源使用情況,監控容器的運行狀態,并且與 ResourceManager 保持通信,匯報節點的資源使用信息。

ApplicationMaster:在 Spark 應用啟動時,YARN 會為其分配一個 ApplicationMaster。它的主要職責是向 ResourceManager 申請資源,并且與 NodeManager 協作,啟動和管理 Spark 的 Executor 進程。

Spark Driver:負責執行用戶編寫的 Spark 應用程序代碼,將其轉化為一系列的任務,并調度這些任務到各個 Executor 上執行。

Executor:運行在 NodeManager 管理的容器中,負責具體執行 Spark 任務,并將執行結果返回給 Driver。

(二)運行流程
提交應用:用戶通過命令行或者其他方式向 YARN 提交 Spark 應用程序。

啟動 ApplicationMaster:ResourceManager 接收到應用程序的請求后,會在集群中的某個節點上啟動一個 ApplicationMaster 進程。

申請資源:ApplicationMaster 向 ResourceManager 注冊,并根據應用程序的需求申請資源。

啟動 Executor:ResourceManager 根據資源分配情況,通知相應的 NodeManager 啟動 Executor 進程。

任務執行:Spark Driver 將任務分發給各個 Executor 執行,Executor 執行完任務后將結果返回給 Driver。

應用結束:當所有任務執行完畢后,ApplicationMaster 向 ResourceManager 注銷,釋放占用的資源。

(三)模式分類
Client 模式:Driver 運行在客戶端進程中,客戶端會與 ApplicationMaster 和 Executor 進行通信。這種模式適用于交互式應用,例如使用 Spark Shell 進行數據探索和分析。在這種模式下,用戶可以在客戶端直接看到 Driver 的輸出和日志信息,方便調試和監控應用程序的運行狀態。

Cluster 模式:Driver 運行在集群中的某個節點上,由 ApplicationMaster 負責管理。這種模式適用于生產環境中的長時間運行的應用程序。在 Cluster 模式下,客戶端提交應用程序后可以斷開連接,應用程序會在集群中獨立運行,不受客戶端的影響。

(四)配置集群
1.上傳并解壓spark-3.1.2-bin-hadoop3.2.tgz,重命名解壓之后的目錄為spark-yarn。對應的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module

2. 修改一下spark的環境變量,/etc/profile.d/my_env.sh 。

# spark 環境變量
export SPARK_HOME=/opt/module/spark-yarn
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

同步給其他的設備: xsync ?/etc/profile.d/

3.修改hadoop的配置。/opt/module/hadoop-3.1.3/etc/hadoop/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>

把這個設置分發到其他節點。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步一下。

4.修改spark配置。 把三個文件的名字重新設置一下。

workers.tempalte 改成 workers,spark-env.sh.template 改成 spark-env.sh,

spark-defaults.conf.template 改成 spark-defaults.conf。

然后,在workers文件中添加

hadoop100
hadoop101
hadoop102

在spark-env.sh文件中,添加如下

SPARK_MASTER_HOST=hadoop100SPARK_MASTER_PORT=7077HADOOP_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoopYARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hadoop100:8020/directory"

在spark-defaults.conf文件中,添加如下

spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop100:8020/directory
spark.yarn.historyServer.address=hadoop100:18080
spark.history.ui.port=18080

5.同步配置文件到其他設備。xsync /opt/module/spark-yarn/sbin

(五)啟動集群
注意這里要同時啟動hadoop和spark。

1.啟動hdfs和yarn。使用我們之前配置的腳本:myhadoop start

2. 啟動spark和spark的歷史服務器。進入/opt/module/spart-yarn/sbin,運行: ./start-all.sh 和 ./start-history-server.sh

并通過jps去檢查是否有對應的進程。

(六)提交任務到集群
使用spark-submit提交任務

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster  /opt/module/spark-standalone/examples/jars/spark-examples_2.12-3.1.1.jar 10

代碼說明:

spark-submit:這是 Spark 提供的用于提交 Spark 應用程序的腳本。
2. --class org.apache.spark.examples.SparkPi:指定了應用程序的主類,也就是包含 main 方法的類。這里的 org.apache.spark.examples.SparkPi 是 Spark 自帶的示例程序,用于通過蒙特卡羅方法估算圓周率 π的值。

3. --master yarn:指定了 Spark 應用程序的運行模式為 YARN。YARN 是 Hadoop 的資源管理系統,能夠為 Spark 應用程序分配資源。

4. --deploy-mode cluster:指定了應用程序的部署模式為集群模式。在集群模式下,Driver 進程會在 YARN 集群內部的某個節點上運行。

5. /opt/module/spark-standalone/examples/jars/spark-examples_2.12-3.1.1.jar:指定了包含應用程序代碼的 JAR 文件的路徑。

6. 10:這是傳遞給應用程序的參數,在 SparkPi 示例中,這個參數表示用于估算π的采樣點數。

查看運行結果

1. 在yarn任務面板頁面中可以看到任務的信息。http://hadoop101:8088/cluster

如果可以看任務信息,說明任務運行成功!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79852.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79852.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79852.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringAI

機器學習&#xff1a; 定義&#xff1a;人工智能的子領域&#xff0c;通過數據驅動的方法讓計算機學習規律&#xff0c;進行預測或決策。 核心方法&#xff1a; 監督學習&#xff08;如線性回歸、SVM&#xff09;。 無監督學習&#xff08;如聚類、降維&#xff09;。 強化學…

如何用Redis實現分布式鎖?RedLock算法的核心思想?Redisson的看門狗機制原理?

一、Redis分布式鎖基礎實現 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默認30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…

前端面試寶典---js垃圾回收機制

什么是垃圾回收 垃圾回收是指一種自動內存管理機制&#xff0c;當聲明一個變量時&#xff0c;會在內存中開辟一塊內存空間用于存放這個變量。當這個變量被使用過后&#xff0c;可能再也不需要它了&#xff0c;此時垃圾回收器會自動檢測并回收這些不再使用的內存空間。垃圾回收…

阿里媽媽LMA2新進展:集成大語言模型與電商知識的通用召回大模型URM

近日&#xff0c;阿里媽媽在國際頂級學術會議 —— 國際萬維網大會&#xff08;International World Wide Web Conference, 簡稱WWW&#xff09;上共同主持了計算廣告算法技術相關的Tutorial&#xff08;講座&#xff09;&#xff0c;介紹了計算廣告領域的技術發展脈絡&#xf…

數字孿生實時監控汽車零部件工廠智能化巡檢新范式

在汽車制造業面臨數字化轉型時&#xff0c;汽車零部件工廠也面臨著提升生產效率、降低運營成本和增強市場競爭力的多重挑戰。傳統的巡檢方式已經難以滿足現代工廠對高效、精準管理和實時決策的需求。數字孿生系統的出現&#xff0c;為汽車零部件工廠提供了一種創新的智能化巡檢…

【計算機網絡】3數據鏈路層②

1. 數據鏈路層所處的地位 數據鏈路層使用的信道主要有兩種: ①點對點信道:PPP協議 ②廣播信道:有線局域網,CSMA/CD協議;無線局域網,CSMA/CA協議 對比項點對點信道 vs 單播廣播信道 vs 廣播核心是否一致? 一致(一對一傳輸)? 一致(一對所有傳輸)差異點前者是物理層…

c++中的函數(默認參數,占位參數,重載)

1&#xff0c;函數默認參數 在c中&#xff0c;函數的形參列表中的形參是可以有默認值得 語法&#xff1a;返回值類型 函數名 &#xff08;參數 默認值&#xff09;{} 示例&#xff1a; #include<iostream> using namespace std;//函數默認參數 // 就是如果傳了就…

【原創】使用阿里云存放一個臨時共享的文件

在某些場合&#xff0c;需要臨時將一個文件存儲到一個可被公網訪問的地方&#xff0c;某個服務需要訪問一下這個文件。這個文件基本上就是一次壽命&#xff0c;也就是你上傳一下&#xff0c;然后被訪問一下&#xff0c;這個文件的壽命就結束了。 對于這種需求&#xff0c;自建…

Python中列表(list)知識詳解(2)和注意事項以及應用示例

在 Python 中列表&#xff08;list&#xff09; 的包括其結構、常見操作&#xff08;更新、添加、刪除、查找、隊列棧行為等&#xff09;&#xff0c;下面將逐一的進行講解并附相關的示例。 一、列表的基礎知識 1. 定義與特點 定義方式&#xff1a;用 [] 包裹的有序可變集合 …

vscode extention踩坑記

# npx vsce package --allow-missing-repository --no-dependencies #耗時且不穩定 npx vsce package --allow-missing-repository #用這行 code --install-extension $vsixFileName --force我問ai&#xff1a;為什么我的.vsix文件大了那么多 ai答&#xff1a;因為你沒有用 --n…

移動端巡檢點檢,讓設備管理更便捷高效

在企業設備管理的日常工作中&#xff0c;巡檢點檢是保障設備正常運行的重要環節。傳統的巡檢方式依賴紙質記錄、人工操作&#xff0c;效率低、易出錯&#xff0c;已難以滿足現代企業的管理需求。隨著技術發展&#xff0c;越來越多設備管理系統引入移動端功能&#xff0c;為設備…

laravel 中使用的pdf 擴展包 laravel-snappy(已解決中文亂碼)

Centos7 安裝 wkhtmltopdf 1、先查看系統是 32 位的還是 64 位的 uname -a2、通過 composer 安裝 wkhtmltopdf 32位: $ composer require h4cc / wkhtmltopdf-i386 0.12.x $ composer require h4cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h4cc/wkhtmltopdf-…

Rust:重新定義系統編程的安全與效率邊界

在軟件工程領域&#xff0c;內存安全漏洞每年造成數千億美元損失&#xff0c;而C/C生態中60%的漏洞源于指針誤用。正是在這樣的背景下&#xff0c;Rust憑借其革命性的內存安全機制異軍突起。作為一門現代系統級編程語言&#xff0c;Rust不僅解決了困擾開發者數十年的內存管理難…

C++學習細節回顧(匯總二)

一.初始化列表相關 1.初始化順序受申明順序影響 2.在必要時可以部分不采用初始化列表&#xff0c;避免受特性1影響 二.非類型模板參數 template< class T , size_t N 10 > 三.特化–特殊化處理 template< class T > bool less(T left , T right) { return left&…

勾選某一行的勾選框,更改當前行的顏色,ALV數據發生變化的事件

文章目錄 屏幕ALV的創建定義變量注冊事件方法定義方法實現frm_data_change 效果 屏幕 ALV的創建 DATA: g_gui_custom_container TYPE REF TO cl_gui_custom_container. DATA: g_gui_alv_grid TYPE REF TO cl_gui_alv_grid.DATA: gt_listheader TYPE slis_t_listheader, &quo…

AI-02a5a6.神經網絡-與學習相關的技巧-批量歸一化

批量歸一化 Batch Normalization 設置合適的權重初始值&#xff0c;則各層的激活值分布會有適當的廣度&#xff0c;從而可以順利的進行學習。那么&#xff0c;更進一步&#xff0c;強制性的調整激活值的分布&#xff0c;是的各層擁有適當的廣度呢&#xff1f;批量歸一化&#…

解決SQL Server SQL語句性能問題(9)——合理使用表分區

9.2. 合理使用表分區 本專欄4.1.4節中,我們對表分區相關的概念和機制等基礎理論進行了較為詳細的介紹和論述,讀者可以參考該節中內容,或者,讀者也可以參考官方或其他相關資料。與其他關系庫類似,SQL Server 2005版本中引進的真正意義上的表分區技術,絕對是解決海量數據環…

C語言學習之文件操作

經過前面的學習&#xff0c;我們已經基本掌握了如何去寫一個C語言的代碼了。但是在實際的項目中&#xff0c;我們不可能不需要文件去操作。因為如果沒有文件&#xff0c;我們寫的程序是存儲在電腦的內存中的。如果程序推出&#xff0c;內存回收數據就隨之丟失了。如果我們要對數…

2025年PMP 學習十三 第9章 項目資源管理(9.1,9.2)

2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xff09; 序號過程過程組9.1規劃資源管理規劃9.2估算活動資源規劃9.3獲取資源執行9.4建設團隊執行9.5管理團隊執行9.6控制資源監控 文章目錄 2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xf…

藍橋杯13屆國B 完全日期

題目描述。 如果一個日期中年月日的各位數字之和是完全平方數&#xff0c;則稱為一個完全日期。 例如&#xff1a;2021 年 6 月 5 日的各位數字之和為 20216516&#xff0c;而 16 是一個完全平方數&#xff0c;它是 4 的平方。所以 2021 年 6 月 5 日是一個完全日期。 例如&…