一、Spark概述
Spark是一種基于內存的快速、通用、可拓展的大數據分析計算引擎。
Hadoop是一個分布式系統結構的基礎架構。
二、Spark與Hadoop相比較的優勢:
1. 處理速度:Hadoop:數據處理速度相對較慢
? ? ? ? ? ? ? ? ? ? ? Spark:速度比Hadoop快很多倍
2. 編程模型:Hadoop:編程模型相對較為底層和復雜,處理復雜計算時,代碼量非常龐大,開發? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 維護成本較高。
? ? ? ? ? ? ? ? ? ? ? Spark:提供了更加簡潔、高層的編程模型,可用更簡潔的代碼實現復雜的處理任? ? ? ? ? ? ? ? ? ? ? ? ? ? 務,且Spark支持多種編程語言。
3. 實時性處理:Hadoop:主要用于批處理任務,難以滿足實時性要求較高的數據處理場景
? ? ? ? ? ? ? ? ?? ? ? ? Spark:提供強大的數據實時處理能力,可實現準實時的數據分析
三、Spark內置模塊
1. Spark Core:作為 Spark 的核心引擎,提供了分布式任務調度、內存管理、錯誤恢復等基礎功能。它定義了 RDD(彈性分布式數據集)這一核心數據結構,RDD 是一種容錯的、并行的數據結構,用戶可以在其上執行各種轉換(如 map、filter)和動作(如 count、collect)操作,為 Spark 的所有高級功能奠定基礎。通過 RDD,Spark 能夠高效地處理大規模數據,并實現數據的分布式計算。?
2. Spark SQL:允許用戶使用 SQL 語句或 DataFrame/Dataset API 對結構化和半結構化數據進行查詢分析。它支持多種數據源,包括 JSON、Parquet、Hive 表等。Spark SQL 能夠將 SQL 查詢轉換為底層的 RDD 操作,充分利用 Spark 的計算能力。同時,它還提供了數據的 Schema 推斷功能,方便用戶快速處理數據。此外,Spark SQL 的 Catalyst 優化器會對查詢進行優化,提高查詢執行效率,使得用戶可以輕松地對大規模數據進行復雜的 SQL 分析。?
3. Spark Streaming:用于處理實時數據流,它支持從 Kafka、Flume、Socket 等多種數據源接收數據,并將數據流分割成小的批次(Batch)進行處理,每個批次的數據都作為一個 RDD 進行處理,從而實現準實時的計算。Spark Streaming 提供了豐富的 API,如 map、reduce、join 等,方便用戶對實時數據進行各種轉換和聚合操作。例如,在實時日志分析場景中,可以使用 Spark Streaming 實時處理服務器產生的日志數據,統計用戶的訪問頻率、熱門頁面等信息。?
4. MLlib(機器學習庫):包含了一系列常用的機器學習算法和工具,如分類、回歸、聚類、協同過濾等。它提供了簡單易用的 API,使得用戶可以方便地構建和訓練機器學習模型。MLlib 支持分布式計算,能夠處理大規模數據集,并且在模型訓練過程中進行了性能優化。例如,在推薦系統中,可以使用 MLlib 的協同過濾算法為用戶推薦感興趣的商品或內容;在文本分類任務中,可以使用 MLlib 的分類算法對文本進行自動分類。?
5. GraphX:用于處理圖計算的模塊,提供了豐富的圖操作 API 和算法庫,如 PageRank、SVDPlusPlus 等。它可以將圖數據表示為分布式的頂點和邊的集合,并在分布式環境下進行高效的圖計算。GraphX 在社交網絡分析、推薦系統、知識圖譜等領域有著廣泛的應用。例如,通過 GraphX 可以分析社交網絡中用戶之間的關系,發現關鍵人物和社區結構;在知識圖譜中,可以使用 GraphX 進行圖譜的構建和查詢,挖掘實體之間的潛在關系
四、Spark的運行模式
大體為兩種:單機模式與集群模式。
目前支持的部署模式: