W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在本節(jié)中,你將首先學習單節(jié)點、獨立的HBase的設置,并且學會運行單節(jié)點、獨立的HBase實例!
在一個獨立的HBase實例中,它具有所有的HBase系統(tǒng)服務程序:Master、RegionServers 和 ZooKeeper(在一個持續(xù)到本地文件系統(tǒng)的單一 JVM 中運行)。這是我們最基本的部署配置文件。我們將向您展示如何使用 HBase shell CLI 在 HBase 中創(chuàng)建表,在表中插入行,對表執(zhí)行放置和掃描操作,啟用或禁用表,以及啟動和停止 HBase。除了下載 HBase,只要10分鐘就可以完成以下的操作。
注意:在HBase 0.94.x之前,HBase預計環(huán)回IP地址為127.0.0.1。Ubuntu和其他一些發(fā)行版默認為127.0.1.1,這會給你帶來問題。請參閱為什么HBase關心/ etc / hosts?為細節(jié)
以下/etc/hosts文件可以在Ubuntu的HBase 0.94.x及更早版本上正確運行。如果遇到麻煩,請將其作為模板使用。
127.0.0.1 localhost ubuntu.ubuntu-domain Ubuntu下的127.0.0.1
這個問題已經(jīng)在hbase-0.96.0及更高版本中得到修復。
HBase要求安裝JDK。
選擇一個Apache 下載鏡像,下載 HBase Releases。點擊stable目錄,然后下載后綴為.tar.gz的二進制文件到你的到本地文件系統(tǒng);例如 hbase-0.95-SNAPSHOT.tar.gz。
解壓下載的文件,然后進入到那個要解壓的目錄。
$ tar xfz hbase-0.95-SNAPSHOT.tar.gz
$ cd hbase-0.95-SNAPSHOT
在你啟動HBase之前,需要先設置 JAVA_HOME 環(huán)境變量。您可以通過操作系統(tǒng)的常規(guī)機制來設置變量,但HBase提供了一個中心機制 conf/hbase-env.sh,編輯此文件,取消注釋以下行JAVA_HOME
,并將其設置為您的操作系統(tǒng)的適當位置,JAVA_HOME 變量應設置為包含可執(zhí)行文件 bin/JAVA 的目錄。大多數(shù)現(xiàn)代 Linux 操作系統(tǒng)都提供了一種機制,例如在 RHEL 或 CentOS 上的替代方法,用于在 Java 等可執(zhí)行版本之間進行透明切換。在這種情況下,您可以將
JAVA_HOME 設置為包含指向 bin/JAVA 的符號鏈接的目錄,這通常是:/usr。
JAVA_HOME = / USR
編輯conf/hbase-site.xml,這是HBase的主要配置文件。此時,您只需要在HBase和ZooKeeper寫入數(shù)據(jù)的本地文件系統(tǒng)上指定目錄即可。默認情況下,在/tmp下創(chuàng)建一個新目錄。許多服務器被配置為在重啟時刪除/tmp的內容,所以你應該在其他地方存儲數(shù)據(jù)。以下配置將把HBase的數(shù)據(jù)存儲在hbase目錄下的testuser
用戶主目錄中。將<property>
標簽粘貼到標簽下<configuration>
,在新的HBase安裝中應該是空的。
獨立HBase的hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
</configuration>
您不需要創(chuàng)建HBase數(shù)據(jù)目錄,HBase會為你做這個。
注意:上述示例中的hbase.rootdir指向本地文件系統(tǒng)中的一個目錄。'file:/'前綴是我們如何表示本地文件系統(tǒng)。要在現(xiàn)有的HDFS實例上安裝HBase,請將hbase.rootdir設置為指向您實例上的目錄:例如,hdfs://namenode.example.org:8020/hbase。有關更多信息,請參見下面關于獨立 HBase HDFS 的部分。
提供了bin/start-hbase.sh腳本來方便的啟動HBase。發(fā)出命令,如果一切正常,則會將消息記錄到標準輸出,顯示HBase已成功啟動。您可以使用該jps命令來驗證您是否有一個名為 HMaster 的正在運行的進程。在獨立模式下,HBase在單個JVM中運行所有守護進程,即HMaster,單個HRegionServer和ZooKeeper守護進程。
為此,打開HBase主文件夾,然后運行HBase啟動腳本,如下所示:
$cd /usr/local/HBase/bin
$./start-hbase.sh
如果一切順利,當運行HBase啟動腳本,它會提示一條消息:HBase已經(jīng)啟動
starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out
提示:Java需要安裝并可用。如果您得到一個錯誤,指示Java未安裝,但它位于您的系統(tǒng)上(可能位于非標準位置),請編輯conf / hbase-env.sh文件,并將該JAVA_HOME
設置修改為指向包含在你的系統(tǒng)上的bin/Java。
$ ./bin/hbase shell
hbase(main):001:0>
hbase(main):001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds
=> Hbase::Table - test
hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds
=> ["test"]
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
在這里,我們插入三個值,一次一個。第一個插入是在row1,列cf:a,值為value1。HBase 中的列由列族前綴組成,在此示例中為cf,后跟一個冒號,然后是一個列限定符后綴(在本例中為 a)。hbase(main):006:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1421762485768, value=value1
row2 column=cf:b, timestamp=1421762491785, value=value2
row3 column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds
hbase(main):007:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1421762485768, value=value1
1 row(s) in 0.0350 seconds
hbase(main):008:0> disable 'test'
0 row(s) in 1.1820 seconds
hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds
如果您測試了上面的“enable”命令,請再次禁用表格:hbase(main):010:0> disable 'test'
0 row(s) in 1.1820 seconds
hbase(main):011:0> drop 'test'
0 row(s) in 0.1370 seconds
$ ./bin/stop-hbase.sh
stopping hbase....................
$
以上向您展示了如何啟動和停止一個獨立的HBase實例。在接下來的部分中,我們將簡要介紹一下HBase部署的其他模式。
在通過快速啟動HBase的獨立模式工作之后,您可以重新配置HBase以偽分布式模式運行。偽分布模式意味著HBase仍然在單個主機上完全運行,但是每個HBase守護進程(HMaster,HRegionServer和ZooKeeper)作為一個單獨的進程運行:在獨立模式下,所有守護進程都運行在一個jvm進程/實例中。默認情況下,除非按照快速啟動HBase的獨立模式中所述配置hbase.rootdir屬性,否則您的數(shù)據(jù)仍存儲在/tmp/中。在本演練中,我們將數(shù)據(jù)存儲在HDFS中,假設您有HDFS可用。您可以跳過HDFS配置,繼續(xù)將數(shù)據(jù)存儲在本地文件系統(tǒng)中。
Hadoop配置
此過程假定您已在本地系統(tǒng)或遠程系統(tǒng)上配置Hadoop和HDFS,并且它們正在運行且可用。它還假定您正在使用Hadoop 2。
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
接下來,將 hbase rootdir 從本地文件系統(tǒng)更改為您的 HDFS 實例的地址,使用 HDFS:////或 URI 語法。在這個例子中,HDFS在端口8020的本地主機上運行。<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:8020/hbase</value>
</property>
您不需要在HDFS中創(chuàng)建目錄。HBase會為你做這個。如果你創(chuàng)建了這個目錄,HBase會試圖做一個遷移,這不是你想要的。$ ./bin/hadoop fs -ls /hbase
Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs
注意:在同一個硬件上運行多個HMaster實例在生產(chǎn)環(huán)境中是沒有意義的,就像運行偽分布式集群對于生產(chǎn)沒有意義一樣。此步驟僅供測試和學習之用。
HMaster服務器控制HBase集群。你可以啟動最多9個備份HMaster服務器,這個服務器總共有10個HMaster計算主服務器。要啟動備份HMaster,請使用local-master-backup.sh。對于要啟動的每個備份主節(jié)點,請?zhí)砑右粋€表示該主節(jié)點的端口偏移量的參數(shù)。每個HMaster使用三個端口(默認情況下為16010,16020和16030)。端口偏移量被添加到這些端口,因此使用偏移量2,備份HMaster將使用端口16012,16022和16032。以下命令使用端口:16012/16022/16032,16013/16023/16033和16015/16025/16035啟動3個備份服務器。
$ ./bin/local-master-backup.sh start 2 3 5
要在不殺死整個群集的情況下殺死備份主機,則需要查找其進程ID(PID)。PID存儲在一個名為/tmp/hbase-USER-X-master.pid的文件中。該文件的唯一內容是PID。您可以使用該kill -9命令來殺死該PID。以下命令將終止具有端口偏移1的主服務器,但保持群集正在運行:
$ cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
$ .bin/local-regionservers.sh start 2 3 4 5
要手動停止RegionServer,請使用帶有stop參數(shù)和服務器偏移量的local-regionservers.sh命令停止。
$ .bin/local-regionservers.sh stop 3
實際上,您需要一個完全分布式的配置來全面測試HBase,并將其用于實際場景中。在分布式配置中,集群包含多個節(jié)點,每個節(jié)點運行一個或多個HBase守護進程。這些包括主要和備份主實例,多個ZooKeeper節(jié)點和多個RegionServer節(jié)點。
此高級快速入門將兩個以上的節(jié)點添加到您的群集。架構如下:
節(jié)點名稱 | Master | ZooKeeper | RegionServer |
---|---|---|---|
node-a.example.com | 是 | 是 | 沒有 |
node-b.example.com | 備用 | 是 | 是 |
node-c.example.com | 沒有 | 是 | 是 |
這個快速入門假定每個節(jié)點都是虛擬機,并且它們都在同一個網(wǎng)絡上。它基于之前的快速入門、偽分布式本地安裝,假設您在該過程中配置的系統(tǒng)是現(xiàn)在node-a。繼續(xù)之前,在node-a停止HBase 。
提示:請確保所有節(jié)點都具有完全的通信訪問權限,并且沒有任何防火墻規(guī)則可以阻止它們相互交談。如果您看到任何錯誤,如no route to host
,請檢查您的防火墻。
node-a需要能夠登錄node-b和node-c(和自己)才能啟動守護進程。實現(xiàn)這一點的最簡單的方法是在所有主機上使用相同的用戶名,并配置無密碼的SSH登錄,從node-a到其他的。
$ ssh-keygen -t rsa
如果命令成功,密鑰對的位置將打印到標準輸出。公鑰的默認名稱是id_rsa.pub。
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
node-a將運行您的主要主服務器和ZooKeeper進程,但不運行RegionServers。從node-a停止啟動RegionServer。
<property>
<name>hbase.zookeeper.quorum</name>
<value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
node-b 將運行一個備份主服務器和一個ZooKeeper實例。
$ bin/start-hbase.sh
node-c.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-c.example.com.out
node-a.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-a.example.com.out
node-b.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-b.example.com.out
starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-node-a.example.com.out
node-c.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-c.example.com.out
node-b.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-b.example.com.out
node-b.example.com: starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-nodeb.example.com.out
ZooKeeper首先啟動,然后是master,然后是RegionServers,最后是backup masters。例子:node-a jps輸出:
$ jps
20355 Jps
20071 HQuorumPeer
20137 HMaster
示例:node-b jps輸出:$ jps
15930 HRegionServer
16194 Jps
15838 HQuorumPeer
16010 HMaster
例子:node-c jps輸出:$ jps
13901 Jps
13639 HQuorumPeer
13737 HRegionServer
ZooKeeper進程名稱這個HQuorumPeer過程是一個由HBase控制和啟動的ZooKeeper實例。如果以這種方式使用ZooKeeper,則每個群集節(jié)點僅限于一個實例,并且僅適用于測試。如果ZooKeeper在HBase之外運行,則調用該進程QuorumPeer。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: