不久前我們公佈了Cloudbreak ,開源的Hadoop as a Service API。在本次釋出中,我們開源了REST API、REST client、UI和CLI/shell。本文將向大家展示,在使用者喜歡的雲服務上通過Cloudbreak shell 按需部署Hadoop叢集是多麼的方便,它可以錄製並自動化整個過程。
使用者可以根據自己的喜好選擇圖形介面,命令列介面或者直接呼叫REST API。在SequenceIQ,我們傾向於儘可能使用命令列工具,因為這比使用web圖形介面更加快速並且更適合自動化。我們是不是沉迷於自動化了?當然是!所有可能會被二次執行的步驟我們都會將它指令碼化並自動化。
當然,對自動化的執著並沒有影響我們付諸於圖形介面開發的質量和標準。Cloudbreak的圖形介面建立在最新最好的web UI框架Angular JS上,非常直觀並且反饋簡潔。我們將釋出一篇關於圖形介面使用的文章。不過,我們建議大家可以直接試用一下這個圖形介面- 它非常簡單易用,只需一次註冊和幾次點選就可以部署自己的Hadoop叢集了。
現在回到CLI。還記得我們在Apache上的一個貢獻Ambari shell and REST API 嗎?Cloudbreak shell 也同樣建立在Spring Shell技術上, 它是一個互動的shell, 可以使用基於Spring的程式設計模型進行擴充套件,並且在諸如Spring Roo, Spring XD等各種專案中經過了實戰考驗,Spring REST Shell將這兩個專案整合成一個強大的工具。
Cloudbreak Shell
CLI的提供了一個互動式的命令列工具,它支援:
- REST API或Cloudbreak web 圖形介面提供的所有功能
- 通過指令碼實現任務管理的自動化
- 可感知上下文的命令
- Tab鍵補全命令
- 必須的/可選的引數
- hint 命令對使用者進行指引
安裝Cloudbreak Shell
有三種安裝Cloudbreak Shell的方式:
- 使用我們準備的docker image
- 從我們的maven repository裡下載最新的獨立可執行jar檔案
- 從原始碼直接建立
從原始碼建立
1 2 3 |
git clone https://github.com/sequenceiq/cloudbreak-shell.git cd cloudbreak-shell mvn clean package |
注意:若使用者要使用我們host的Cloudbreak,請使用latest-release.sh獲取正確的CLI版本。若使用者要從master branch來建立自己的Cloudbreak,請使用latest-snap.sh獲取CLI的正確版本。
如果使用者希望直接使用程式碼或者擴充套件新的命令,請按照以下步驟進行。使用者需要jdk 1.7 和maven 3.x.x。
登陸並連線到Cloudbreak
使用shell有幾種不同的方法,首先需要一個可連線的Cloudbreak 例項。最簡單的辦法是使用我們host的Cloudbreak – 你可以用SequenceIQ 帳戶及密碼直接登入。如果還沒有帳戶,可以在這裡 申請。
或者,你可以host 自己的Cloudbreak例項,具體步驟請參考Cloudbreak 文件。 如果你host自己的Cloudbreak 伺服器,你依然可以用SequenceIQ 的帳戶和我們的身份認證伺服器,但前提是為你的Cloudbreak 安裝配置正確的客戶端帳戶資訊使其能被我們的身份認證伺服器接受。目前還不支援通過API來註冊你的Cloudbreak 應用(但這個已經在我們計劃中),如果你想要使用這個方法,請聯絡我們。
第三種方法是將我們的整個應用隨著Cloudbreak 一起部署在你們本地的系統上,包括我們基於OAuth2的身份認證伺服器和使用者管理應用Sultans。
我們建議使用者使用我們host的服務以便遇到問題時得到我們的及時幫助。歡迎使用者通過我們的GitHub repository或者其他在產品文件中指明的任何方式向我們提出bug,要求改進,或者給我們提供任何反饋。
Cloudbreak shell是一個基於Spring Boot的獨立可執行jar。
1 2 3 4 5 6 7 8 9 10 11 12 |
Usage: java -jar cloudbreak-shell-0.2-SNAPSHOT.jar : Starts Cloudbreak Shell in interactive mode. java -jar cloudbreak-shell-0.2-SNAPSHOT.jar --cmdfile=<FILE> : Cloudbreak executes commands read from the file. Options: --cloudbreak.address=<http[s]://HOSTNAME:PORT> Address of the Cloudbreak Server [default: https://cloudbreak-api.sequenceiq.com]. --identity.address=<http[s]://HOSTNAME:PORT> Address of the SequenceIQ identity server [default: https://identity.sequenceiq.com]. --sequenceiq.user=<USER> Username of the SequenceIQ user [default: user@sequenceiq.com]. --sequenceiq.password=<PASSWORD> Password of the SequenceIQ user [default: password]. Note: You should specify at least your username and password. |
建立一個雲帳戶登陸資訊
使用者需要一個雲服務賬戶(比如Amazon AWS帳戶)來使用Cloudbreak。請注意Cloudbreak並不會儲存你的雲帳戶資訊。我們使用Amazon的IAM(Identity and Access Management),這要求使用者在Amazon或其他雲服務中建立一個IAM角色和策略,並與自己的雲賬戶關聯。請參考文件獲得更詳盡說明。
1 |
credential createEC2 --description “description" --name “myCredentialName" --roleArn "arn:aws:iam::NUMBER:role/cloudbreak-ABC" --sshKeyUrl “URL towards your AWS public key" |
使用者也可以通過—sshKeyPath switch上傳自己公鑰的方式建立賬戶登陸資訊, 通過credential list 命令來確認登陸資訊是否建立成功。使用者可以在幾個雲登陸資訊中切換,當你想選擇某個登陸資訊並以其身份活動的話,請使用以下命令:
1 |
credential select --id #ID of the credential |
建立一個template
template給開發者和系統管理員提供了一個簡便的方法進行雲系統資源集合建立及管理,進行有條理可預測的維護和更新。使用者可以使用template重複的建立相同的stack(或者以其為基礎建立新的stack)。
1 |
template createEC2 --name awstemplate --description aws-template --region EU_WEST_1 --instanceType M3Xlarge --volumeSize 100 --volumeCount 2 |
使用者可以使用template list命令查詢一個template是否建立成功。通過下面的命令來查詢及選擇一個你想要的template:
1 2 3 |
template show --id #ID of the template template select --id #ID of the template |
建立一個stack
Stack是template的例項,是一個基於template的執行著的雲系統。使用以下的命令來建立一個被你的Hadoop叢集所使用的stack。
1 |
stack create --name “myStackName" --nodeCount 10 |
選擇一個blueprint
我們用Cloudbreak釋出了一些預設的Hadoop 叢集blueprint。使用者可以使用這些blueprint或者新增自己的。通過下面的命令來檢視可用的blueprint, 選擇某個blueprint:
1 2 3 |
blueprint list blueprint select --id #ID of the blueprint |
建立一個Hadoop叢集
現在已經快要完成了,只剩下一個命令就可以在你喜歡的雲服務上建立你的Hadoop叢集。與呼叫API或者圖形介面相同,這個命令將使用你的template ,通過CloudFormation來啟動一個雲端stack ,一旦這個stack被啟動並執行(雲端的準備已經完成),它將使用你選擇的blueprint並安裝你的定製Hadoop叢集及選定的元件和服務。請參考文件來檢視我們支援的Hadoop元件和服務。
1 |
cluster create --description “my cluster desc" |
至此工作已經完成,你可以通過Ambari圖形介面來檢查進度。如果你在 Cloudbreak UI中設定了log,你也可以在這裡檢視進度並找到Ambari的IP地址。
自動化這個過程
每次啟動shell,所有執行的命令都會一行一行的寫入log檔案。之後使用者可以通過script命令或者在這個命令後加入—cmdfile 選項來重新執行一邊這些命令。
命令
下面列出了所有可用的命令。請注意所有的命令都是上下文感知的,並且可以通過使用tab鍵來補全命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
* blueprint add - Add a new blueprint with either --url or --file * blueprint defaults - Adds the default blueprints to Cloudbreak * blueprint list - Shows the currently available blueprints * blueprint select - Select the blueprint by its id * blueprint show - Shows the blueprint by its id * cluster create - Create a new cluster based on a blueprint and template * cluster show - Shows the cluster by stack id * credential createAzure - Create a new Azure credential * credential createEC2 - Create a new EC2 credential * credential defaults - Adds the default credentials to Cloudbreak * credential list - Shows all of your credentials * credential select - Select the credential by its id * credential show - Shows the credential by its id * exit - Exits the shell * help - List all commands usage * hint - Shows some hints * quit - Exits the shell * script - Parses the specified resource file and executes its commands * stack create - Create a new stack based on a template * stack list - Shows all of your stack * stack select - Select the stack by its id * stack show - Shows the stack by its id * stack terminate - Terminate the stack by its id * template create - Create a new cloud template * template createEC2 - Create a new EC2 template * template defaults - Adds the default templates to Cloudbreak * template list - Shows the currently available cloud templates * template select - Select the template by its id * template show - Shows the template by its id * version - Displays shell version |
100%的開源是我們的一貫作風,我們一直致力於將一切開源-在GitHub repository上可以檢視具體內容。如果有任何問題,歡迎通過我們的blog與我們聯絡,或者在LinkedIn, Twitter 或 Facebook上關注我們。