HBase 快速啟動

HBase 入門——獨立式HBase

在本節中,你將首先學習單節點、獨立的HBase的設置,並且學會運行單節點、獨立的HBase實例!

在一個獨立的HBase實例中,它具有所有的HBase系統服務程序:Master、RegionServers 和 ZooKeeper(在一個持續到本地文件系統的單一 JVM 中運行)。這是我們最基本的部署配置文件。我們將向您展示如何使用 HBase shell CLI 在 HBase 中創建表,在表中插入行,對錶執行放置和掃描操作,啟用或禁用表,以及啟動和停止 HBase。除了下載 HBase,只要10分鐘就可以完成以下的操作。

注意:在HBase 0.94.x之前,HBase預計環回IP地址為127.0.0.1。Ubuntu和其他一些發行版默認為127.0.1.1,這會給你帶來問題。

以下/etc/hosts文件可以在Ubuntu的HBase 0.94.x及更早版本上正確運行。如果遇到麻煩,請將其作為模板使用。

HBase 快速啟動

這個問題已經在hbase-0.96.0及更高版本中得到修復。

JDK版本要求

HBase要求安裝JDK。

HBase下載與啟動

選擇一個Apache 下載鏡像,下載 HBase Releases。點擊stable目錄,然後下載後綴為.tar.gz的二進制文件到你的到本地文件系統;例如 hbase-0.95-SNAPSHOT.tar.gz。

解壓下載的文件,然後進入到那個要解壓的目錄。

HBase 快速啟動

在你啟動HBase之前,需要先設置 JAVA_HOME 環境變量。您可以通過操作系統的常規機制來設置變量,但HBase提供了一箇中心機制 conf/hbase-env.sh,編輯此文件,取消註釋以下行JAVA_HOME,並將其設置為您的操作系統的適當位置,JAVA_HOME 變量應設置為包含可執行文件 bin/JAVA 的目錄。大多數現代 Linux 操作系統都提供了一種機制,例如在 RHEL 或 CentOS 上的替代方法,用於在 Java 等可執行版本之間進行透明切換。在這種情況下,您可以將 JAVA_HOME 設置為包含指向 bin/JAVA 的符號鏈接的目錄,這通常是:/usr。


HBase 快速啟動

編輯conf/hbase-site.xml,這是HBase的主要配置文件。此時,您只需要在HBase和ZooKeeper寫入數據的本地文件系統上指定目錄即可。默認情況下,在/tmp下創建一個新目錄。許多服務器被配置為在重啟時刪除/tmp的內容,所以你應該在其他地方存儲數據。以下配置將把HBase的數據存儲在hbase目錄下的testuser用戶主目錄中。將<property>標籤粘貼到標籤下<configuration>,在新的HBase安裝中應該是空的。 /<configuration>/<property>

獨立HBase的hbase-site.xml:


HBase 快速啟動

您不需要創建HBase數據目錄,HBase會為你做這個。

注意:上述示例中的hbase.rootdir指向本地文件系統中的一個目錄。'file:/'前綴是我們如何表示本地文件系統。要在現有的HDFS實例上安裝HBase,請將hbase.rootdir設置為指向您實例上的目錄:例如,hdfs://namenode.example.org:8020/hbase。有關更多信息,請參見下面關於獨立 HBase HDFS 的部分。

提供了bin/start-hbase.sh腳本來方便的啟動HBase。發出命令,如果一切正常,則會將消息記錄到標準輸出,顯示HBase已成功啟動。您可以使用該jps命令來驗證您是否有一個名為 HMaster 的正在運行的進程。在獨立模式下,HBase在單個JVM中運行所有守護進程,即HMaster,單個HRegionServer和ZooKeeper守護進程。

為此,打開HBase主文件夾,然後運行HBase啟動腳本,如下所示:


HBase 快速啟動

如果一切順利,當運行HBase啟動腳本,它會提示一條消息:HBase已經啟動


HBase 快速啟動

提示:Java需要安裝並可用。如果您得到一個錯誤,指示Java未安裝,但它位於您的系統上(可能位於非標準位置),請編輯conf / hbase-env.sh文件,並將該JAVA_HOME設置修改為指向包含在你的系統上的bin/Java。

shell練習——首次使用HBase

1、連接到HBase。使用HBase shell命令連接到您的 HBase 運行實例,位於HBase安裝的bin /目錄中。在本例中,省略了啟動HBase Shell時打印的一些用法和版本信息。


HBase 快速啟動

2、顯示HBase Shell幫助文本。鍵入“help”並按“Enter”,以顯示HBase Shell的一些基本用法信息以及幾個示例命令。請注意,表名、行、列都必須用引號字符括起來。

3、創建一個表。使用該“create”命令來創建一個新的表。您必須指定表名稱和ColumnFamily名稱。


HBase 快速啟動

4、列出關於您的表的信息,通過使用“list”命令來實現:


HBase 快速啟動

5、把數據放到你的表中。要將數據放入表中,請使用該“put”命令。


HBase 快速啟動

在這裡,我們插入三個值,一次一個。第一個插入是在row1,列cf:a,值為value1。HBase 中的列由列族前綴組成,在此示例中為cf,後跟一個冒號,然後是一個列限定符後綴(在本例中為 a)。

6、一次掃描表中的所有數據。從HBase獲取數據的方法之一是掃描。使用該“scan”命令掃描表中的數據。你可以限制你的掃描,但現在,所有的數據都被提取。


HBase 快速啟動

7、獲取一行的數據。要一次獲取一行數據,請使用該“get”命令。


HBase 快速啟動

8、禁用表格。如果您想刪除表格或更改其設置以及其他一些情況,則需要先使用“disable”命令禁用表格。您可以使用該“enable”命令重新啟用它。


HBase 快速啟動

如果您測試了上面的“enable”命令,請再次禁用表格:


HBase 快速啟動

9、刪除表。要刪除表,請使用該“drop”命令。


HBase 快速啟動

10、退出 HBase Shell。要退出HBase Shell並斷開與群集的連接,請使用該“quit”命令。HBase仍然在後臺運行。

停止HBase

1、與提供bin / start-hbase.sh腳本以便方便地啟動所有HBase守護進程相同,你可以使用bin/stop-hbase.sh腳本停止它們。


HBase 快速啟動

2、發出命令後,進程關閉可能需要幾分鐘的時間。使用jps要確保HMASTER和HRegionServer進程被關閉。

以上向您展示瞭如何啟動和停止一個獨立的HBase實例。在接下來的部分中,我們將簡要介紹一下HBase部署的其他模式。

在偽分佈式模式安裝HBase

在通過快速啟動HBase的獨立模式工作之後,您可以重新配置HBase以偽分佈式模式運行。偽分佈模式意味著HBase仍然在單個主機上完全運行,但是每個HBase守護進程(HMaster,HRegionServer和ZooKeeper)作為一個單獨的進程運行:在獨立模式下,所有守護進程都運行在一個jvm進程/實例中。默認情況下,除非按照快速啟動HBase的獨立模式中所述配置hbase.rootdir屬性,否則您的數據仍存儲在/tmp/中。在本演練中,我們將數據存儲在HDFS中,假設您有HDFS可用。您可以跳過HDFS配置,繼續將數據存儲在本地文件系統中。

Hadoop配置

此過程假定您已在本地系統或遠程系統上配置Hadoop和HDFS,並且它們正在運行且可用。它還假定您正在使用Hadoop 2。

1、請停止HBase,如果它正在運行。如果剛剛完成快速啟動HBase的獨立模式並且HBase仍在運行,請停止它。這個過程將創建一個全新的目錄,HBase將存儲它的數據,所以你之前創建的任何數據庫都將丟失。

2、配置HBase。編輯hbase-site.xml配置。首先,添加以下指示HBase以分佈式模式運行的屬性,每個守護進程有一個JVM實例。


HBase 快速啟動

接下來,將 hbase rootdir 從本地文件系統更改為您的 HDFS 實例的地址,使用 HDFS:////或 URI 語法。在這個例子中,HDFS在端口8020的本地主機上運行。


HBase 快速啟動

您不需要在HDFS中創建目錄。HBase會為你做這個。如果你創建了這個目錄,HBase會試圖做一個遷移,這不是你想要的。

3、啟動 HBase。使用bin/start-hbase.sh命令啟動HBase。如果您的系統配置正確,該jps命令應顯示HMaster和HRegionServer進程正在運行。

4、檢查HDFS中的HBase目錄。如果一切正常,HBase在HDFS中創建它的目錄。在上面的配置中,它存儲在HDFS上的/hbase/中。您可以使用 hadoop 的 bin/目錄中的 hadoop fs 命令來列出此目錄。


HBase 快速啟動

5、創建一個表並使用數據填充它。您可以使用HBase Shell創建一個表,使用數據填充它,使用與shell練習中相同的步驟掃描並從中獲取值。

6、啟動和停止備份HBase主(HMaster)服務器。

注意:在同一個硬件上運行多個HMaster實例在生產環境中是沒有意義的,就像運行偽分佈式集群對於生產沒有意義一樣。此步驟僅供測試和學習之用。

HMaster服務器控制HBase集群。你可以啟動最多9個備份HMaster服務器,這個服務器總共有10個HMaster計算主服務器。要啟動備份HMaster,請使用local-master-backup.sh。對於要啟動的每個備份主節點,請添加一個表示該主節點的端口偏移量的參數。每個HMaster使用三個端口(默認情況下為16010,16020和16030)。端口偏移量被添加到這些端口,因此使用偏移量2,備份HMaster將使用端口16012,16022和16032。以下命令使用端口:16012/16022/16032,16013/16023/16033和16015/16025/16035啟動3個備份服務器。


HBase 快速啟動

要在不殺死整個群集的情況下殺死備份主機,則需要查找其進程ID(PID)。PID存儲在一個名為/tmp/hbase-USER-X-master.pid的文件中。該文件的唯一內容是PID。您可以使用該kill -9命令來殺死該PID。以下命令將終止具有端口偏移1的主服務器,但保持群集正在運行:


HBase 快速啟動

7、啟動和停止其他RegionServers。HRegionServer按照HMaster的指示管理StoreFiles中的數據。通常,一個HRegionServer在集群中的每個節點上運行。在同一個系統上運行多個HRegionServers對於偽分佈式模式下的測試非常有用。該local-regionservers.sh命令允許您運行多個RegionServer。它以類似的local-master-backup.sh命令的方式工作,因為您提供的每個參數都代表實例的端口偏移量。每個RegionServer需要兩個端口,默認端口是16020和16030。但是,由於HMaster使用默認端口,所以其他RegionServers的基本端口不是默認端口,而HMaster自從HBase版本1.0.0以來也是RegionServer。基本端口是16200和16300。您可以在服務器上運行另外99個不是HMaster或備份HMaster的RegionServer。以下命令將啟動另外四個RegionServers,它們在從16202/16302(基本端口16200/16300加2)開始的順序端口上運行。


HBase 快速啟動

要手動停止RegionServer,請使用帶有stop參數和服務器偏移量的local-regionservers.sh命令停止。


HBase 快速啟動

8、停止HBase。您可以使用bin/stop-hbase.sh命令以與快速啟動獨立式HBase過程相同的方式停止HBase 。

在完全分佈式模式測試HBase

實際上,您需要一個完全分佈式的配置來全面測試HBase,並將其用於實際場景中。在分佈式配置中,集群包含多個節點,每個節點運行一個或多個HBase守護進程。這些包括主要和備份主實例,多個ZooKeeper節點和多個RegionServer節點。

此高級快速入門將兩個以上的節點添加到您的群集。架構如下:


HBase 快速啟動

這個快速入門假定每個節點都是虛擬機,並且它們都在同一個網絡上。它基於之前的快速入門、偽分佈式本地安裝,假設您在該過程中配置的系統是現在node-a。繼續之前,在node-a停止HBase 。

提示:請確保所有節點都具有完全的通信訪問權限,並且沒有任何防火牆規則可以阻止它們相互交談。如果您看到任何錯誤,如no route to host,請檢查您的防火牆。

配置無密碼SSH訪問

node-a需要能夠登錄node-b和node-c(和自己)才能啟動守護進程。實現這一點的最簡單的方法是在所有主機上使用相同的用戶名,並配置無密碼的SSH登錄,從node-a到其他的。

1、在node-a,生成一個密鑰對。以運行HBase的用戶身份登錄時,使用以下命令生成SSH密鑰對:


HBase 快速啟動

如果命令成功,密鑰對的位置將打印到標準輸出。公鑰的默認名稱是id_rsa.pub。

2、創建將在其他節點上保存的共享密鑰的目錄。在node-b和上node-c,以HBase用戶身份登錄,並在用戶主目錄中創建一個.ssh/目錄(如果尚不存在)。如果它已經存在,請注意它可能已經包含其他鍵。

3、將公鑰複製到其他節點。通過使用scp或其他一些安全的手段,安全地將公鑰從node-a複製到每個節點。在其他每個節點上,創建一個名為.ssh/authorized_keys的新文件(如果該文件尚不存在),並將id_rsa.pub文件的內容附加到該文件的末尾。請注意,你也需要為node-a本身執行此項。


HBase 快速啟動

4、測試無密碼登錄。如果您正確執行了此過程,則node-a在使用相同用戶名從其他任一節點進行SSH連接時,不應提示您輸入密碼。

5、由於node-b將運行備份主機,請重複上述過程,在你看到node-a的任何地方替換node-b。請確保不要覆蓋現有的.ssh / authorized_keys文件,而是使用>>運算符,而不是>運算符將新密鑰連接到現有文件。

準備 node-a

node-a將運行您的主要主服務器和ZooKeeper進程,但不運行RegionServers。從node-a停止啟動RegionServer。

1、編輯conf/regionservers並刪除包含localhost的行。為node-b和node-c加入具有主機名或IP地址線。即使你想在node-a運行一個RegionServer,你也應該用其他服務器用來與之通信的主機名來引用它。在這種情況下,那將是node-a.example.com。這使您可以將配置分發給群集中的每個節點,而不會造成任何主機名衝突。保存文件。

2、配置HBase以將node-b作為備份主機。在conf/調用backup-masters中創建一個新文件,並添加一個新的行,其中的主機名為node-b。在這個演示中,主機名是node-b.example.com。

3、配置ZooKeeper。實際上,你應該仔細考慮你的ZooKeeper配置。您可以在zookeeper部分找到更多關於配置ZooKeeper的信息。這個配置將指示HBase在集群的每個節點上啟動和管理一個ZooKeeper實例。在node-a上,編輯conf/hbase-site.xml並添加下列屬性。


HBase 快速啟動

4、在您的配置中,您已經將node-a作為localhost引用,將引用改為指向其他節點用來引用node-a的主機名。在這些例子中,主機名是node-a.example.com。

準備 node-b 和 node-c

node-b 將運行一個備份主服務器和一個ZooKeeper實例。

1、下載並解壓HBase。將HBase下載並解壓到node-b,就像您為獨立和偽分佈式快速入門所操作的一樣。

2、將配置文件從node-a複製到node-b和node-c。您的群集的每個節點都需要具有相同的配置信息。將conf /目錄下的內容複製到node-b和node-c上的conf /目錄中。

啟動並測試群集

1、確保HBase沒有在任何節點上運行。如果您在之前的測試中忘記停止HBase,您將會遇到錯誤。通過使用該jps命令檢查HBase是否在任何節點上運行。尋找HMaster,HRegionServer和HQuorumPeer的進程。如果他們存在,刪除他們。

2、啟動群集。在node-a,發出start-hbase.sh命令。您的輸出將類似於下面的輸出。


HBase 快速啟動

ZooKeeper首先啟動,然後是master,然後是RegionServers,最後是backup masters。

3、驗證進程是否正在運行。在群集的每個節點上,運行該jps命令並驗證每臺服務器上是否運行了正確的進程。如果用於其他用途,您可能會看到在您的服務器上運行的其他Java進程。

例子:node-a jps輸出:


HBase 快速啟動

示例:node-b jps輸出:


HBase 快速啟動


例子:node-c jps輸出:


HBase 快速啟動

ZooKeeper進程名稱這個HQuorumPeer過程是一個由HBase控制和啟動的ZooKeeper實例。如果以這種方式使用ZooKeeper,則每個群集節點僅限於一個實例,並且僅適用於測試。如果ZooKeeper在HBase之外運行,則調用該進程QuorumPeer。

4、瀏覽到Web UI。Web UI端口更改Web UI端口更改在 HBase 更新的0.98.x 中,HBase Web UI使用的HTTP端口從主服務器的60010和每個RegionServer的60030變為主服務器的16010和RegionServer的16030。如果一切設置正確,您應該能夠使用Web瀏覽器連接到Master(http://node-a.example.com:16010/)或Secondary Master的UI(http://node-b.example.com:16010/)。如果您可以通過localhost而不是從另一臺主機連接,請檢查您的防火牆規則。您可以在端口16030的IP地址中查看每個RegionServers的Web UI,也可以通過單擊Master的Web UI中的鏈接來查看。

5、測試節點或服務消失時會發生什麼。在配置了三節點群集後,事情不會很有彈性。您仍然可以通過關閉進程並查看日誌來測試主Master或RegionServer的行為。


分享到:


相關文章: