文章目錄
Spark生態模塊與運行模式
一、Spark生態模塊
二、Spark運行模式
Spark生態模塊與運行模式
一、Spark生態模塊
Spark 生態模塊包括:SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib 和 GraphX。與 Hadoop 相關的整個技術生態如下所示:
+-------------------+ +-------------------+| Spark 應用層 | | Hadoop 應用層 |+-------------------+ +-------------------+| Spark SQL | <-->| Hive | (兼容 HiveQL, 元數據共享)| StructuredStreaming| <->| Kafka/Flume | (流數據源集成)| MLlib | <-->| HDFS/HBase | (讀取訓練數據/存儲模型)| GraphX | <-->| HDFS | (圖數據存儲)+-------------------+ +-------------------+↓ ↓+---------------------------------------------------+| Spark 計算引擎層 (Spark Core) || (替代 MapReduce,運行于 YARN/Mesos/K8s 資源層) |+---------------------------------------------------+↓ ↓+-------------------+ +-----------------------+| Hadoop 資源管理層 | | Hadoop 分布式存儲層 || YARN | | HDFS || (資源調度與分配) | | (數據持久化存儲) |+-------------------+ +-----------------------+↓ ↓+---------------------------------------------------+| 底層基礎設施(物理/虛擬化集群) |+---------------------------------------------------+
下面分別介紹Spark各個模塊功能。
- SparkCore
Spark Core 是 Spark 的核心模塊,提供了基本的功能和 API,包括任務調度、內存管理、故障恢復等,它實現了彈性分布式數據集(RDD)的概念,支持對分布式數據集的并行操作,Spark其他模塊都是基于 Spark Core 構建。
- SparkSQL
Spark SQL 模塊用于處理結構化數據,支持使用標準SQL 進行數據分析、查詢,SparkSQL中還提供了 DataFrame 和 Dataset API,方便開發者以聲明式方式操作數據。此外,Spark SQL 還支持與 Hive 的集成,可以直接查詢 Hive 倉庫中的數據。
- SparkSteaming
SparkStreaming 是基于 SparkCore 模塊實現的,用于實時處理流數據的模塊。它將實時數據流分成小批次,然后通過類似于 Spark Core 的 API 進行準實時數據處理。
- StructuredStreaming
StructuredStreaming 是基于 SparkSQL 模塊構建的可擴展且容錯的流處理模塊。它提供了一種統一的編程模型,使開發者能夠以 SQL 方式編寫流式計算操作,可以輕松地對流數據進行轉換、聚合和分析。
- MLlib
MLlib 模塊是 Spark 的機器學習庫,提供了常用的機器學習算法和工具,如分類、回歸、聚類、協同過濾等。它利用 Spark 的分布式計算能力,能夠處理大規模數據集上的機器學習任務。
- GraphX
GraphX 模塊用于圖計算,提供了用于表示圖和執行圖操作的 API。它支持常見的圖算法,如 PageRank、連接組件等,方便開發者進行復雜的圖數據分析。
二、Spark運行模式
Apache Spark 提供了多種運行模式,以適應不同的開發、測試和生產環境需求。這些模式包含Local Mode、Standalone Mode、Spark On Yarn、Spark On Mesos、Spark On K8s,下面分別介紹。
- 本地模式(Local Mode)
在本地模式下,Spark 應用程序在單臺機器上運行,利用多線程模擬分布式計算。此模式適用于開發和測試階段,方便調試和驗證應用程序邏輯。可以通過指定線程數來控制并行度,例如:local[4] 表示使用 4 個線程。
- 獨立模式(Standalone Mode)
Standalone 模式是 Spark 自帶的資源調度系統,無需依賴外部集群管理器。在此模式下,集群由一個主節點(Master)和多個工作節點(Worker)組成。應用程序提交到主節點后,主節點負責將任務分配給各個工作節點執行。此模式適用于中小型集群,配置和管理相對簡單。
- YARN 模式(Spark on YARN)
在 YARN 模式下,Spark 運行在 Hadoop 的 YARN(Yet Another Resource Negotiator)集群管理器上。YARN 提供資源管理和作業調度功能,使 Spark 能夠與其他大數據應用程序共享集群資源。此模式適用于已經部署了 Hadoop 集群的環境,便于資源的統一管理。
- Mesos 模式(Spark on Mesos)
Mesos 是一個分布式系統內核,可用于管理集群資源。在 Mesos 模式下,Spark 可以與其他框架(如 Apache Hadoop、Apache Storm)共享集群資源,實現資源的高效利用。此模式在國外使用居多。
- Kubernetes 模式(Spark on Kubernetes)
Kubernetes 是一個開源的容器編排平臺。在 Kubernetes 模式下,Spark 應用程序以容器的形式運行,Kubernetes 負責容器的調度和管理。此模式適用于已經采用容器化技術的環境,提供了更好的彈性和可移植性。
在實際Spark開發中,Spark運行模式使用最多的是基于Yarn。
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活??