spark架構和RDD相關概念

?運行架構:

? ? ? ? ?Spark采用master - slave結構,Driver作為master負責作業任務調度,Executor作為slave負責實際執行任務。

核心組件

  1. ?Driver:執行Spark任務的main方法,將用戶程序轉化為作業,在Executor間調度任務,跟蹤Executor執行情況并通過UI展示運行情況。
  2. -Executor:工作節點中的JVM進程,運行任務并返回結果,還為緩存的RDD提供內存式存儲。
  3. Master & Worker:在獨立部署環境中,Master負責資源調度分配和集群監控,Worker在Master分配資源后進行數據并行處理。
  4. -ApplicationMaster:在YARN環境中,負責申請資源容器、運行任務、監控任務狀態和處理異常。

核心概念

  • Executor與Core:Executor是計算節點,可通過參數指定其數量、內存大小和虛擬CPU核數量。
  • 并行度:指集群并行執行任務的數量,默認由框架配置,也可在應用運行時動態修改。
  • 有向無環圖(DAG):是Spark程序數據流的高級抽象模型,用圖形表示程序計算執行過程,用于展示程序拓撲結構。

提交流程

? ? ? 以Yarn環境為例,Spark應用程序有Client和Cluster兩種部署執行方式。

  1. Yarn Client模式:Driver在本地機器運行,與ResourceManager通訊申請啟動ApplicationMaster,后續完成Executor啟動、反向注冊等流程后執行main函數,遇到Action算子時劃分stage并分發task。
  2. Yarn Cluster模式:Driver在Yarn集群資源中執行,任務提交后申請啟動ApplicationMaster(此時ApplicationMaster就是Driver),后續流程與Client模式類似 。

RDD相關概念

RDD概述:

? ? ? RDD是Spark最基本的數據處理模型,是一個抽象類,代表彈性、不可變、可分區且元素可并行計算的集合。具有存儲、容錯、計算、分片彈性,數據分布式存儲,封裝計算邏輯但不保存數據。

核心屬性:

? ? ? 包含分區列表、分區計算函數、RDD之間的依賴關系、分區器(K-V類型數據時可選)、首選位置(可選),這些屬性是RDD實現分布式計算和高效處理的關鍵。

執行原理:

? ? ? ?在Yarn環境中,Spark先申請資源創建調度和計算節點,將計算邏輯按分區劃分為任務,調度節點根據計算節點狀態發送任務執行,RDD負責封裝邏輯并生成任務。

RDD序列化:

? ? ? ?涉及閉包檢查,確保算子外數據可序列化;Spark支持Kryo序列化框架,比Java序列化速度快10倍,使用時即使采用Kryo序列化,相關類也需繼承Serializable接口。

RDD依賴關系

血緣關系:

? ? ?記錄RDD元數據和轉換行為,用于恢復丟失分區數據。

依賴類型:

? ? ?窄依賴指父RDD分區最多被一個子RDD分區使用;

? ? ?寬依賴指父RDD分區被多個子RDD分區依賴,會引發Shuffle。

階段與任務劃分:

? ? ? DAG記錄RDD轉換和任務階段;一個Action算子生成一個Job,Stage數量為寬依賴個數加1,一個Stage中最后一個RDD的分區數就是Task個數。

RDD持久化

Cache緩存:

? ? ?通過Cache或Persist方法緩存計算結果,默認存于JVM堆內存,觸發action算子時緩存,緩存丟失可重算丟失部分。

CheckPoint檢查點:

? ? ?將RDD中間結果寫入磁盤,切斷血緣依賴,提升容錯性,執行Action操作才會觸發。

區別:

? ? ? Cache不切斷血緣,數據可靠性低;Checkpoint切斷血緣,數據存儲在高可靠文件系統。建議對Checkpoint的RDD使用Cache緩存以提升效率。

RDD分區器:

? ? ? Spark支持Hash分區(默認)、Range分區和用戶自定義分區,僅Key - Value類型RDD有分區器。

? ? ? ?Hash分區根據key的hashCode取余確定分區;Range分區將數據按范圍映射到分區,保證數據均勻且分區間有序。

RDD文件讀取與保存:

? ? ? ? 可從文件格式(text、csv、sequence、object文件)和文件系統(本地、HDFS、HBASE、數據庫)兩個維度區分。不同文件格式有相應讀取和保存方法,如text文件用?sc.textFile?讀取、?saveAsTextFile?保存。

?

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

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

相關文章

安全是基石

“安全是基石”這句話強調了安全在個人、企業、社會等各個層面中的基礎性和不可替代的重要性。無論是物理安全、網絡安全、數據安全,還是生產安全、公共安全,都是保障穩定發展的前提。以下是不同領域中“安全”作為基石的體現: 1. 個人安全 基…

Linux Makefile-概述、語句格式、編寫規則、多文件編程、Makefile變量分類:自定義變量、預定義變量

目錄 1.make 1.1 make 命令格式 2.Makefile 核心概念? ? 2.1創建并運行 Makefile步驟 3. Makefile編寫 3.1最基礎Makefile 3.1.1使用默認make命令 3.1.2使用make -f 命令 3.1.2.1 使用make -f 命令執行默認make操作 3.1.2.2使用 make [ ‐f file ] [ targets ]命令 …

城市應急安防系統EasyCVR視頻融合平臺:如何實現多源視頻資源高效匯聚與應急指揮協同

一、方案背景 1)項目背景 在當今數字化時代,隨著信息技術的飛速發展,視頻監控和應急指揮系統在公共安全、城市應急等領域的重要性日益凸顯。尤其是在關鍵場所,高效的視頻資源整合與傳輸能力對于應對突發公共事件、實現快速精準的…

雙Token實現用戶登錄身份認證-Java版

雙Token實現用戶登錄身份認證-Java版 1. 設計方案 方案概述: Access Token: 短期有效的JWT,包含用戶ID、設備ID、token版本號。Refresh Token: 長期有效的令牌,存儲于Redis,關聯用戶信息、設備ID及token版本號,用于刷新Access Token。設備綁定: Token與設備ID綁定,防止跨…

Proteus vs Multisim:電路設計與仿真軟件對比

Proteus和Multisim作為兩款主流的電路設計與仿真軟件,在功能定位和應用場景上既有重疊也有顯著差異。以下從多個維度綜合闡述兩者的異同點: 一、相同點 基礎功能 ? 電路原理圖設計:支持電路設計和仿真分析。 ?? 虛擬儀器:提供…

ssh 三級跳

ssh 三級跳 在網絡安全和數據傳輸領域,SSH(Secure Shell)是一種常用的協議,用于加密兩臺計算機之間的通信。在某些情況下,你可能需要通過一個中間服務器來間接連接到目標服務器,這通常被稱為“三級跳”或“…

Java 性能優化:從原理到實踐的全面指南

性能優化是 Java 開發中不可或缺的一環,尤其在高并發、大數據和分布式系統場景下,優化直接影響系統響應速度、資源利用率和用戶體驗。Java 作為一門成熟的語言,提供了豐富的工具和機制支持性能調優,但優化需要深入理解 JVM、并發模…

【土堆 PyTorch 教程總結】PyTorch入門

目錄 一、python學習中兩大法寶函數 1、dir() 2、help() 二、PyTorch讀取數據集 1、Dataset類 (1)作用和基本原理 (2)常見用法 (3)自定義 Dataset 示例 2、Dataloader類 (1&#xff0…

5.DJI-PSDK:Psdk開發負載與Msdk的應用app進行交互:

DJI-PSDK:Psdk開發負載與Msdk的應用app進行交互: 負載設備和無人機使用數據傳輸模塊,在控制命令傳輸通道上以透傳的方式在PSDK和MSDK間傳輸控制指令。在高速數據傳輸通道上以透傳的方式在PSDK和MSDK間傳輸數據信息以及用戶自定義的數據。使用數據傳輸功能,不僅可以設置不同…

2025 藍橋杯省賽c++B組個人題解

聲明 本題解為退役蒻茍所寫,不保證正確性,僅供參考。 花了大概2個半小時寫完,感覺比去年省賽簡單,難度大概等價于 codeforces dv4.5 吧 菜雞不熟悉樹上背包,調了一個多小時 題目旁邊的是 cf 預測分 所有代碼均以通…

Dubbo(53)如何在Spring Boot中集成Dubbo?

在Spring Boot中集成Dubbo可以通過Spring Boot Starter來簡化配置&#xff0c;以下是詳細的步驟和相關代碼示例。 1. 引入依賴 首先&#xff0c;在Spring Boot項目的 pom.xml 中添加Dubbo相關的依賴&#xff1a; <dependencies><!-- Spring Boot Starter --><…

開發一個環保回收小程序需要哪些功能?環保回收小程序

廢品分類展示與識別 詳細分類列表&#xff1a;清晰展示常見廢品類型&#xff0c;如廢紙&#xff08;報紙、書本紙、包裝紙等&#xff09;、塑料&#xff08;塑料瓶、塑料容器、塑料薄膜等&#xff09;、金屬&#xff08;易拉罐、鐵制品、銅制品等&#xff09;、玻璃&#xff0…

抗干擾CAN總線通信技術在分布式電力系統中的應用

摘要&#xff1a;隨著分布式電力系統的廣泛應用&#xff0c;其通信系統的可靠性與穩定性受到了前所未有的挑戰。CAN總線通信技術以其卓越的抗干擾性能和可靠性&#xff0c;在眾多通信技術中脫穎而出&#xff0c;成為解決分布式電力系統通信問題的關鍵。本文深入剖析了CAN總線通…

MySQL與Oracle深度對比

MySQL與Oracle深度對比&#xff1a;數據類型與SQL差異 一、數據類型差異 1. 數值類型對比 數據類型MySQLOracle整數TINYINT, SMALLINT, MEDIUMINT, INT, BIGINTNUMBER(精度) 或直接INT(內部仍為NUMBER)小數DECIMAL(p,s), FLOAT, DOUBLENUMBER(p,s), FLOAT, BINARY_FLOAT, BI…

探索 Rust 語言:高效、安全與并發的完美融合

在當今的編程語言領域&#xff0c;Rust 正以其獨特的魅力吸引著越來越多開發者的目光。它誕生于 Mozilla 實驗室&#xff0c;旨在解決系統編程中長久以來存在的難題&#xff0c;如今已成為構建可靠、高效軟件的有力工具。 1 內存安全 Rust 通過所有權&#xff08;ownership&a…

springboot框架集成websocket依賴實現物聯網設備、前端網頁實時通信!

需求&#xff1a; 最近在對接一個物聯網里設備&#xff0c;他的通信方式是 websocket 。所以我需要在 springboot框架中集成websocket 依賴&#xff0c;從而實現與設備實時通信&#xff01; 框架&#xff1a;springboot2.7 java版本&#xff1a;java8 好了&#xff0c;還是直接…

第八天 開始Unity Shader的學習之Blinn-Phong光照模型

Unity Shader的學習筆記 第八天 開始Unity Shader的學習之Blinn-Phong光照模型 文章目錄 Unity Shader的學習筆記前言一、Blinn-Phong光照模型①計算高光反射部分效果展示 二、召喚神龍:使用Unity內置的函數總結 前言 今天我們編寫另一種高光反射的實現方法 – Blinn光照模型…

React八案例上

代碼下載 技術棧&#xff1a; React 核心庫&#xff1a;react、react-dom、react-router-dom腳手架&#xff1a;create-react-app數據請求&#xff1a;axiosUI組件庫&#xff1a; antd-mobile其他組件庫&#xff1a; react-virtualized、formikyup、react-spring 等百度地圖A…

線代[13]|線性代數題37道以及數學分析題3道(多圖預警)

博主首次發布于CSDN&#xff0c;禁止轉載&#xff01;&#xff08;CSDN&#xff1a;漢密士2025&#xff09; 文章目錄 一、緣起&#xff5c;《俗說矩陣》課程目錄照片存檔&#xff5c;線性代數學習脈絡&#xff5c;線代習題集封面存檔&#xff5c;未來——我與線性代數的糾纏 二…

OpenCV 圖形API(24)圖像濾波-----雙邊濾波函數bilateralFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 應用雙邊濾波到圖像。 該函數對輸入圖像應用雙邊濾波&#xff0c;如 http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Fil…