什么是SparkONYarn模式

1. 什么是 Spark on YARN?

Spark on YARN 是 Apache Spark 的一種部署模式,允許 Spark 應用程序在 Hadoop YARN 集群上運行,充分利用 YARN 的資源管理和調度能力。這種模式將 Spark 與 Hadoop 生態深度集成,使企業能夠在同一集群上統一管理批處理、流處理、交互式查詢等多種工作負載。

2. 核心優勢
  1. 資源統一管理

    • 與 Hadoop 共享集群資源,避免資源孤島(如 MapReduce、Hive、Spark 可共存)。
    • YARN 根據工作負載動態分配資源,提高集群利用率。
  2. 簡化運維

    • 依托 YARN 的高可用性(HA)和資源隔離機制,降低運維復雜度。
    • 支持與現有 Hadoop 集群無縫集成,無需額外部署集群管理器。
  3. 靈活的資源分配

    • 支持?內存 / CPU 細粒度控制,通過?spark-submit?參數調整資源分配。
    • 可配置多隊列(如生產隊列、測試隊列),實現資源隔離。
  4. 豐富的調度策略

    • 繼承 YARN 的調度器(容量調度器、公平調度器),滿足不同業務需求。
3. 架構組件

Spark on YARN 的架構涉及三個核心組件:

  1. YARN 組件

    • ResourceManager (RM):全局資源管理器,負責分配集群資源。
    • NodeManager (NM):每個節點的代理,管理容器(Container)生命周期。
    • 調度器:如容量調度器(Capacity Scheduler)或公平調度器(Fair Scheduler)。
  2. Spark 組件

    • Driver:應用程序的主進程,負責調度任務。
    • Executor:運行在容器中的工作進程,執行具體計算任務。
  3. 通信流程

    • Spark 應用通過?spark-submit?向 YARN RM 提交請求。
    • RM 分配 Container 并啟動 ApplicationMaster(Spark Driver)。
    • Driver 向 RM 注冊并請求資源,然后與 NM 通信啟動 Executor。
4. 部署模式

Spark on YARN 支持兩種部署模式:

  1. Client 模式

    • Driver 運行在客戶端
      • 適用于交互式應用(如 Spark Shell、Jupyter Notebook)。
      • Driver 在提交作業的客戶端進程中運行,直接接收任務輸出。
    • 提交命令

      bash

      spark-submit \--master yarn \--deploy-mode client \--num-executors 10 \--executor-memory 4g \my-app.jar
      
  2. Cluster 模式

    • Driver 運行在集群中
      • 適用于生產環境,避免客戶端與集群長時間連接。
      • Driver 作為 YARN 中的一個 ApplicationMaster 運行,與客戶端分離。
    • 提交命令

      bash

      spark-submit \--master yarn \--deploy-mode cluster \--num-executors 10 \--executor-memory 4g \my-app.jar
      
5. 資源配置參數

通過?spark-submit?或?spark-defaults.conf?配置:

參數說明
--num-executors啟動的 Executor 數量(默認 2)。
--executor-memory每個 Executor 的內存大小(如 4g)。
--executor-cores每個 Executor 的 CPU 核心數(默認 1)。
--driver-memoryDriver 的內存大小(默認 1g)。
--queue指定 YARN 隊列名稱(如?defaultprod)。
--conf spark.yarn.maxAppAttempts應用最大重試次數(默認 2)。
--conf spark.yarn.executor.memoryOverhead每個 Executor 的堆外內存(默認 executorMemory * 0.10)。
6. 典型應用場景
  1. 混合工作負載集群

    • 在同一 Hadoop 集群上同時運行 Spark、MapReduce、Hive 等作業。
  2. 企業級數據平臺

    • 利用 YARN 的資源隔離特性,為不同部門分配專用隊列(如財務、研發)。
  3. 大規模數據處理

    • 處理 PB 級數據,通過 YARN 動態調整資源應對峰值負載。
7. 監控與故障排查
  1. YARN Web UI

    • http://resourcemanager:8088:查看所有應用狀態、資源使用情況。
  2. Spark Web UI

    • Driver 運行時的 Web UI(默認端口 4040):

      plaintext

      http://driver-node:4040  # Client 模式
      http://application-master-node:4040  # Cluster 模式
      
  3. 日志查看

    • YARN 應用日志:

      bash

      yarn logs -applicationId <application_id>
      
8. 優缺點
優點缺點
與 Hadoop 生態無縫集成依賴 YARN,增加部署復雜度
資源利用率高任務啟動延遲較高(需等待 Container 分配)
支持高可用性需深入理解 YARN 配置和調優
多租戶資源隔離對網絡和磁盤 I/O 敏感
9. 配置步驟
  1. 確保 YARN 正常運行

    • 啟動 HDFS 和 YARN:

      bash

      start-dfs.sh
      start-yarn.sh
      
  2. 配置 Spark

    • 編輯?$SPARK_HOME/conf/spark-env.sh

      bash

      export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop  # Hadoop 配置目錄
      

  3. 提交作業

    bash

    spark-submit \--master yarn \--deploy-mode cluster \--class org.apache.spark.examples.SparkPi \$SPARK_HOME/examples/jars/spark-examples_*.jar \100
    

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

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

相關文章

【git】clone項目后續,github clone的網絡配置,大型項目git log 輸出txt,切換commit學習,goland遠程,自存檔

git網絡配置&#xff0c;解決git clone github速度奇慢 git config --global http.proxy http://127.0.0.1:7897 git config --global https.proxy http://127.0.0.1:7897git log輸出到文件&#xff08;便于checkout&#xff09; 這里有些字符如表情會亂碼&#xff0c;不知道…

Java游戲服務器開發流水賬(3)游戲數據的緩存簡介

簡介 游戲服務器數據緩存是一種在游戲服務器運行過程中&#xff0c;用于臨時存儲經常訪問的數據的技術手段&#xff0c;旨在提高游戲性能、降低數據庫負載以及優化玩家體驗。游戲開發中數據的緩存可以使用Java自身的內存也可以使用MemCache&#xff0c;Redis&#xff0c;注意M…

STL?vector!!!

一、前言 之前我們借助手撕string加深了類和對象相關知識&#xff0c;今天我們將一起手撕一個vector&#xff0c;繼續深化類和對象、動態內存管理、模板的相關知識 二、vector相關的前置知識 1、什么是vector&#xff1f; vector是一個STL庫中提供的類模板&#xff0c;它是存儲…

C++學習之路,從0到精通的征途:繼承

目錄 一.繼承的概念及定義 1.繼承的概念 2.繼承的定義 (1)繼承的定義格式 (2)繼承基類成員訪問方式的變化 二.基類與派生類間的轉換 1.派生類對象賦值給基類的引用/指針 2. 派生類對象直接賦值給基類對象 三.繼承的作用域 四.派生類的默認成員函數 1.構造函數 2.拷…

用vue和go實現登錄加密

前端使用CryptoJS默認加密方法&#xff1a; var pass CryptoJS.AES.encrypt(formData.password, key.value).toString()使用 CryptoJS.AES.encrypt() 時不指定加密模式和參數時&#xff0c;CryptoJS 默認會執行以下操作 var encrypted CryptoJS.AES.encrypt("明文&quo…

React百日學習計劃——Deepseek版

階段一&#xff1a;基礎鞏固&#xff08;1-20天&#xff09; 目標&#xff1a;掌握HTML/CSS/JavaScript核心語法和開發環境搭建。 每日學習內容&#xff1a; HTML/CSS&#xff08;1-10天&#xff09; 標簽語義化、盒模型、Flex布局、Grid布局、響應式設計&#xff08;媒體查詢…

WPF中如何自定義控件

WPF自定義控件簡化版&#xff1a;賬戶菜單按鈕&#xff08;AccountButton&#xff09; 我們以**“賬戶菜單按鈕”為例&#xff0c;用更清晰的架構實現一個支持標題顯示、漸變背景、選中狀態高亮**的自定義控件。以下是分步拆解&#xff1a; 一、控件核心功能 我們要做一個類似…

Deepseek+Xmind:秒速生成思維導圖與流程圖

deepseekxmind&#xff0c;快速生成思維導圖和流程圖 文章目錄 思維導圖deepseek筆記本 txt文件xmind 流程圖deepseekdraw.io 思維導圖 deepseek 筆記本 txt文件 將deep seek的東西復制到文本文件中&#xff0c;然后將txt文件拓展名改成md xmind 新建思維導圖----左上角三…

基于javaweb的SpringBoot愛游旅行平臺設計和實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

服務器機架的功能和重要性

服務器已經成為各個行業必不可少的網絡設備&#xff0c;而服務器機架則是數據中心和IT基礎設施中不可或缺的重要組成部分&#xff0c;服務器機架能夠為服務器和其他網絡設備提供物理支撐&#xff0c;同時還可以提供設備維護和管理等多種功能&#xff0c;本文就來介紹一下服務器…

游戲引擎學習第277天:稀疏實體系統

回顧并為今天定下基調 上次我們結束的時候&#xff0c;基本上已經控制住了跳躍的部分&#xff0c;達到了我想要的效果&#xff0c;現在我們主要是在等待一些新的藝術資源。因此&#xff0c;等新藝術資源到位后&#xff0c;我們可能會重新處理跳躍的部分&#xff0c;因為現在的…

阿克曼-幻宇機器人系列教程1- 實現上位機與下位機交互的兩種方式

1. 電腦與機器人通過SSH命令連接 1.1 將機器人上電 目的&#xff1a;將機器人變成熱點 目標&#xff1a;將電腦連接機器人網絡 熱點名稱&#xff1a;Huanyu-111 密碼&#xff1a;12345678 1.2 完成電腦與機器人之間的連接 實現&#xff1a;在電腦終端中執行命令通過SSH登錄…

Rust 中的 Pin 和 Unpin:內存安全與異步編程的守護者

在 Rust 的世界里&#xff0c;Pin 和 Unpin 是兩個看似不起眼、實則至關重要的概念。它們在內存安全和異步編程中扮演著關鍵角色&#xff0c;是 Rust 開發者必須掌握的知識。今天&#xff0c;就讓我們深入探討這兩個概念&#xff0c;看看它們是如何在 Rust 的生態系統中發揮作用…

如何界定合法收集數據?

首席數據官高鵬律師團隊 在當今數字化時代&#xff0c;數據的價值日益凸顯&#xff0c;而合法收集數據成為了企業、機構以及各類組織必須嚴守的關鍵準則。作為律師&#xff0c;深入理解并準確界定合法收集數據的范疇&#xff0c;對于保障各方權益、維護法律秩序至關重要。 一…

自動駕駛的“眼睛”:用Python構建智能障礙物檢測系統

自動駕駛的“眼睛”:用Python構建智能障礙物檢測系統 在自動駕駛技術日益成熟的今天,障礙物檢測系統成了汽車智能化不可或缺的部分。無論是高速公路上的突發狀況,還是城市街道中的行人與車輛,準確識別障礙物并及時反應,是保證行車安全的關鍵。 那么,我們如何用Python構…

19.Excel數據透視表:第2部分數據透視計算

一 日期組合 不想看具體是哪一天的收入&#xff0c;想看每個月的收入是多少&#xff0c;要對日期進行組合。 光標選中日期字段下的數據&#xff0c; 右鍵。 補充&#xff1a;第2種方法。 補充&#xff1a;可以同時選擇多個。 下面這個是錯誤的。 源數據里面有不同的年份&#x…

Eclipse 插件開發 6 右鍵菜單

Eclipse 插件開發 6 右鍵菜單 1 plugin.xml2 SampleHandler.java3 Activator.java 1 plugin.xml <?xml version"1.0" encoding"UTF-8"?> <?eclipse version"3.4"?> <plugin><!-- 定義命令 --><extension point&…

用vite腳手架建立 前端工程

? 參考 開始 | Vite 官方中文文檔 腳本 chcp 65001 echo 建立vite工程 set PRO_NAMEmy-vue-app call npm create vitelatest %PRO_NAME% --template vue cd ./%PRO_NAME%set NOW_PATH%cd% echo now_path %NOW_PATH% echo 點擊回車啟動vite工程&#xff0c;請訪問ht…

ESP32C3連接wifi

文章目錄 &#x1f527; 一、ESP32-C3 連接 Wi-Fi 的基本原理&#xff08;STA 模式&#xff09;? 二、完整代碼 注釋講解&#xff08;適配 ESP32-C3&#xff09;&#x1f4cc; 三、幾個關鍵點解釋&#x1f51a; 四、小結 &#x1f527; 一、ESP32-C3 連接 Wi-Fi 的基本原理&a…

LangSmith 基本使用教程

LangSmith 是一個強大的工具&#xff0c;可以幫助開發者追蹤、監控和分析語言模型應用程序的性能。下面我將介紹兩種基本的追蹤方式&#xff1a;追蹤 OpenAI 調用和追蹤整個應用程序。 1. 追蹤 OpenAI 調用 (Trace OpenAI calls) 這種方法主要用于追蹤對 OpenAI API 的調用&a…