Amazon EMR 上的 Apache Spark

為什麼選擇 EMR 上的 Apache Spark?

Amazon EMR 是執行 Apache Spark 的首選之地。您可以從 AWS 管理主控台、AWS CLI 或 Amazon EMR API 輕鬆快速地建立受管 Spark 叢集。不僅如此,您也可以利用其他的 Amazon EMR 功能,包括使用 Amazon EMR 檔案系統 (EMRFS) 快速連接 Amazon S3、與 Amazon EC2 Spot 市場和 AWS Glue Data Catalog 整合,以及使用 EMR Managed Scaling 在叢集新增或移除執行個體。 AWS Lake Formation 提供精細的存取控制,同時與 AWS Step Functions 整合,有助於協調資料管道。 EMR Studio (預覽版) 是一種整合式開發環境 (IDE),可讓資料科學家和資料工程師開發、視覺化和除錯以 R、Python、Scala 和 PySpark 編寫的資料工程和資料科學應用程式。EMR Studio 提供全受管 Jupyter Notebooks,以及 Spark UI 和 YARN Timeline Service 等工具來簡化偵錯程序。 EMR Notebooks 讓您可以輕鬆利用 Spark 進行實驗以及建立應用程式。如果您喜歡,也可以使用 Apache Zeppelin 建立互動和協作式筆記本,以便使用 Spark 進行資料探索。

在此處進一步了解 Apache Spark

功能與優勢

EMR 採用 Amazon EMR runtime for Apache Spark,這是適用於 Apache Spark 的效能最佳化執行時間環境,預設會在 Amazon EMR 叢集上啟用。與沒有 EMR 執行時間的叢集相比,Amazon EMR runtime for Apache Spark 速度快 3 倍以上,且與標準 Apache Spark 具有 100% API 相容性。效能的改進意味著工作負載執行速度更快、節省運算成本,不需要對應用程式進行任何更改。

透過使用 Directed Acyclic Graph (DAG) 執行引擎,Spark 即可為資料轉換建立有效的查詢計劃。Spark 也將輸入、輸出和中繼資料存放在記憶體內做為彈性資料庫,可供快速處理,不但無須 I/O 成本,也大幅提升重複性或互動式工作負載的效能。

Apache Spark 原本就支援 Java、Scala、SQL 和 Python,為您提供各種不同的語言來建置應用程式。另外,您可以使用 Spark SQL 模組提交 SQL 或 HiveQL 查詢。除了執行應用程式之外,您還可以直接在 Spark shell,或透過 EMR Studio,或透過叢集上的 Jupyter 筆記本,與 Python 或 Scala 互動使用 Spark API。EMR 6.0 的 Apache Hadoop 3.0 支援也提供對 Docker 容器的支援,能簡化依存性的管理。您還可以利用獨立於叢集的 EMR Notebooks (以 Jupyter 為基礎) 或使用 Zeppelin 建立互動式和協同式筆記本,用於探索和查看資料。您可以在 EMR 主控台中進行工作負載的調整和偵錯,該主控台有一個叢集外的持久性 Spark History Server

Apache Spark 包含數個程式庫,協助建置適用於機器學習 (MLlib)、串流處理 (Spark Streaming) 和圖形處理 (GraphX) 的應用程式。這些現成的程式庫在 Spark 生態系統中緊密整合,可用來解決各種使用案例。此外,您可以使用 Apache MXNet 等深度學習架構搭配 Spark 應用程式。與 AWS Step Functions 整合之後,您可以將無伺服器工作流程自動化和協調新增至應用程式中。

使用 EMR Step API 提交 Apache Spark 任務、使用 Spark 搭配 EMRFS 直接存取 S3 中的資料、使用 EC2 Spot 容量節省成本,使用 EMR Managed Scaling 動態新增和移除容量,以及啟動長時間執行或暫時性叢集以因應您的工作負載。您也可以使用 EMR 安全組態輕鬆設定 Spark 加密和 Kerberos 身份驗證。另外,您可以使用 AWS Glue Data Catalog 來存放 Spark SQL 表格中繼資料,或使用 Amazon SageMaker 搭配您的 Spark 機器學習管道一起使用。EMR 在 Hadoop YARN 上安裝並管理 Spark,您也可以在叢集上新增其他大數據應用程式。EMR 搭配 Apache Hudi 可以更有效地管理變更資料擷取 (CDC),並透過簡化記錄刪除,協助 GDPR 和 CCPA 此類的隱私權法規的實施。按一下此處,了解有關 EMR 功能的詳細資訊。

使用案例

在 EMR 上使用 Spark Streaming,取用和處理來自 Amazon KinesisApache Kafka 或其他資料串流的即時資料。以容錯方式執行串流分析,並將結果寫入 S3 或叢集上的 HDFS。

EMR 上的 Apache Spark 包含用於各種可擴展機器學習演算法的 MLlib,或者您可以使用自己的程式庫。透過在任務期間將資料集存放在記憶體內,Spark 對於機器學習工作負載中常見的重複性查詢具有絕佳的效能。您可以透過將筆記本執行個體連接至 Amazon EMR 上執行的 Apache Spark 叢集來增強 Amazon SageMaker 功能,使用 Amazon SageMaker Spark,可以輕鬆培訓模型和託管模型。

使用 Spark SQL 搭配 SQL 或 HiveQL,提供低延遲、互動式查詢。EMR 上的 Spark 可利用 EMRFS,所以您可以臨機操作存取 S3 中的資料集。您也可以透過 ODBC 和 JDBC 連接利用 EMR Studio、EMR Notebooks、Zeppelin 筆記本或 BI 工具。

客戶成功案例

  • Yelp

    Yelp 廣告定位團隊制訂一個預測模式來判斷使用者與廣告互動的可能性。Yelp 利用在 Amazon EMR 上使用 Apache Spark 處理大量資料以訓練機器學習模型,提高了收益和廣告點擊率。

  • The Washington Post

    華盛頓郵報 (The Washington Post) 在 Amazon EMR 上使用 Apache Spark 建置支援網站推薦引擎的模型,以促進讀者互動和提升滿意度。他們利用 Amazon EMR 與 Amazon S3 的效能連線,以近乎即時的速度更新模型。

  • Krux

    作為針對客戶深入剖析的資料管理平台的一部分,Krux 使用 Apache Spark 來執行許多機器學習和一般處理工作負載。Krux 利用暫時性 Amazon EMR 叢集搭配 Amazon EC2 競價型容量來節省成本,並使用 Amazon S3 搭配 EMRFS 作為 Apache Spark 的資料層。

    閱讀詳細內容 »
  • GumGum

    GumGum 是一個圖像內置和螢幕內置廣告平台,在 Amazon EMR 上使用 Spark 進行庫存預測、處理點擊流記錄及臨機操作分析 Amazon S3 中的未結構化資料。Spark 的效能增強節省了 GumGum 在這些工作流程上的時間和金錢。

    閱讀詳細內容 »
  • Hearst Corporation

    Hearst Corporation 是大型的多元化媒體和資訊公司,擁有超過 200 個 Web 內容上客戶檢視的內容。Hearst 的編輯人員在 Amazon EMR 上使用 Apache Spark Streaming,可掌握高點閱率文章和引領趨勢主題的即時脈動。

    閱讀詳細內容 »
  • CrowdStrike

    CrowdStrike 提供端點保護以阻止違規。他們使用 Amazon EMR 搭配 Spark 來處理數百 TB 的事件資料,將它們彙整成主機上更高層級的行為描述。CrowdStrike 可從該資料有效的利用事件資料,並識別是否存在惡意活動。

    閱讀詳細內容 »