大數據云服務:托管模式AWS EMR
1. 架構簡介
Amazon Elastic Map Reduce(Amazon EMR)是一種Web服務,讓用戶能夠輕松、快速并經濟地處理大量的數據。
Amazon EMR簡化了大數據處理,提供的托管Hadoop框架可以跨越各個動態可擴展的Amazon EC2實例分發和處理海量數據,如圖11.6所示。
圖11.6
在Amazon EMR上運行的Hadoop集群使用EC2實例作為虛擬Linux服務器用于主節點和從屬節點,將Amazon S3用于輸入和輸出數據的批量存儲,并將Cloud Watch用于監控集群性能和發出警報。
AWS EMR采用存儲和計算分離的架構,數據存儲在S3上,計算資源來自EC2實例。集群創建之后,MapReduce通過HDFS代理調用S3接口,從S3上讀取和寫入數據。
2. 節點
Amazon EMR為集群中的服務器定義了三種角色。
- 主節點——管理集群:協調將MapReduce可執行文件和原始數據子集分配到核心實例組和任務實例組。此外,它還會跟蹤每個任務的執行狀態,監控實例組的運行狀況。一個集群中只有一個主節點。這與Hadoop主節點映射。
- 核心節點——使用Hadoop分布式文件系統(HDFS)運行任務和存儲數據。這與Hadoop從屬節點映射。
- 任務節點(可選)——運行任務:這與Hadoop從屬節點映射。
3. 集群
集群是一組執行工作的服務器。在Amazon EMR中,集群是一組以EC2實例形式運行的虛擬服務器。
(1)如何向集群發送工作
在Amazon EMR上運行集群時,會針對如何指定所需完成的工作提供多個選項。
- 完整地定義要在Map和Reduce函數中完成的工作。對于那些處理固定的數據量并在處理完成時終止的集群,通常會采取這種做法。
- 創建長時間運行的集群并使用控制臺、Amazon EMR API、AWS CLI或Amazon EMR CLI提交步驟,其中可以包含一個或多個Hadoop任務。
- 創建一個安裝了Hadoop應用程序(如Hive、Pig或HBase)的集群,并使用這些應用程序提供的接口以腳本或者交互方式提交查詢。
- 創建長時間運行的集群、連接該集群并使用Hadoop API提交Hadoop任務。
(2)集群的生命周期
圖11.7顯示的是集群的生命周期及每個階段是如何映射到具體的集群狀態的。
圖11.7
成功的Amazon EMR集群遵循此流程:Amazon EMR先配置Hadoop集群,在這期間,集群的狀態是STARTING;接著,運行任何用戶定義的引導操作,在這期間,集群的狀態是BOOTSTRAPPING;在所有引導操作完成后,集群的狀態是RUNNING,在此階段,任務流程會按順序運行所有的集群步驟。
如果用戶通過啟用keepalive參數將集群配置為長時間運行的集群,那么集群會在處理完成后等待下一組說明時進入WAITING狀態。用戶必須在不再需要該集群時手動終止該集群。
如果用戶將集群配置為暫時性的集群,那么它將在所有的步驟完成后自動關閉。
當集群在沒有遇到錯誤的情況下終止時,它的狀態會轉換為SHUTTING_DOWN,且集群會關閉,從而終止虛擬服務器實例。集群上存儲的所有數據都會被刪除,而其他地方(如Amazon S3存儲段)中存儲的信息會保存下來。***,當所有的集群活動完成時,集群的狀態會標記為COMPLETED。
除非啟用了終止保護,否則,集群流程期間的任何故障都會終止該集群及其所有的虛擬服務器實例,集群上存儲的任何數據都會被刪除,集群的狀態會標記為FAILED。
4. 和Amazon EMR交互的方式
有多種可以和Amazon EMR交互的方式。
(1)Console(控制臺):這是一種圖形界面,可用于啟動和管理集群。借助這個界面,用戶可以填寫各種Web窗體,指定待啟動集群的詳細信息,查看現有集群的詳細信息,調試和終止集群。使用控制臺是開始使用Amazon EMR的最簡單方式,不需要編程知識。控制臺是在線提供的,網址是https://console.aws.amazon.com/elasticmapreduce/。
(2)AWS CLI(命令行界面):一種可在用戶的本地計算機上運行的客戶端應用程序,用于連接Amazon EMR,以及創建和管理集群。AWS CLI包含特定于Amazon EMR的功能豐富的命令集。用戶可以使用它來編寫腳本,以實現啟動和管理集群的自動化。如果用戶希望從命令行工作,則***的選擇是使用AWS CLI。
(3)Amazon EMR CLI:一種可在用戶的本地計算機上運行的舊式客戶端應用程序,用于連接Amazon EMR,以及創建和管理集群。用戶可以使用它來編寫腳本,以實現啟動和管理集群的自動化。Amazon EMR CLI的功能開發已停止。我們鼓勵使用Amazon EMR CLI的客戶遷移至AWS CLI。新用戶應該下載AWS CLI,而不是Amazon EMR CLI。
(4)Software Development Kit(軟件開發工具包,SDK):AWS提供一個帶有各種函數的軟件開發工具包,這些函數會調用Amazon EMR創建和管理集群。借助該軟件開發工具包,用戶可以編寫應用程序,用于自動處理集群的創建和管理流程。如果用戶希望擴展或者自定義Amazon EMR的功能,那么軟件開發工具包是***的選擇。用戶可以從http://aws.amazon.com/sdkforjava/下載適用于Java的AWS開發工具包。
(5)Web Service API:AWS提供低級別的界面,可以用來直接使用JSON調用Web服務。如果想要創建調用Amazon EMR的自定義軟件開發工具包,則***的選擇是使用該API。有關詳細信息請參閱Amazon EMR API Reference。
5. EMR架構的優缺點
存儲和計算分離架構,其***的好處是集群按需創建,需要時創建集群,不需要時可以釋放,從而節省成本。該架構非常適合云上按需獲取資源的模式。這種方案的比較大的問題是性能比較低下;集群創建周期長,通常需要十分鐘甚至以上;虛擬機性能下降比較明顯,大數據是重負載任務,通常虛擬機上的性能相比物理機集群下降60%;集群規模受限,不能像物理機集群那樣一個集群包含幾千臺虛擬機。這就意味著該架構只適合中小客戶,只能處理幾百GB規模的小數據。
【本文為51CTO專欄作者“大數據和云計算”的原創稿件,轉載請通過微信公眾號獲取聯系和授權】