分享方式:


什麼是 Azure HDInsight 中的 Apache Spark

Apache Spark 是一個平行處理架構,可支援記憶體內部處理,以大幅提升巨量資料分析應用程式的效能。 Azure HDInsight 中的 Apache Spark 是雲端中 Apache Spark 的 Microsoft 實作,而且是 Azure 中數個 Spark 供應項目的其中一項。

  • Azure HDInsight 中的 Apache Spark 可讓您輕鬆地建立和設定 Spark 叢集,以便在 Azure 中自訂和使用完整的 Spark 環境。

  • Azure Synapse Analytics 中的 Spark 集區使用受控 Spark 集區,允許在 Azure 內載入、模型化、處理及散發資料,以取得分析見解。

  • Azure Databricks 上的 Apache Spark 使用 Spark 叢集來提供互動式工作區,讓使用者能夠讀取多個資料來源的資料,並將其轉換成突破性見解。

  • Azure Data Factory 中的 Spark 活動可讓您使用隨選或預先存在的 Spark 叢集,在資料管線中使用 Spark 分析。

透過 Azure HDInsight 中的 Apache Spark,您可以完全在 Azure 內儲存和處理資料。 HDInsight 中的 Spark 叢集與 Azure Blob 儲存體Azure Data Lake Storage Gen2 相容,可讓您在現有的資料存放區上套用 Spark 處理。

Spark:統一架構。

若要開始使用 Azure HDInsight 中的 Apache Spark,請遵循我們的教學課程來建立 HDInsight Spark 叢集

如需 Apache Spark 及其與 Azure 互動方式的相關資訊,請繼續閱讀下列文章。

如需元件和版本資訊,請參閱 Azure HDInsight 中的 Apache Hadoop 元件和版本

Apache Spark 是什麼?

Spark 提供用於記憶體內部叢集運算的基本項目。 Spark 作業可將資料載入並快取到記憶體,以便重複查詢。 記憶體內部計算速度優於磁碟型應用程式,例如,會透過 Hadoop 分散式檔案系統 (HDFS) 共用資料的 Hadoop。 Spark 也會整合到 Scala 程式設計語言中,讓您處理分散式資料集 (像是本機集合)。 您不需要將一切建構成對應和縮減作業。

傳統 MapReduce 與Spark。

HDInsight 中的 Spark 叢集可提供完全受控的 Spark 服務。 以下列出在 HDInsight 中建立 Spark 叢集的優點。

功能 描述
輕鬆建立 您可以使用 Azure 入口網站、Azure PowerShell 或 HDInsight .NET SDK,在幾分鐘內便能於 HDInsight 中建立新的 Spark 叢集。 請參閱開始使用 HDInsight 中的 Apache Spark 叢集
使用方便 HDInsight 中的 Spark 叢集包含 Jupyter Notebook 和 Apache Zeppelin Notebook。 您可以為互動式資料處理與視覺效果使用這些筆記本。 請參閱搭配使用 Apache Zeppelin 筆記本與 Apache Spark在 Apache Spark 叢集上載入資料和執行查詢
REST API HDInsight 中的 Spark 叢集包含 Apache Livy,它是 REST-API 型 Spark 作業伺服器,可用來遠端提交及監視作業。 請參閱使用 Apache Spark REST API 將遠端作業提交至 HDInsight Spark 叢集
Azure 儲存體的支援 HDInsight 中的 Spark 叢集可以使用 Azure Data Lake Storage Gen2 作為主要儲存體或額外的儲存體。 如需 Data Lake Storage Gen2 的詳細資訊,請參閱 Azure Data Lake Storage Gen2
Azure 服務整合 HDInsight 中的 Spark 叢集隨附連至 Azure 事件中樞的連接器。 您可以使用事件中樞建立串流應用程式。 包括 Apache Kafka (已是 Spark 的一部分)。
第三方 IDE 整合 HDInsight 提供數個 IDE 外掛程式,以用來建立應用程式,並將應用程式提交至 HDInsight Spark 叢集。 如需詳細資訊,請參閱使用 Azure Toolkit for IntelliJ IDEA (部分機器翻譯)、使用適用於 VSCode 的 Spark 與 Hive Tools (部分機器翻譯) 和使用 Azure Toolkit for Eclipse (部分機器翻譯)。
並行查詢 HDInsight 中的 Spark 叢集支援並行查詢。 此功能可讓來自單一使用者的多個查詢或來自不同使用者與應用程式的多個查詢,一起共用相同的叢集資源。
SSD 快取 您可以選擇將資料快取在記憶體中,或快取在連接叢集節點的 SSD 中。 記憶體快取能提供最高的查詢效能,但可能所費不貲。 SSD 快取提供改善查詢效能的絕佳選項,而且您不需要建立大小可讓整個資料集納入記憶體的叢集。 請參閱使用 Azure HDInsight IO 快取改進 Apache Spark 工作負載效能
BI 工具整合 HDInsight 中的 Spark 叢集提供適用於 BI 工具 (例如 Power BI) 的連接器來進行資料分析。
預先載入的 Anaconda 程式庫 HDInsight 中的 Spark 叢集隨附預先安裝的 Anaconda 程式庫。 Anaconda 為機器學習、資料分析、視覺化等主題提供將近 200 個程式庫。
適應性 HDInsight 可讓您使用自動調整功能來動態變更叢集節點的數目。 請參閱自動調整 Azure HDInsight 叢集規模。 此外,由於所有資料都儲存在 Azure Blob 儲存體或 Azure Data Lake Storage Gen2 內,因此您可以在不遺失資料的情況下卸除 Spark 叢集。
SLA HDInsight 中的 Spark 叢集隨附全天候支援,以及保證正常運作時間達 99.9% 的 SLA。

依預設,HDInsight 中的 Apache Spark 叢集能經由叢集提供下列元件。

HDInsight Spark 叢集會納入一個 ODBC 驅動程式以便從 BI 工具 (例如 Microsoft Power BI) 進行連線。

Spark 叢集架構

HDInsight Spark 的架構。

您可以藉由了解 Spark 在 HDInsight 叢集上的執行方式,輕鬆地了解 Spark 的元件。

Spark 應用程式在叢集上是以獨立的多組程序在執行。 由主要程式 (稱為驅動程式) 中的 SparkContext 物件協調。

SparkContext 可以連線到數種類型的叢集管理員,而叢集管理員可以給予各個應用程式資源。 這些叢集管理員包括 Apache Mesos、Apache Hadoop YARN 或 Spark 叢集管理員。 在 HDInsight 中,使用 YARN 叢集管理員可執行 Spark。 一旦連線之後,Spark 就會取得叢集中背景工作節點上的執行程式,也就是為應用程式執行運算和儲存資料的處理序。 接下來,它會將您的應用程式程式碼 (由傳遞到 SparkContext 的 JAR 或 Python 檔案所定義) 傳送到執行程式。 最後,SparkContext 會將工作傳送到執行程式來執行。

SparkContext 會執行使用者的主要函式,並在背景工作節點上執行各種平行作業。 然後,SparkContext 會收集作業的結果。 背景工作節點會在 Hadoop 分散式檔案系統中讀取和寫入資料。 背景工作節點也會將記憶體內部已轉換的資料快取為彈性分散式資料集 (RDD)。

SparkCoNtext 會連線至 Spark 主節點,並負責將應用程式轉換為個別工作的有向圖形 (DAG)。 在背景工作節點上的執行程式程序內執行的作業。 每個應用程式都會取得自己的執行程式處理序,而這些處理序會在整個應用程式的持續時間保持運作,並且在多個執行緒中執行工作。

HDInsight 中的 Spark 使用案例

HDInsight 中的 Spark 叢集適用於下列重要案例:

互動式資料分析和 BI

HDInsight 中的 Apache Spark 會將資料儲存在 Azure Blob 儲存體和 Azure Data Lake Storage Gen2 中。 商務專家和關鍵決策者可以就該資料分析並建立報告。 並且使用 Microsoft Power BI 從分析的資料建立互動式報表。 分析師可以從叢集儲存體中的非結構化/半結構化資料著手、使用 Notebook 來定義資料的結構描述,然後再使用 Microsoft Power BI 來建置資料模型。 HDInsight 中的 Spark 叢集也支援許多協力廠商 BI 工具。 例如 Tableau,可讓資料分析師、商務專家、重要決策者更輕鬆。

Spark 機器學習服務

Apache Spark 隨附 MLlib。 MLlib 是以 Spark 為基礎的機器學習程式庫,您可以從 HDInsight 中的 Spark 叢集使用 MLlib。 HDInsight 中的 Spark 叢集也包含 Anaconda,這是提供不同機器學習套件的 Python 發行版本。 加上內建的 Jupyter 和 Zeppelin Notebook 支援,就能擁有適用於建立機器學習應用程式的環境。

Spark 串流和即時資料分析

HDInsight 上的 Spark 叢集提供豐富的支援,以供您建置即時分析解決方案。 Spark 已經有連接器可從許多來源擷取數據,例如 Kafka、Flume、X、ZeroMQ 或 TCP 套接字。 HDInsight 中的 Spark 新增可從 Azure 事件中樞吸納資料的第一級支援。 事件中樞是 Azure 上最廣泛使用的佇列服務。 擁有完整的事件中樞支援,讓 HDInsight 中的 Spark 叢集成為建置即時分析管線的理想平台。

後續步驟

在本概觀中,您已對 Azure HDInsight 中的 Apache Spark 有了基本了解。 您可以使用下列文章來深入瞭解 HDInsight 中的 Apache Spark,也可以建立 HDInsight Spark 叢集並進一步執行一些範例 Spark 查詢: