Tianhui Michael Li 和 Ariel M’ndange-Pfupfu 將在今年 10 月 10、12 和 14 號組織一個在線經驗分享課程: Spark 分布式計算入門 。該課程的內容包括創(chuàng)建端到端的運行應用程序和精通 Spark 關鍵工具。
毋庸置疑,云計算將會在未來數(shù)據(jù)科學領域扮演至關重要的角色。彈性,可擴展性和按需分配的計算能力作為云計算的重要資源,直接導致云服務提供商集體火拼。其中最大的兩股勢力正是 亞馬遜網絡服務(AWS) 和 谷歌云平臺(GCP) 。
本文依據(jù)構建時間和運營成本對 AWS 和 GCP 的 Spark 工作負載作一個簡短比較。實驗由我們的學生在數(shù)據(jù)孵化器(The Data Incubator)進行, 數(shù)據(jù)孵化器 (The Data Incubator)是一個大數(shù)據(jù)培訓組織,專門為公司招聘頂尖數(shù)據(jù)科學家并為公司職員培訓最新的大數(shù)據(jù)科學技能。盡管 Spark 效率驚人,分布式工作負載的時間和成本亦然可以大到不能忽略不計。因此我們一直努力尋求更高效的技術,以便我們的學生能夠學習到最好和最快的工具。
提交 Spark 任務到云
Spark 是一個類 MapReduce 但是比 MapReduce 更靈活、更抽象的并行計算框架。Spark 提供 Python 和 Java 編程接口,但它更愿意用戶使用原生的 Scala 語言進行應用程序開發(fā)。Scala 可以把應用程序和依賴文件打包在一個 JAR 文件從而使 Spark 任務提交變得簡單。
通常情況下,Sprark 結合 HDFS 應用于分布式數(shù)據(jù)存儲,而與 YARN 協(xié)同工作則應用于集群管理;這種堪稱完美的配合使得 Spark 非常適用于 AWS 的彈性 MapReduce (EMR)集群和 GCP 的 Dataproc 集群。這兩種集群都已有 HDFS 和 YARN 預配置,不需要額外進行配置。
配置云服務
通過命令行比通過網頁界面管理數(shù)據(jù)、集群和任務具有更高的可擴展性。對 AWS 而言,這意味著客戶需要安裝 CLI ??蛻舯仨毇@得證書并為每個 EC2 實例創(chuàng)建 獨立的密鑰對 。除此之外,客戶還需要為 EMR 用戶和 EMR 本身創(chuàng)建角色(基本權限),主要是準入許可規(guī)則,從而使 EMR 用戶獲得足夠多的權限(通常在 CLI 運行 aws emr create-default-roles 就可以)。
相比而言,GCP 的處理流程更加直接。如果客戶選擇安裝 Google Cloud SDK 并且使用其 Google 賬號登錄,那么客戶即刻可以使用 GCP 的幾乎所有功能而無需其他任何配置。唯一需要提醒的是不要忘記通過 API 管理器啟用計算引擎、Dataproc 和云存儲 JSON 的 API。
當你安裝你的喜好設置好之后,有趣的事情就發(fā)生了!比如可以通過aws s3 cp或者gsutil cp命令拷貝客戶的數(shù)據(jù)到云端。再比如客戶可以創(chuàng)建自己的輸入、輸出或者任何其他需要的 bucket,如此,運行一個應用就像創(chuàng)建一個集群或者提交 JAR 文件一樣簡單。請確定日志存放的地方,畢竟在云環(huán)境下跟蹤問題或者調試 bug 有點詭異。
一分錢一分貨
談及成本,Google 的服務在以下幾個方面更有優(yōu)勢。首先,購買計算能力的原始成本更低。4 個 vCPU 和 15G RAM 的 Google 計算引擎服務(GCE)每小時只需 0.20 美元,如果運行 Dataproc,每小時也只需區(qū)區(qū) 0.24 美元。相比之下,同等的云配置,AWS EMR 則需要每小時 0.336 美元。
其次,計費方式。AWS 按小時計費,即使客戶只使用 15 分鐘也要付足 1 小時的費用。GCP 按分鐘計費,最低計費 10 分鐘。在諸多用戶案例中,資費方式的不同直接導致成本的巨大差異。
兩種云服務都有其他多種定價機制??蛻艨梢允褂?AWS 的 Sport Instance 或 GCP 的 Preemptible Instance 來競價它們的空閑云計算能力。這些服務比專有的、按需服務便宜,缺點是不能保證隨時有可用的云資源提供服務。在 GCP 上,如果客戶長時間(每月的 25% 至 100%)使用服務,可以獲取更多折扣。在 AWS 上預付費或者一次購買大批量服務可以節(jié)省不少費用。底線是,如果你是一個超級用戶,并且使用云計算已經成為一種常態(tài),那么最好深入研究云計算,自己算計好成本。
最后,新手在 GCP 上體驗云服務的費用較低。新手只需 300 美元信用擔保,就可以免費試用 60 天 GCP 提供的全部云服務。AWS 只免費提供特定服務的特定試用層級,如果運行 Spark 任務,需要付費。這意味著初次體驗 Spark,GCP 具有更多選擇,也少了精打細算和討價還價的煩惱。
性能比拼
我們通過實驗檢測一個典型 Spark 工作負載的性能與開銷。實驗分別選擇 AWS 的 m3.xlarg 和 GCP 的 n1-standard-4,它們都是由一個 Master 和 5 個核心實例組成的集群。除了規(guī)格略有差別,虛擬核心和費用都相同。實際上它們在 Spark 任務的執(zhí)行時間上也表現(xiàn)的驚人相似。