Linux中國

AWS 和 GCP 的 Spark 技術哪家強?

本文依據構建時間和運營成本對 AWS 和 GCP 的 Spark 工作負載作一個簡短比較。實驗由我們的學生在 數據孵化器 The Data Incubator 進行, 數據孵化器 The Data Incubator 是一個大數據培訓組織,專門為公司招聘頂尖數據科學家並為公司職員培訓最新的大數據科學技能。儘管 Spark 效率驚人,分散式工作負載的時間和成本亦然可以大到不能忽略不計。因此我們一直努力尋求更高效的技術,以便我們的學生能夠學習到最好和最快的工具。

提交 Spark 任務到雲

Spark 是一個類 MapReduce 但是比 MapReduce 更靈活、更抽象的並行計算框架。Spark 提供 Python 和 Java 編程介面,但它更願意用戶使用原生的 Scala 語言進行應用程序開發。Scala 可以把應用程序和依賴文件打包在一個 JAR 文件從而使 Spark 任務提交變得簡單。

通常情況下,Sprark 結合 HDFS 應用於分散式數據存儲,而與 YARN 協同工作則應用於集群管理;這種堪稱完美的配合使得 Spark 非常適用於 AWS 的彈性 MapReduce (EMR)集群和 GCP 的 Dataproc 集群。這兩種集群都已有 HDFS 和 YARN 預配置,不需要額外進行配置。

配置雲服務

通過命令行比通過網頁界面管理數據、集群和任務具有更高的可擴展性。對 AWS 而言,這意味著客戶需要安裝 CLI。客戶必須獲得證書並為每個 EC2 實例創建獨立的密鑰對。除此之外,客戶還需要為 EMR 用戶和 EMR 本身創建角色(基本許可權),主要是准入許可規則,從而使 EMR 用戶獲得足夠多的許可權(通常在 CLI 運行 aws emr create-default-roles 就可以)。

相比而言,GCP 的處理流程更加直接。如果客戶選擇安裝 Google Cloud SDK 並且使用其 Google 賬號登錄,那麼客戶即刻可以使用 GCP 的幾乎所有功能而無需其他任何配置。唯一需要提醒的是不要忘記通過 API 管理器啟用計算引擎、Dataproc 和雲存儲 JSON 的 API。

當你安裝你的喜好設置好之後,有趣的事情就發生了!比如可以通過aws s3 cp或者gsutil cp命令拷貝客戶的數據到雲端。再比如客戶可以創建自己的輸入、輸出或者任何其他需要的 bucket,如此,運行一個應用就像創建一個集群或者提交 JAR 文件一樣簡單。請確定日誌存放的地方,畢竟在雲環境下跟蹤問題或者調試 bug 有點詭異。

一分錢一分貨

談及成本,Google 的服務在以下幾個方面更有優勢。首先,購買計算能力的原始成本更低。4 個 vCPU 和 15G RAM 的 Google 計算引擎服務(GCE)每小時只需 0.20 美元,如果運行 Dataproc,每小時也只需區區 0.24 美元。相比之下,同等的雲配置,AWS EMR 則需要每小時 0.336 美元。

其次,計費方式。AWS 按小時計費,即使客戶只使用 15 分鐘也要付足 1 小時的費用。GCP 按分鐘計費,最低計費 10 分鐘。在諸多用戶案例中,資費方式的不同直接導致成本的巨大差異。

兩種雲服務都有其他多種定價機制。客戶可以使用 AWS 的 Sport Instance 或 GCP 的 Preemptible Instance 來競價它們的空閑雲計算能力。這些服務比專有的、按需服務便宜,缺點是不能保證隨時有可用的雲資源提供服務。在 GCP 上,如果客戶長時間(每月的 25% 至 100%)使用服務,可以獲取更多折扣。在 AWS 上預付費或者一次購買大批量服務可以節省不少費用。底線是,如果你是一個超級用戶,並且使用雲計算已經成為一種常態,那麼最好深入研究雲計算,自己算計好成本。

最後,新手在 GCP 上體驗雲服務的費用較低。新手只需 300 美元信用擔保,就可以免費試用 60 天 GCP 提供的全部雲服務。AWS 只免費提供特定服務的特定試用層級,如果運行 Spark 任務,需要付費。這意味著初次體驗 Spark,GCP 具有更多選擇,也少了精打細算和討價還價的煩惱。

性能比拼

我們通過實驗檢測一個典型 Spark 工作負載的性能與開銷。實驗分別選擇 AWS 的 m3.xlarg 和 GCP 的 n1-standard-4,它們都是由一個 Master 和 5 個核心實例組成的集群。除了規格略有差別,虛擬核心和費用都相同。實際上它們在 Spark 任務的執行時間上也表現的驚人相似。

測試 Spark 任務包括對數據的解析、過濾、合併和聚合,這些數據來自公開的 堆棧交換數據轉儲 Stack Exchange Data Dump 。通過運行相同的 JAR,我們首先對大約 50M 的數據子集進行交叉驗證,然後將驗證擴大到大約 9.5G 的數據集。

Figure 1. Credit: Michael Li and Ariel M'ndange-Pfupfu.

Figure 2. Credit: Michael Li and Ariel M'ndange-Pfupfu.

結果表明,短任務在 GCP 上具有明顯的成本優勢,這是因為 GCP 以分鐘計費,並最終扣除了 10 分鐘的費用,而 AWS 則收取了 1 小時的費用。但是即使長任務,因為計費方式佔優,GPS 仍然具有相當優勢。同樣值得注意的是存儲成本並不包括在此次比較當中。

結論

AWS 是雲計算的先驅,這甚至體現在 API 中。AWS 擁有巨大的生態系統,但其許可模型已略顯陳舊,配置管理也有些晦澀難解。相比之下,Google 是雲計算領域的新星並且將雲計算服務打造得更加圓潤自如。但是 GCP 缺少一些便捷的功能,比如通過簡單方法自動結束集群和詳細的任務計費信息分解。另外,其 Python 編程介面也不像 AWS 的 Boto 那麼全面。

如果你初次使用雲計算,GCP 因其簡單易用,別具魅力。即使你已在使用 AWS,你也許會發現遷移到 GCP 可能更划算,儘管真正從 AWS 遷移到 GCP 的代價可能得不償失。

當然,現在對兩種雲服務作一個全面的總結還非常困難,因為它們都不是單一的實體,而是由多個實體整合而成的完整生態系統,並且各有利弊。真正的贏家是用戶。一個例證就是在 數據孵化器 The Data Incubator ,我們的博士數據科學研究員在學習分散式負載的過程中真正體會到成本的下降。雖然我們的大數據企業培訓客戶可能對價格不那麼敏感,他們更在意能夠更快速地處理企業數據,同時保持價格不增加。數據科學家現在可以享受大量的可選服務,這些都是從競爭激烈的雲計算市場得到的實惠。

via: https://www.oreilly.com/ideas/spark-comparison-aws-vs-gcp

作者:Michael Li Ariel M'Ndange-Pfupfu 譯者:firstadream 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國