Spark Core 3.3.2 略講~

在這里插## 標題入圖片描述

> 						大家好,我是程序員小羊!

?博客主頁: https://blog.csdn.net/m0_63815035?type=blog

💗《博客內容》:大數據、Java、測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識
📢博客專欄: https://blog.csdn.net/m0_63815035/category_11954877.html
📢歡迎點贊 👍 收藏 ?留言 📝
📢本文為學習筆記資料,如有侵權,請聯系我刪除,疏漏之處還請指正🙉
📢大廈之成,非一木之材也;大海之闊,非一流之歸也?

在這里插入圖片描述

前言

在這里插入圖片描述

一、概述

  1. 簡介

    • Apache Spark 是快速通用的分布式計算引擎,誕生于加州大學伯克利分校AMP實驗室,基于內存計算,適用于迭代算法(如數據挖掘、機器學習)。
    • 核心優勢:中間結果緩存于內存,減少磁盤IO,比Hadoop MapReduce快10-100倍。
  2. 歷史

    • 2009年始于伯克利大學,2010年開源,2014年成為Apache頂級項目。
    • 主要創始人Matei Zaharia創立了Databricks公司,推動Spark商業化。
  3. 與MapReduce對比

    特性MapReduceSpark
    編程模型僅Map和Reduce支持多種算子(map、flatMap等)
    運算效率中間結果寫入磁盤,IO開銷大中間結果存內存,基于DAG優化調度
    適用場景離線計算離線+實時計算
    數據共享依賴HDFS讀寫內存緩存復用
  4. 核心特點

    • :內存計算+DAG引擎,速度遠超MapReduce。
    • 易用:支持Scala、Java、Python等多語言,提供80+高級算法。
    • 通用:一站式支持批處理(Spark Core)、交互式查詢(Spark SQL)、流處理(Spark Streaming)、機器學習(MLlib)、圖計算(GraphX)。
    • 兼容:可整合Hadoop生態(HDFS、YARN等)。

二、核心組件

  1. Spark Core

    • 核心組件,負責離線批處理,提供RDD(彈性分布式數據集)抽象。
  2. 其他組件

    • Spark SQL:結構化數據查詢,支持SQL和DataFrame。
    • Spark Streaming:準實時流處理,基于DStream。
    • MLlib:機器學習庫,包含分類、回歸等算法。
    • GraphX:圖計算庫,支持圖算法(如PageRank)。

三、運行架構

  1. 核心角色

    • Driver:負責任務調度、DAG生成、與集群通信。
    • Executor:運行Task,緩存數據,位于Worker節點。
    • Cluster Manager:資源管理器(支持Standalone、YARN、K8s等)。
  2. 運行流程

    • 提交應用→Driver申請資源→Executor反向注冊→解析代碼生成RDD→DAG調度劃分Stage→Task分發至Executor執行。
  3. 運行模式

    • Local:本地模式,用于調試,單進程多線程模擬集群。
    • Standalone:Spark自帶集群模式,Master-Worker架構。
    • YARN:整合Hadoop YARN,國內主流模式,支持Client/Cluster部署。
    • Kubernetes:容器化部署,支持動態資源調度。

四、核心編程

  1. RDD(彈性分布式數據集)

    • 定義:不可變、可分區、并行計算的分布式數據集合,通過血統(Lineage)實現容錯。
    • 五大屬性:分區列表、分區計算函數、依賴關系、分區器(可選)、首選計算位置(可選)。
    • 創建方式
      • 內存集合(parallelize/makeRDD
      • 外部文件(textFile/wholeTextFiles
  2. 算子

    • 轉換算子(Transformation):懶執行,返回新RDD(如mapfilterreduceByKey)。
    • 行動算子(Action):觸發計算,返回結果(如collectcountforeach)。
    • 控制算子cache(內存緩存)、persist(磁盤緩存)、checkpoint(持久化并切斷依賴)。
  3. 寬依賴與窄依賴

    • 窄依賴:父RDD分區與子RDD分區一對一(如map),可并行計算。
    • 寬依賴:父RDD分區與子RDD分區多對多(如groupByKey),會產生Shuffle。

五、Shuffle機制

  1. 定義:數據在分區間重新分布的過程,涉及大量磁盤IO和網絡傳輸,是性能瓶頸。

  2. Spark Shuffle類型

    • Hash Shuffle:早期實現,小文件過多,已被淘汰。
    • Sort Shuffle:主流實現,按Key排序,合并小文件,減少IO。
      • SortShuffleWriter:內存排序+溢寫合并。
      • BypassMergeSortShuffleWriter:非聚合場景優化,避免排序。
  3. 優化建議

    • 啟用Map端預聚合(如reduceByKey替代groupByKey)。
    • 調整緩沖區大小(spark.shuffle.file.buffer)和并行度(spark.default.parallelism)。
    • 壓縮Shuffle數據(spark.shuffle.compress)。

六、內存管理

  1. 統一內存管理(默認)

    • 內存分為:存儲內存(緩存RDD)、執行內存(Shuffle等計算)、其他內存(用戶數據結構)。
    • 動態借用機制:存儲與執行內存可互相借用,執行內存可強制收回。
  2. 配置參數

    • spark.memory.fraction:統一內存占JVM堆比例(默認0.6)。
    • spark.memory.storageFraction:存儲內存占統一內存比例(默認0.5)。

七、應用場景

  • 離線批處理(日志分析、數據清洗)。
  • 實時流處理(監控告警、實時推薦)。
  • 機器學習(模型訓練、預測)。
  • 圖計算(社交網絡分析、路徑規劃)。

結尾

Spark Core是Spark生態的基礎,通過內存計算、DAG優化和豐富的算子,大幅提升分布式計算效率。其核心是RDD抽象和Shuffle機制,結合多模式部署和內存管理優化,成為大數據處理的主流引擎。實際應用中需根據場景選擇合適的運行模式和算子,重點優化Shuffle和內存使用以提升性能。

今天這篇文章就到這里了,大廈之成,非一木之材也;大海之闊,非一流之歸也。感謝大家觀看本文

在這里插入圖片描述

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

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

相關文章

智能家居Agent:物聯網設備的統一控制與管理

智能家居Agent:物聯網設備的統一控制與管理 🌟 Hello,我是摘星! 🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。 🦋 每一個優化都是我培育的花朵,每一個特性都是我放飛的…

漢高攜手SAP推出AI驅動的退換貨與爭議管理解決方案

2025年8月12日,SAP宣布與全球知名的膠黏劑、密封劑及消費品制造商漢高(Henkel AG & Co. KGaA)聯合開發了一套基于SAP AI Services的定制化解決方案,用于優化退換貨及爭議管理流程。該方案旨在通過人工智能自動化索賠相關文件的…

[SC]SystemC中的SC_FORK和SC_JOIN用法詳細介紹

SystemC中的SC_FORK和SC_JOIN用法詳細介紹 摘要:SystemC是一個開源的C++庫(由Accellera和IEEE標準化,IEEE 1666-2011),用于系統級建模、硬件描述和仿真。它擴展了C++以支持硬件概念,如模塊(sc_module)、端口(sc_port)、信號(sc_signal)和進程(SC_METHOD、S…

工作流調度(草稿)

串行回復當我加上第三條分支,此時的輸出就很混亂了,按理來說最后輸出的第二波輸出反而先結束了,調用LLM結果的第一波輸出最后才輸出,這是為什么?當我把LLM節點改為一個不耗時的節點的時候:初步猜測&#xf…

AI不再停留在概念階段,而是在各行業核心業務場景產生實際價值。隨著大模型、邊緣計算等技術的突破,AI應用將向實時化、自主化、普惠化方向深度演進。

一、金融領域:智能風控與欺詐檢測案例:某銀行使用AI實時攔截信用卡欺詐交易,每年減少損失$2400萬python# 使用XGBoost構建欺詐檢測模型(Python) import pandas as pd from xgboost import XGBClassifier from sklearn.…

GStreamer中解復用器(Demuxer)

在 GStreamer 中,解復用器(Demuxer) 用于分離容器格式(如 MP4、MKV、AVI 等)中的 視頻、音頻、字幕等流。不同的容器格式需要不同的 Demuxer 元素。 一、常見的 GStreamer Demuxer 元素 1. MP4 / QuickTime 格式 qtdemux 用于解析 MP4(.mp4)、MOV(.mov) 等基于 Quic…

MySQL 存儲過程終止執行的方法

在 MySQL 存儲過程(PROCEDURE)開發中,我們常常遇到這樣的需求: 在執行過程中,如果某些條件不滿足,就要立即終止剩余邏輯,避免無效或錯誤的操作。不同于 Java、Python 等編程語言直接 return 退出…

鯤鵬arm服務器安裝neo4j社區版,實現圖書庫自然語言檢索基礎

我在dify實施中,發現采用自然語言進行數據庫檢索效果還不錯,我就想起來了圖數據庫的自然語言檢索,以前圖書庫的算法我不熟悉,這次打算采用這種方式完成。我才用但是鯤鵬920,泰山服務器,2280主機&#xff0c…

小八的學習日記 -- 為什么kafka吞吐量大

1. 「順序讀寫」—— 像開高速公路一樣爽!????傳統硬盤的痛點:?? 普通硬盤(HDD)像在熱鬧的菜市場找東西,磁頭要來回移動(尋道),隨機讀寫特別慢。??Kafka 的妙招:…

5G NTN 衛星測試產品

5G NTN 衛星測試產品非地面網絡測試解決方案衛星射頻節點測試測量相控陣天線應對衛星基礎設施測試挑戰適用于 5G NTN 衛星測試的高性能解決方案衛星基礎設施測試解決方案的優勢5G NTN 衛星測試產品FSW 信號與頻譜分析儀R&SSMW200A 矢量信號發生器非地面網絡測試解決方案 透…

Redis 內存大頁(Transparent Huge Pages, THP)與寫時復制(COW)性能全解:原理、源碼、調優與架構進階

Redis 內存大頁(Transparent Huge Pages, THP)與寫時復制(COW)性能全解:原理、源碼、調優與架構進階 Redis 性能瓶頸常見于持久化時 fork 操作的延遲,但系統級“內存大頁”(THP)配置…

爬蟲與數據分析入門:從中國大學排名爬取到數據可視化全流程

在數據驅動的時代,掌握爬蟲技術獲取數據、運用數據分析工具處理數據并通過可視化呈現結果,已成為一項重要技能。本文以 “中國大學排名爬取與分析” 為例,帶你走進爬蟲與數據分析的世界,了解相關基礎知識與實操流程。 一、爬蟲基…

劇本殺小程序系統開發:推動行業數字化轉型新動力

近年來,劇本殺行業呈現出爆發式增長的態勢,線下劇本殺店鋪如雨后春筍般涌現,成為年輕人休閑娛樂的熱門選擇。然而,隨著行業的快速發展,也暴露出一些問題,如場地限制、人員組織困難、劇本更新緩慢等。這些問…

多重時間聚合算法(MAPA)改進需求預測模型

這篇文章Improving your forecasts using multiple temporal aggregation介紹了“多重聚合預測算法”(MAPA)。它指出傳統預測常依賴單一數據頻率,但MAPA通過將數據聚合到不同時間粒度(如日、周、月、年)并分別建模&…

【測試】BDD與TDD在軟件測試中的對比?

文章目錄BDD與TDD在軟件測試中的對比與應用引言一、TDD詳解:測試驅動開發二、BDD詳解:行為驅動開發三、BDD與TDD的對比四、實際項目應用舉例結論BDD與TDD在軟件測試中的對比與應用 在軟件開發領域,測試是確保產品質量的核心環節。作為高級Ja…

SVM實戰:從線性可分到高維映射再到實戰演練

在支持向量機的分類模型中,我們會遇到兩大類模型,一類是線性可分的模型,還有一類是非線性可分的。非線性可分模型是基于線性可分的基礎上來處理的。支持向量機比較適合小樣本的訓練。線性可分如下圖所示,有紫色和黑色兩類&#xf…

面試問題總結——關于ROS

ROS作為機器人開發中必不可少的一環,總結了一些面試中常見的問題。 目錄 1.ROS1 和 ROS2 的核心區別 2.ROS話題間通信和服務端之間通信有什么區別? 3.RViz 可視化ROS的消息發布是一對一還是一對多的? 4.ROS中的機器人指令發布ros topic pub的原理實現,用的ROS1還是ROS2? 5…

軟考架構師:數據庫的范式

軟考架構師:數據庫的范式 😄生命不息,寫作不止 🔥 繼續踏上學習之路,學之分享筆記 👊 總有一天我也能像各位大佬一樣 🏆 博客首頁 怒放吧德德 To記錄領地 🌝分享學習心得&#xf…

[激光原理與應用-184]:光學器件 - 光學器件中晶體的用途、分類、特性及示例

一、用途光學晶體在光學器件中扮演核心角色,主要應用于以下領域:光學系統調節與控制:制作偏振器、濾光器、透鏡等,調節光的傳播方向、強度及偏振狀態。激光技術:作為激光介質,實現頻率轉換、調制、偏轉及Q開…

深入解析C#并行編程:從并行循環到異步編程模式

在當今多核處理器普及的時代,高效利用計算資源成為開發者必備技能。本文將深入剖析C#中的并行編程利器——任務并行庫(TPL)和經典異步模式,助你提升程序性能。 🚀 一、任務并行庫(TPL)核心機制 1. Parallel.For:并行化的for循環 通…