在最近的AWS Re:Invent大會上,Amazon發布了AWS Batch的預覽版。通過AWS Batch,用戶可以對他們云端的調度服務和工作負載進行優化。Amazon推出這項服務是為了滿足大量AWS客戶的需求,他們基于EC2實例、容器和CloudWatch建立他們自己的批處理平臺。
批次和作業調度器并不是什么新的模式。一直以來,調度器都是運行在固定的本地基礎設施集群上。人們要么過度構建基礎設施,不能物盡其用,要么基礎設施構建不足,造成機會的流失,這些都是不可避免的。AWS首席布道師Jeff Barr看到了基于云平臺構建現代化調度平臺的機會:
我們相信云計算可以讓批處理計算模型變得更好,讓它可以更快地訪問更多不同類型的EC2實例,可以根據具體需求彈性地伸縮,并帶來新的計費模型,這個計費模型根據實際處理能力來計費,經濟實惠。
AWS Batch不需要在服務器端安裝任何東西,而且可以動態分配計算資源,它可以加入Amazon Spot實例,這樣就可以搶占Amazon EC2空閑的計算資源。AWS Batch服務還提供了作業優先級和依賴管理特性。Amazon希望客戶可以把精力集中在業務需求上,讓AWS Batch來處理剩下的事情。
在AWS re:Invent大會的“AWS Batch:在AWS上運行簡單高效的批處理計算”討論環節,AWS首席產品經理Jamie Kinney介紹了有關AWS Batch的幾個概念:
Jobs是作業單元,它們被提交到Job Queues,并按照優先級排序,一直待在隊列里直到有計算資源來執行它們。 Job Definitions指定如何執行Jobs。每個作業都需要引用一個Job Definition,Job Definition的參數可以被覆蓋,包括vCPU、內存、掛載點和容器屬性。 Job Queues用來保存Jobs,直到它們被執行。Jobs會等待它們所依賴的Jobs執行完畢,或者等待分配系統資源。 Compute Environments包括托管和非托管兩種環境。在托管環境里,你可以提出業務需求(比如實例類型、對vCPU的需求量,等等),AWS將會為你啟動和擴展資源。而在非托管環境里,你可以啟動和管理自己的資源,比如容器。 Scheduler對已提交到Job Queue的Jobs進行評估,評估它們在何時、何處以及如何被執行。Jobs幾乎是按照它們提交的順序來執行的,只要它們所依賴的條件得到滿足。Amazon提供了AWS Batch適用性指南。對于需要大量傳遞數據的場景,比如ETL或大數據處理,Amazon建議客戶使用EMR、數據管道、Redshift或其它相關的數據處理工具。而對于存在很多小型調度作業的場景,可以使用AWS,不過Kinney認為客戶“需要一個工作流或作業調度系統來管理這些作業。”
Kinney認為AWS Batch就是一個理想的工具,它特別適用于
那些在異構計算機上運行大量大大小小計算任務的客戶。
AWS Batch目前還處在預覽版階段,只在美國東部(弗吉尼亞北部)地區可用。等到服務的可用性達到通用標準,就會在其它地區開放。根據AWS Batch的路線圖,AWS Batch將在后期支持作業數組,并且可以使用AWS Lambda來執行作業。
查看英文原文:Amazon Introduces AWS Batch Preview