什麼是 Azure HDInsight 中的 Apache Spark

Apache Spark 是一個平行處理架構,可支援記憶體內部處理,以大幅提升巨量資料分析應用程式的效能。 Azure HDInsight 中的 Apache Spark 是 Microsoft 在雲端中實作 Apache Spark,而且是 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 儲存體 Gen1Azure Data Lake 儲存體 Gen2 相容,可讓您在現有的數據存放區上套用 Spark 處理。

Spark: a unified framework.

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

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

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

Apache Spark 是什麼?

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

Traditional MapReduce vs. 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 Spark 使用 Apache Zeppelin 筆記本和 載入數據,並在 Apache Spark 叢集上執行查詢。
REST API HDInsight 中的Spark叢集包括 Apache Livy,這是REST API型Spark作業伺服器,可遠端提交和監視作業。 請參閱 使用 Apache Spark REST API 將遠端作業提交至 HDInsight Spark 叢集
支援 Azure 儲存體 HDInsight 中的Spark叢集可以使用 Azure Data Lake 儲存體 Gen1/Gen2 作為主要記憶體或其他記憶體。 如需 Data Lake 儲存體 Gen1 的詳細資訊,請參閱 Azure Data Lake 儲存體 Gen1。 如需 Data Lake 儲存體 Gen2 的詳細資訊,請參閱 Azure Data Lake 儲存體 Gen2
Azure 服務整合 HDInsight 中的Spark叢集隨附連接器來 Azure 事件中樞。 您可以使用事件中樞建置串流應用程式。 包含已作為Spark一部分的Apache Kafka。
與第三方 IDE 整合 HDInsight 提供數個 IDE 外掛程式,有助於建立應用程式並將其提交至 HDInsight Spark 叢集。 如需詳細資訊,請參閱 使用適用於 IntelliJ IDEA 的 Azure 工具組、 使用 Spark 和 Hive Tools for VSCode 和使用 適用於 Eclipse 的 Azure 工具組
並行查詢 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 儲存體 Gen1Azure Data Lake 儲存體 Gen2 中,因此可以卸除 Spark 叢集,且不會遺失數據。
SLA HDInsight 中的Spark叢集支援為24/7,SLA為99.9%。

HDInsight 中的 Apache Spark 叢集包含下列預設可在叢集上使用的元件。

HDInsight Spark 會 叢集 ODBC 驅動程式 ,以便從 Microsoft Power BI 等 BI 工具進行連線。

Spark 叢集架構

The architecture of HDInsight Spark.

瞭解 Spark 在 HDInsight 叢集上執行的方式,即可輕鬆瞭解 Spark 的元件。

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

SparkContext 可以連線到數種類型的叢集管理員,以跨應用程式提供資源。 這些叢集管理員包括 Apache Mesos、Apache Hadoop YARN 或 Spark 叢集管理員。 在 HDInsight 中,Spark 會使用 YARN 叢集管理員執行。 線上之後,Spark 會在叢集中的背景工作節點上取得執行程式,這是執行計算並儲存應用程式數據的進程。 接下來,它會將您的應用程式程式代碼(由 JAR 或 Python 檔案定義至 SparkContext)傳送至執行程式。 最後,SparkContext 會將工作傳送至執行程式來執行。

SparkContext 會執行使用者的主要函式,並在背景工作節點上執行各種平行作業。 然後,SparkContext 會收集作業的結果。 背景工作節點會從Hadoop分散式檔系統讀取和寫入數據。 背景工作節點也會將已轉換的數據快取為復原分散式數據集(RDD)。

SparkContext 會連線到 Spark 主機,並負責將應用程式轉換成個別工作的導向圖形(DAG)。 在背景工作節點上的執行程式進程內執行的工作。 每個應用程式都會取得自己的執行程序進程。 這會在整個應用程式期間保持運作,並在多個線程中執行工作。

HDInsight 中的Spark使用案例

HDInsight 中的 Spark 叢集可啟用下列主要案例:

互動式資料分析和 BI

HDInsight 中的 Apache Spark 會將數據儲存在 Azure Blob 儲存體、Azure Data Lake Gen1 或 Azure Data Lake 儲存體 Gen2 中。 商務專家和關鍵決策者可以分析及建置該數據的報告。 並使用 Microsoft Power BI 從分析的數據建置互動式報表。 分析師可以從叢集記憶體中的非結構化/半結構化數據開始,使用筆記本定義數據的架構,然後使用 Microsoft Power BI 建置數據模型。 HDInsight 中的Spark叢集也支援許多第三方BI工具。 例如Tableau,讓數據分析師、商務專家和關鍵決策者更容易。

Spark 機器學習服務

Apache Spark 隨附 MLlib。 MLlib 是以 Spark 為基礎建置的機器學習連結庫,您可以從 HDInsight 中的 Spark 叢集使用。 HDInsight 中的Spark叢集也包含Anaconda,這是 Python 散發套件,其中包含不同類型的機器學習套件。 有了 Jupyter 和 Zeppelin 筆記本的內建支援,您有建立機器學習應用程式的環境。

Spark 串流和即時資料分析

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

後續步驟

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