天天看點

《HBase管理指南》一1.3 Amazon EC2的安裝及準備

本節書摘來異步社群《hbase管理指南》一書中的第1章,第1.3節,作者: 蔣燚峰 譯者: 蘇南,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

amazon ec2(amazon elastic compute cloud)是一種可在雲計算環境中提供具有可伸縮行的計算能力的web服務。通過使用amazon ec2,我們隻需用很低的成本就可以輕松地體驗到完全分布式運作的hbase的運作模式。本書中用來展示hbase各種管理操作的所有伺服器都運作在amazon ec2上。

本節将介紹如何安裝amazon ec2環境,這是在ec2上安裝hbase的準備工作。我們将建立在amazon ec2上一個名稱伺服器和用戶端。你也可以使用其他一些托管服務(比如rackspace)或使用一些真正的伺服器來建立hbase叢集。

管理執行個體需要使用一些ec2指令行工具。你可以按照如下網頁中的操作說明來下載下傳并安裝這些指令行工具。

為了能夠登入到ec2執行個體上,你需要一個公鑰/私鑰對。你可以使用該網頁中的操作指令來生成自己的密鑰對,然後将你的公共密鑰上傳到ec2上。

在你登入到一個執行個體上之前,你必須進行通路授權。下面這個連結中包含有如何向預設安全組添加規則的操作說明。

在完成上述這些步驟之後,請按照下面的清單進行一下檢查,以確定一切都已準備就緒。

x.509證書:檢查x.509證書是否已經上傳。你可以在自己帳戶的security credentials(安全憑據)頁中完成此項檢查。

ec2密鑰對:檢查ec2密鑰對是否已經上傳。您可以在aws management console | amazon ec2 | network & security | key pairs中完成此項檢查。

通路權限:檢查是否已授權可以進行通路。此項檢查可在aws management console | amazon ec2 | network & security | security groups | inbound中完成。

環境變量設定:檢查是否已完成了環境變量的設定。舉例來說,下面這段代碼就可以顯示出我所設定的環境變量;你要確定其中所使用的ec2_url正确地表明了你所屬的地區。

我們需要先通過ec2指令行工具來導入自己的ec2密鑰對,然後才能管理這些ec2執行個體。

鍵入如下這條指令來驗證設定是否正确。

如果上述這些設定都已正确完成,該指令将顯示出各執行個體的設定資訊,所顯示的内容應與你在之前使用指令進行配置時的資訊類似。

下載下傳示例代碼

如果隻是為了體驗一下hbase,那麼使用以ebs為後端的32位ami是最具成本效益的選擇。要確定你所選擇的是為你所屬地區而提供的ami。由于本書所使用的地區是us-west(us-west-1),是以對我們來說,該ami的id是ami-77287b32。這是一個32位的小ec2執行個體。小執行個體很便宜,是以适合用來在ec2中對hbase進行體驗。如果是生産環境,建議你至少使用帶ebs的高記憶體超大執行個體(high-memory extra large instance)或一個真正的伺服器。

請按照以下步驟操作你的ec2執行個體,以便為使用hbase做好準備。我們将啟動兩個ec2執行個體,一個作為dns/ntp伺服器,另一個作為dns/ntp用戶端。

1.啟動一個微執行個體來作為dns/ntp伺服器。本書後面的章節将一直使用ns1.hbase-admin-cookbook.com(ns1)來作為該伺服器的完全限定域名(fqdn)。

2.啟動一個小執行個體作為dns/ntp用戶端。本書後面的章節将一直使用client1. hbase-admin-cookbook.com(client1)作為該用戶端的fqdn。

3.在aws management console中驗證這些執行個體是否都已啟動,也可以通過鍵入以下指令進行驗證。

在該指令的輸出中,應該能夠看到兩個執行個體。從ec2-describe-instances指令的輸出結果或aws management console中,可以看到這些已啟動執行個體的公網dns。它們的dns應該是一些格式大緻為ec2-xx-xx-xxx-xx.us-west-1.compute.amazonaws. com的值(如圖1-2所示)。

《HBase管理指南》一1.3 Amazon EC2的安裝及準備

4.使用如下指令通過ssh登入執行個體。

5.在為伺服器安裝軟體包之前,先使用如下指令更新軟體包索引檔案。

6.使用如下指令将執行個體所屬時區修改為你所在的時區。

7.使用如下指令在dns伺服器上安裝ntp伺服器守護程式。

8.使用如下指令在客戶機/伺服器上安裝ntp用戶端。

9.分别修改/etc/ntp.conf配置檔案,讓ns1作為ntp伺服器運作,讓client1作為一個以ns1為伺服器的ntp用戶端來運作。

因為在ntp設定中沒有什麼hbase特别要求的配置,是以這裡就不對此進行詳述了。在本書的示例源碼中,可以找到伺服器端和用戶端不同ntp.conf檔案的示範樣本。

10.在ns1上安裝bind9作為dns伺服器。

bind9還需要進行一下配置,以使之成為内部域名查找時的首選主伺服器和外部域名查找時的緩存伺服器。dns伺服器也需要進行配置,以使其他ec2執行個體可以更新自己在dns伺服器上的記錄。

這部分内容并不屬于本書所要講述的範疇,是以我們将不對此進行詳述。bind9配置檔案的樣本,請參閱本書所附帶的示例源碼。

11.對于client1,隻需配置其把ns1作為自己的dns伺服器就可以了。

12.自動更新dns主機名。将用戶端ec2執行個體的使用者資料設為其主機名。打開aws management console的my instances頁,在執行個體清單中選中client1并将其關閉,然後單擊instance actions | view | change user data。在圖1-3所示的彈出頁面輸入你想要給該執行個體使用的主機名(在本例中為client1)。

《HBase管理指南》一1.3 Amazon EC2的安裝及準備

13.建立一個使用該使用者資料來更新dns伺服器上該用戶端的記錄的腳本。

14.最後,在rc.local檔案中添加下列腳本,以使ec2-hostname.sh可以在啟動時由rc.local調用執行。

首先,我們啟動了兩個執行個體,一個微執行個體作為dns/ntp伺服器,一個小執行個體作為其用戶端。為了能給其他執行個體提供名稱服務,dns名稱伺服器必須一直保持運作。使用微執行個體可以降低你的ec2成本。

在第3步中,我們設定好了ntp伺服器和用戶端。我們讓ntp伺服器與dns伺服器運作在同一個執行個體上,然後在其他所有執行個體上運作ntp用戶端。

注意: 請確定hbase叢集中各成員的時鐘上基本一緻。

ec2執行個體可以按需啟用和關閉,并且還無需為已關閉的執行個體付費。但重新啟動ec2執行個體會使執行個體的ip位址發生改變,這會給hbase的運作帶來麻煩。我們可以運作一個dns伺服器來為hbase叢集中所有ec2執行個體提供名稱服務,這樣就可以解決ip位址變化的問題。我們可以讓其他ec2執行個體在每次重新啟動時都更新一下自己在dns伺服器上的名稱記錄。

這就是我們在第4步和第5步中做的事情。第4步是正常的dns設定。在第5步中,我們把執行個體的名稱儲存在了該執行個體的使用者資料屬性中,這樣做的目的是:在該執行個體重新啟動後,我們仍可以使用ec2 api來找回它的名字。此外,我們還可以通過ec2 api來獲得該執行個體的私有ip位址。有了這些資料,我們就可以在執行個體每次重新開機時向dns伺服器發送一個dns update指令更新該執行個體名稱對應的ip位址。這樣,我們就可以始終使用一個固定主機名來通路該執行個體了。

隻有dns執行個體需要一直保持運作。在不需要運作hbase叢集時,我們可以将其他所有執行個體都關掉。

繼續閱讀