什麼是 Apache Spark?

Apache Spark 是用於大數據工作負載的開放原始碼、分散式處理系統。它採用記憶體內快取並優化查詢執行,以對任何規模的資料進行快速地分析查詢。該系統提供 Java、Scala、Python 和 R 中的開發 API,並支援在多個工作負載中重複使用程式碼,包括批次處理、互動查詢、即時分析、機器學習和圖形處理。您會發現許多產業的組織均使用該系統,包括 FINRA,Yelp,Zillow,DataXu,Urban Institute 和 CrowdStrike。

Apache Spark 的發展歷史如何?

Apache Spark 於 2009 年作為 UC Berkley AmpLab 的一項研究專案啟動,這是一項由學生、研究人員和教職員參與的合作專案,專注於資料密集應用領域。Spark 的目標是建立新的架構,針對機器學習和互動式資料分析等快速迭代處理進行最佳化,同時保留 Hadoop MapReduce 的可擴展性和容錯能力。第一篇題為「Spark:使用工作集運算的叢集」的論文於 2010 年 6 月發佈,並且 Spark 是在 BSD 授權下的開放原始碼架構。2013 年 6 月,Spark 在 Apache Software Foundation (ASF) 中進入培育狀態,並於 2014 年 2 月成為 Apache 頂級專案。Spark 可以在 Apache Mesos 上獨立執行,或者最常在 Apache Hadoop 上執行。

Apache Spark 如何運作?

Hadoop MapReduce 是用於使用平行、分散式演算法處理大數據集的程式設計模型。開發人員可以編寫大規模平行化運算子,而不必擔心工作分佈和容錯能力。但是,MapReduce 面臨的一個挑戰是執行作業所需的連續多步驟程序。MapReduce 會在每個步驟中讀取叢集中的資料、執行操作,以及將結果寫回 HDFS。由於每個步驟都需要磁碟讀取和寫入,因此 MapReduce 作業會因磁碟 I/O 的延遲而變慢。

Spark 建立用於解決 MapReduce 的限制,其方法是執行執行記憶體內處理,減少作業中的步驟數,以及在多個平行操作中重複使用資料。藉助 Spark,只需要執行一個步驟,即將資料讀取到記憶體、執行操作以及回寫結果,從而加快執行速度。Spark 還使用記憶體內快取重複使用資料,從而大幅加快機器學習演算法,這些演算法在相同資料集上重複呼叫函數。資料重複使用是透過建立 DataFrames 實現的,DataFrames 是彈性分散式資料集 (RDD) 上的抽象,是在記憶體內快取並在多個 Spark 操作中重複使用的物件集合。這可大幅降低延遲,使 Spark 的執行速度比 MapReduce 快多倍,尤其是在進行機器學習和互動式分析時。

主要差異:Apache Spark 與Apache Hadoop

除了 Spark 和 Hadoop MapReduce 的設計差異之外,許多組織都認為這些大數據架構應結合使用以解決更廣泛的業務挑戰。

Hadoop 是一個開放原始碼架構,其中使用 Hadoop 分散式檔案系統 (HDFS) 作為儲存,使用 YARN 作為管理不同應用程式使用的運算資源的方法,以及使用 MapReduce 程式設計模型的實作作為執行引擎。在典型的 Hadoop 實作中,也會部署不同的執行引擎,例如 Spark、Tez 和 Presto。

Spark 是專注於互動式查詢、機器學習和即時工作負載的開放原始碼架構。它沒有自己的儲存系統,但是在其他儲存系統 (例如 HDFS) 或其他流行儲存 (如 Amazon RedshiftAmazon S3、Couchbase、Cassandra 等) 上執行分析。Hadoop 上的 Spark 利用 YARN 與其他 Hadoop 引擎共用一個叢集和資料集,確保一致的服務和回應水平。

Apache Spark 有哪些優點?

Apache Spark 有許多優點,這使其成為 Hadoop 生態系統中最活躍的專案之一。其中包括:

快速

透過記憶體內快取和最佳化的查詢執行,Spark 可以快速分析查詢任何規模的資料。

支援開發人員

Apache Spark 原本就支援 Java、Scala、R 和 Python,為您提供各種不同的語言來建置應用程式。這些 API 可讓開發人員輕鬆處理任務,因為它們將分散式處理的複雜性隱藏在簡單的高層級運算子之後,從而大幅降低所需的程式碼量。

多個工作負載

Apache Spark 具有執行多個工作負載的能力,包括互動式查詢、即時分析、機器學習和圖形處理。一個應用程式可以無縫合併多個工作負載。

什麼是 Apache Spark 工作負載?

Spark 架構包括:

  • 作為平台基礎的 Spark Core
  • 用於互動式查詢的 Spark SQL
  • 用於進行即時分析的 Spark Streaming
  • 用於機器學習的 Spark MLlib
  • 用於圖形處理的 Spark GraphX

Spark Core

Spark Core 是平台的基礎。它負責記憶體管理、故障復原、排程、分佈和監控作業,以及與儲存系統互動。Spark Core 透過專為 Java、Scala、Python 和 R 建置的應用程式介面 (API) 公開。這些 API 將分散式處理的複雜性隱藏在簡單的高階運算子之後。

MLlib

機器學習

Spark 包括 MLlib,這是一個演算法程式庫,用於針對資料進行大規模機器學習。資料科學家可以在任何 Hadoop 資料來源上使用 R 或 Python 訓練機器學習模型,使用 MLLib 儲存,以及匯入到以 Java 或 Scala 為基礎的管道中。Spark 專為在記憶體中執行的快速互動式運算而設計,使機器學習能夠快速執行。這些算法包括進行分類、迴歸、叢集、協同篩選和模式挖掘的能力。

Spark Streaming

即時

Spark Streaming 是一種即時解決方案,可利用 Spark Core 的快速排程功能進行串流分析。它會以小批次擷取資料,並使用針對批次分析編寫的相同應用程式碼來對該資料進行分析。這可以提高開發人員的工作效率,因為他們可以將相同的程式碼用於批次處理和即時串流應用程式。Spark 串流支援來自 Twitter、Kafka、Flume、HDFS 和 ZeroMQ 的資料,以及來自 Spark Packages 生態系統的許多其他資料。

Spark SQL

互動式查詢

Spark SQL 是一種分散式查詢引擎,可提供低延遲的互動式查詢,處理速度比 MapReduce 快 100 倍。它包括以成本為基礎的最佳化工具、欄式儲存以及快速查詢的程式碼產生,同時可擴展到數千個節點。業務分析師可以使用標準 SQL 或 Hive 查詢語言來查詢資料。開發人員可以使用 Scala、Java、Python 和 R 中提供的 API,該 API 支援各種現成的資料來源,包括 JDBC、ODBC、JSON、HDFS、Hive、ORC 和 Parquet。Spark Packages 生態系統中可以找到其他熱門儲存,包括 Amazon Redshift、Amazon S3、Couchbase、Cassandra、MongoDB、Salesforce.com、Elasticsearch 等。

GraphX

圖形處理

Spark GraphX 是建立在 Spark 基礎之上的分散式圖形處理架構。GraphX 提供 ETL、探索分析和迭代圖形運算,可讓使用者以互動方式大規模建置和轉換圖形資料結構。該架構帶有一個高度靈活的 API 和一系列分散式圖形演算法。

Apache Spark 有哪些使用案例?

Spark 是一種用於大數據工作負載的通用分散式處理系統。它已部署在每種類型的大數據使用案例中,以偵測模式並提供即時洞見。範例使用案例包括:

金融服務

Spark 在銀行業務中用於預測客戶流失,以及推薦新的金融產品。在投資銀行業中,Spark 用於分析股票價格以預測未來趨勢。

醫療保健

Spark 用於建置全面的患者護理,方法是向前線醫療工作人員提供資料以進行每次患者互動。Spark 也可用於預測/建議患者治療。

生產製造

Spark 用於避免網際網路的停機時間,方法是建議何時進行預防性維護。

零售

Spark 用於透過個人化服務和產品吸引並留住客戶。

在雲端部署 Apache Spark 如何運作?

Spark 是雲端的理想工作負載,因為雲端提供效能、可擴展性、可靠性、可用性,以及巨大規模經濟。ESG 研究發現,43% 的受訪者認為雲端是適用於 Spark 的主要部署。客戶將雲端視為 Spark 優勢的主要原因是更出色的安全性、更快的部署時間、更好的可用性、更頻繁的特性/功能更新、更大的彈性、更廣泛的地理覆蓋範圍,以及與實際使用率關聯的成本。

AWS 為 Apache Spark 提供哪些產品?

Amazon EMR 是在雲端部署 Apache Spark 的最佳位置,因為它將商業 Hadoop 和 Spark 分發的整合和測試精確性和雲端的規模、簡便性和經濟效益結合在一起。您可以在最短的時間內啟動 Spark 叢集,無須進行節點佈建、叢集設定、Spark 組態或叢集調校。EMR 可讓您在最短的時間內佈建一個、數百個或數千個運算執行個體。您可以使用自動擴展功能,讓 EMR 自動擴展 Spark 叢集以處理任何大小的資料,並在作業完成後退回,以避免為未使用的容量付費。您可以透過設定的期限降低帳單費用,以及使用 Amazon EC2 預留執行個體節省高達 75% 的成本,或者使用 EC2 Spot 在備用 AWS 運算容量上執行叢集並節省高達 90% 的成本。

立即建立帳戶,開始在 AWS 上使用 Apache Spark。

AWS 上的後續步驟

查看其他產品相關資源
檢視雲端中分析服務的免費優惠 
註冊免費帳戶

立即存取 AWS 免費方案。

註冊 
開始在主控台進行建置

開始在 AWS 管理主控台進行建置。

登入