Apache HBase 入門
介紹
Quickstart 將使您運行一個單節(jié)點,獨立的 HBase 實例。
這一節(jié)描述了單節(jié)點獨立 HBase 的設(shè)置。 獨立的 實例具有所有的 HBase 守護進程 —— Master,RegionServers,和 ZooKeeper —— 運行于一個單獨的JVM 持久化到本地文件系統(tǒng)。它是我們的大多數(shù)基本部署配置文件。我們將向你展示如何使用 hbase shell CLI 在 HBase 中創(chuàng)建一個表,向表中插入行,對表執(zhí)行 put 和 scan 操作,啟用或禁用表,以及啟動和停止 HBase。
除了下載 HBase,這個過程應(yīng)該耗費不超過 10 分鐘。
在 0.94.x 之前,HBase 期望環(huán)回 IP 地址是 127.0.0.1 。Ubuntu 和 其它一些發(fā)行版默認(rèn)為 127.0.1.1 ,而這將導(dǎo)致一些問題。參考 HBase 為什么關(guān)心 /etc/hosts ? 一文來了解更多信息。
在 Ubuntu 上,對于 0.94.x 和之前的版本,下面的 /etc/hosts 可以工作。如果遇到了問題,可以使用這個作為模板。
- 127.0.0.1 localhost
- 127.0.0.1 ubuntu.ubuntu-domain ubuntu
這個問題已經(jīng)在 hbase-0.96.0 及之后的版本中修復(fù)了。
JDK 版本要求
HBase 要求安裝 JDK。參考 Java 來了解關(guān)于支持的 JDK 版本的信息。
HBase 入門
過程:下載,配置,以獨立模式啟動 HBase
1.在 Apache下載鏡像 的列表中選擇一個下載站點。點擊頂部的建議鏈接。這將帶你到一個 HBase Release 鏡像。點擊名為 stable 的目錄,然后下載以 .tar.gz 結(jié)尾的二進制文件到你的本地文件系統(tǒng)。目前先不要下載以 src.tar.gz 結(jié)尾的文件。
2.解壓縮下載的文件,然后進入新創(chuàng)鍵的文件夾。
- $ tar xzvf hbase-1.2.4-bin.tar.gz
- $ cd hbase-1.2.4
3.你需要在啟動 HBase 之前設(shè)置 JAVA_HOME 環(huán)境變量。你可以通過你的操作系統(tǒng)的常用機制設(shè)置環(huán)境變量,但是 HBase 提供了一個中心機制, conf/hbase-env.sh 。編輯這個文件,取消注釋以 JAVA_HOME 開頭的行,并將它設(shè)置為你的操作系統(tǒng)的適當(dāng)位置。 JAVA_HOME 環(huán)境變量應(yīng)該被設(shè)置為包含可執(zhí)行文件 bin/java 的文件夾。大多數(shù)現(xiàn)代 Linux 操作系統(tǒng)提供了某種機制,比如 RHEL 或 CentOS 上的 /usr/bin/alternatives ,來透明地在 Java 這樣的可執(zhí)行文件的不同版本間進行切換。在這種情況下,你可以將 JAVA_HOME 設(shè)置為包含到 bin/java 的符號鏈接的目錄,通常是 /usr 。
- JAVA_HOME=/usr
編輯 conf/hbase-site.xml ,它是主 HBase 配置文件。此時,你只需要指定本地文件系統(tǒng)中 HBase 和 ZooKeeper 寫數(shù)據(jù)的文件夾。默認(rèn)情況下,將在 /tmp 下創(chuàng)建一個新的文件夾。許多服務(wù)器被配置為在重啟之后刪除 tmp 下的內(nèi)容,因而你應(yīng)該將數(shù)據(jù)存儲在其它地方。下面的配置將把 HBase 的數(shù)據(jù)存儲在 hbase 目錄下,在名為 testuser 的用戶的主目錄下。粘貼 <configuration> 標(biāo)簽下的 <property> 標(biāo)簽,在新的 HBase 安裝中它應(yīng)該是空的。
示例1. 獨立 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 將為你做這些。如果你創(chuàng)建了目錄,HBase 將嘗試執(zhí)行遷移,這不是你想要的。
上面例子中的 hbase.rootdir 指向 本地文件系統(tǒng) 中的目錄。’file:/‘ 前綴是我們?nèi)绾伪硎颈镜匚募到y(tǒng)的方式。要將 HBase 放置于已有 HDFS 實例上,則設(shè)置 hbase.rootdir 指向你的實例上的目錄:比如, hdfs://namenode.example.org:8020/hbase 。更多關(guān)于這一變體的信息,參考下面關(guān)于 基于 HDFS 的獨立 HBase 的小節(jié)。
1.HBase 提供了一種方便的方式,即 bin/start-hbase.sh 腳本來啟動HBase。發(fā)出命令,如果一切正常,將有一條消息打印到標(biāo)準(zhǔn)輸出顯示 HBase 啟動成功。你可以使用 jps 命令來驗證你有一個稱為 HMaster 的運行進程。在獨立模式 HBase 在這個單獨的 JVM 內(nèi)運行所有的守護進程,比如,HMaster,一個單獨的 HRegionServer,和 ZooKeeper 守護進程。進入 http://localhost:16010 來查看 HBase Web UI。
- $ bin/start-hbase.sh
- starting master, logging to /media/data/dev_tools/hbase-1.2.4/bin/../logs/hbase-hanpfei0306-master-ThundeRobot.out
- OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
- OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
- Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum.
需要安裝 Java 且其處于可用狀態(tài)。如果你遇到了一個錯誤,指示 Java 沒有安裝,但它已經(jīng)在你的系統(tǒng)中了,則可能位于非標(biāo)準(zhǔn)位置,編輯 conf/hbase-env.sh 文件并修改 JAVA_HOME 設(shè)置,使其指向包含了你的系統(tǒng)的 bin/java 的目錄。
過程:首次使用 HBase
1.連接 HBase
使用 hbase shell 命令連接運行中的 HBase 實例,它位于你的 HBase 安裝的 bin/ 目錄下。在本示例中,省略了一些啟動 HBase Shell 時打印的用法和版本信息。HBase Shell 提示以一個 > 字符結(jié)尾。
- $ bin/hbase shell
- hbase(main):001:0>
2.顯示 HBase Shell 幫助文本
鍵入 help 并按回車,來顯示一些 HBase Shell 基本的用法信息,以及一些命令示例。注意所有的表名,行,列必須用單引號字符引起來。
3.創(chuàng)建表
使用 create 命令創(chuàng)建一個新表。你必須指定表名和 ColumnFamily 名。
- hbase(main):002:0> create 'test', 'cf'
- 0 row(s) in 1.3540 seconds
- => Hbase::Table - test
列出關(guān)于表的信息
使用 list 命令來做到這一點:
- => Hbase::Table - test
- hbase(main):003:0> list
- TABLE
- test
- 1 row(s) in 0.0150 seconds
- => ["test"]
1.向表中放入數(shù)據(jù)
要向表中放入數(shù)據(jù),使用 put 命令。
- hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
- 0 row(s) in 0.0990 seconds
- hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
- 0 row(s) in 0.0080 seconds
- hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
- 0 row(s) in 0.0050 seconds
這里,我們插入了三個值,每次一個。第一次插入在 row1 ,列 cf:a ,值為 value1 。HBase中的列由列族前綴,本示例中是 cf ,后跟一個逗號,及列限定符后綴,本示例中是 a 組成。
1.一次掃描表的所有數(shù)據(jù)
從 HBase 獲取數(shù)據(jù)的一種方式是掃描。使用 scan 命令掃描表的數(shù)據(jù)。你可以限定你的掃描,但現(xiàn)在,獲取所有數(shù)據(jù)。
- hbase(main):008:0> scan 'test'
- ROW COLUMN+CELL
- row1 column=cf:a, timestamp=1488785612445, value=value1
- row2 column=cf:b, timestamp=1488785622781, value=value2
- row3 column=cf:c, timestamp=1488785633890, value=value3
- 3 row(s) in 0.0220 seconds
1.獲得單行數(shù)據(jù)
要一次獲得單行數(shù)據(jù),使用 get 命令。
- hbase(main):009:0> get 'test', 'row1'
- COLUMN CELL
- cf:a timestamp=1488785612445, value=value1
- 1 row(s) in 0.0160 seconds
1.禁用表
如果你想要刪除表或修改它的設(shè)置,以及一些其它情形,你需要先禁用表,使用 disable 命令。你可以使用 enable 命令重新啟用它。
- hbase(main):010:0> disable 'test'
- 0 row(s) in 2.2380 seconds
- hbase(main):011:0> enable 'test'
- 0 row(s) in 1.2260 seconds
如果你測試上面的 enable 命令則再次禁用表:
- hbase(main):012:0> disable 'test'
- 0 row(s) in 2.2200 seconds
1.丟棄表
要丟棄(刪除)表,則使用 drop 命令。
- hbase(main):013:0> drop 'test'
- 0 row(s) in 1.2280 seconds
1.退出 HBase Shell
要退出 HBase Shell 并從你的集群斷開,使用 quit 命令。HBase 依然在后臺運行。
過程:停止 HBase
1.與提供 bin/start-hbase.sh 腳本來方便地啟動 所有 HBase 守護進程的方式相同, bin/stop-hbase.sh 腳本用來停止它們。
- $ ./bin/stop-hbase.sh
- stopping hbase................
- $
1.發(fā)起了這個命令之后,它可能花費幾分鐘來執(zhí)行關(guān)閉。使用 jps 來確保 HMaster 和 HRegionServer 進程的關(guān)閉。
上文已經(jīng)向你展示了如何啟動和停止一個獨立的 HBase 實例。下一節(jié)我們給出 hbase 部署的其它模式的快速概述。
偽分布式本地安裝
在學(xué)習(xí)了快速啟動獨立模式的工作后,你可以重新配置 HBase 以偽分布式模式運行。偽分布式模式意味著 HBase 依然完全運行于單獨的主機上,但每個 HBase 守護進程(HMaster,HRegionServer,和 ZooKeeper )運行于分開的進程中:在獨立模式下所有的守護進程運行于一個 jvm 進程/實例中。默認(rèn)情況下,除非像 快速開始 一節(jié)所述那樣配置了 hbase.rootdir 屬性,你的數(shù)據(jù)依然存儲于 /tmp 下面。在本文的稍后部分,我們將把你的數(shù)據(jù)存儲于 HDFS 上,假設(shè)你有 HDFS 可用。你可以跳過 HDFS 配置來繼續(xù)將數(shù)據(jù)存儲在本地文件系統(tǒng)。
Hadoop配置
這個過程假設(shè)你已經(jīng)在你的本地系統(tǒng)和/或遠(yuǎn)程系統(tǒng)中,配置好了 Hadoop 和 HDFS,它們正在運行且可訪問。它還假設(shè)你在使用 Hadoop 2.Hadoop 文檔中關(guān)于 設(shè)置單節(jié)點集群 的指南是一個很好的起點。
1.如果正在運行的話就停止 HBase
如果你已經(jīng)學(xué)完了 快速開始 且 HBase 依然處于運行狀態(tài),則停止它。本過程將創(chuàng)建一個全新的 HBase 存儲數(shù)據(jù)目錄,因此你之前創(chuàng)建的任何數(shù)據(jù)庫都會丟失。
2.配置 HBase
編輯 hbase-site.xml 配置。首先,添加下面的屬性,它指導(dǎo) HBase 運行于分布式模式,每個守護進程一個 JVM 實例。
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
接下來,將 hbase.rootdir 從本地文件系統(tǒng)修改為你的 HDFS 實例,使用 hdfs://// URI 語法。在本例中,HDFS 運行于 localhost 的端口 8020。
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://localhost:8020/hbase</value>
- </property>
你無需在 HDFS 下創(chuàng)建目錄。HBase 將為你做這些。如果你創(chuàng)建了目錄,HBase 將嘗試執(zhí)行遷移,這不是你想要的。
1.啟動 HBase
使用 bin/start-hbase.sh 命令啟動 HBase。如果你的系統(tǒng)配置正確,則 jps 命令應(yīng)該顯示 HMaster 和 HRegionServer 進程正在運行。
2.檢查 HDFS 中的 HBase 目錄
如果一切進展順利,HBase 已經(jīng)在 HDFS 中創(chuàng)建了它的目錄。在上面的配置中,它被存儲在了 HDFS 上的 /hbase/ 。你可以使用 Hadoop 的 bin/ 目錄下的 hadoop fs 命令列出這個目錄。
- $ ./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
3.創(chuàng)建表并用數(shù)據(jù)填充
你可以使用 HBase Shell 創(chuàng)建表,填充數(shù)據(jù),掃描并從中獲取值,使用與 shell 練習(xí)中相同的過程。
4.啟動和停止備份 HBase Master(HMaster)服務(wù)器
在生產(chǎn)環(huán)境中,在相同的硬件上運行多個 HMaster 實例沒有意義,以運行偽分布式集群那樣的方式對于生產(chǎn)環(huán)境同樣沒有意義。這個步驟只是為了測試和學(xué)習(xí)目的而提供。
HMaster 服務(wù)器控制 HBase 集群。你可以啟動最多 9 個備份 HMaster 服務(wù)器,這將有總共 10 個 HMaster,算上主要的那個。要啟動一個備份 HMaster,使用 local-master-backup.sh 。對于每個你想要啟動的備份master,添加一個參數(shù)來表示那個 master 的端口偏移。每個 HMaster 使用三個端口(默認(rèn)是16010,16020,16030)。端口偏移會加到這些端口上,因此,使用 2 作為偏移量的話,備份 HMaster 將使用 16012,16022, 和16032。下面的命令啟動 3 個備份服務(wù)器,使用端口 16012/16022/16032,16013/16023/16033,和 16015/16025/16035。
- $ ./bin/local-master-backup.sh 2 3 5
要殺死備份 master,而不殺死整個集群,你需要找到它的進程 ID(PID)。PID 存儲在一個名字類似于 /tmp/hbase-USER-X-master.pid 的文件中。文件僅有的內(nèi)容是 PID。你可以使用 kill -9 命令來殺死那個 PID。下面的命令將殺死端口偏移為 1 的 master,但集群依然在運行:
- $ cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
1.啟動和停止額外的 RegionServers
HRegionServer 按照 HMaster 的指示管理在它的 StoreFiles 中的數(shù)據(jù)。通常,集群中的每個節(jié)點運行一個 HRegionServer 。在相同的系統(tǒng)上運行多個 HRegionServers 可能對于在偽分布式模式中的測試比較有用。 local-regionservers.sh 命令允許你運行多個 RegionServers 。它與 local-master-backup.sh
命令的工作方式類似,在那種情況下你提供的每個參數(shù)表示一個實例的端口偏移。每個 RegionServer 需要兩個端口,默認(rèn)端口是 16020 和 16030。然而,額外的 RegionServers 的基端口不是默認(rèn)端口,因為默認(rèn)端口已經(jīng)被 HMaster 占用了,自 HBaser 版本 1.0.0 開始,它也是一個 RegionServer。使用端口 16200 和 16300 來代替。你可以在一個服務(wù)器上運行 99 個額外的非 HMaster 或 備份 HMaster 的 RegionServers。下面的命令啟動四個額外 RegionServers,運行在從16202/16302開始的順序端口(基本端口16200/16300加2)。
- $ .bin/local-regionservers.sh start 2 3 4 5
要手動地停止一個 RegionServer,使用 local-regionservers.sh 命令并傳入 stop 參數(shù)和要停止的服務(wù)器的偏移。
- $ .bin/local-regionservers.sh stop 3
1.停止 HBase
捏可以使用與 快速開始 中介紹的相同的方法停止 HBase,使用 bin/stop-hbase.sh 命令。
高級 - 完全分布式
事實上,你需要一個完全分布式的配置來完整測試 HBase 并在真實世界的場景中使用它。在一個分布式的配置中,集群包含多個節(jié)點,它們中的每個都運行一個或多個 HBase 守護進程。這些包括主和備份 Master 實例,多個 ZooKeeper 節(jié)點,和多個 RegionServer 節(jié)點。
這個高級的 快速開始 為你的集群添加兩個額外的節(jié)點。架構(gòu)將像下面這樣:
表 1. 分布式集群 Demo 架構(gòu)
Node Name | Master | ZooKeeper | RegionServer |
---|---|---|---|
node-a.example.com | yes | yes | no |
node-b.example.com | backup | yes | yes |
node-c.example.com | no | yes | yes |
這個 快速開始 假設(shè)每個節(jié)點是一個虛擬機,且它們都在相同的網(wǎng)絡(luò)上。它基于前面的 快速開始 構(gòu)建, 偽分布式本地安裝 ,假設(shè)在那個過程里你配置的系統(tǒng)現(xiàn)在是 node -a 。在繼續(xù)之前停止 node-a 上的 HBase。
確保所有的節(jié)點具有完整的通信權(quán)限,且沒有防火墻規(guī)則可能阻止它們之間相互對話。如果你看到了類似 no route to host 的錯誤提示,則檢查你的防火墻。
過程:配置無密碼 SSH 訪問
node-a 需要能夠登入 node-b 和 node-c (以及其自身) 來啟動守護進程。完成這一點最簡單的方式是在所有主機上使用相同的用戶名,并配置從 node-a 無密碼 SSH 登錄到其它主機。
在 node-a 上生成一個密鑰對
當(dāng)以運行 HBase 的用戶登錄時,生成一個 SSH 密鑰對,使用如下的命令:
- $ ssh-keygen -t rsa
如果命令成功,則密鑰對的位置將打印到標(biāo)準(zhǔn)輸出。默認(rèn)的公鑰名字是 id_rsa.pub 。
在其它節(jié)點上創(chuàng)建放置共享密鑰的目錄。
在 node-b 和 node-c 上,以 HBase 用戶登錄,并在用戶的主目錄創(chuàng)建一個 .ssh/ 目錄,如果它還沒有存在的話。如果它已經(jīng)存在了,請注意它可能已經(jīng)包含了其它密鑰。
1.將公鑰拷貝到其它節(jié)點。
安全地將公鑰從 node-a 拷貝到每個其它節(jié)點,通過使用 scp 或其它安全的方式。在其它的每個節(jié)點上,創(chuàng)建一個新的名為 .ssh/authorized_keys 的文件,如果它還沒有存在的話,并將id_rsa.pub 文件的內(nèi)容添加到它的末尾。注意你也需要對 node-a 自身做這些。
- $ cat id_rsa.pub >>~/.ssh/authorized_keys
2.測試無密碼登錄。
如果你正確地執(zhí)行了過程,如果你從 node-a SSH 到其它的節(jié)點,使用相同的用戶名,那么你應(yīng)該不會再看到輸入密碼的提示符了。
由于 node-b 將運行一個備份 Master,重復(fù)上面的過程,將你看到的 node-a 的地方替換為 node-b 。確保不要重寫了已有的 .ssh/authorized_keys 文件,使用 >> 操作符將新的密鑰附接在已有文件,而不是 > 操作符。
過程:準(zhǔn)備 node-a
node-a 將運行你的主 master 和 ZooKeeper 進程,但沒有 RegionServers。停止在 node-a 上啟動 RegionServer。
1.編輯 conf/regionservers 并移除包含 localhost 的行。添加包含 node-b 和 node-c 的主機名和 IP 地址的行。
即使你不想在 node-a 上運行 RegionServer,你應(yīng)該通過其它服務(wù)器將用以與它通信的主機名引用它。在這個例子中,那將是 node-a.example.com 。這使您能夠?qū)⑴渲梅职l(fā)到集群的每個節(jié)點,任何主機名沖突。保存文件。
1.配置 HBase 使用 node-b 作為備份 master。
創(chuàng)建一個新的文件 conf/ called backup-masters ,添加新的包含 node-b 的主機名的行。在這個示例中,主機名是 node-b.example.com 。
1.配置 ZooKeeper
事實上,你應(yīng)該小心地考慮你的 ZooKeeper 配置。你可以在 zookeeper 中找到更多關(guān)于配置 ZooKeeper 的東西。這個配置將指導(dǎo) HBase 在集群的每個節(jié)點上啟動并管理一個 ZooKeeper 實例。
在 node-a 上,編輯 conf/hbase-site.xml 并添加如下的屬性。
- <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>
1.你的配置中其它用 localhost 引用 node-a 的地方,修改引用指向其它節(jié)點將用以引用 node-a 的主機名。在這些例子中,主機名是 node-a.example.com 。
過程:準(zhǔn)備 node-b 和 node-c
node-b 將運行一個備份 master 服務(wù)器和一個 ZooKeeper 實例。
1.下載并解壓縮 HBase。
下載并解壓縮 HBase 到 node-b ,就像你在 獨立和偽分布式快速開始中做的那樣。
1.將配置文件從 node-a 復(fù)制到 node-b 和 node-c 。
你的集群的每個節(jié)點需要具有相同的配置信息。復(fù)制 conf/ 目錄的內(nèi)容到 node-b 和 node-c 上的 conf/ 目錄。
過程:啟動并測試你的集群
1.確保 HBase 沒有在任何節(jié)點上運行。
如果你忘了在前面的測試中停止 HBase,你將遇到錯誤。使用 jps 命令檢查 HBase 是否在你的任何節(jié)點上運行。查找進程 HMaster,HRegionServer,和 HQuorumPeer。如果它們存在則殺掉它們。
1.啟動集群。
在 node-a 上,發(fā)出 start-hbase.sh 命令。你的輸出將類似下面這樣。
- $ 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,最后是備份 masters。
1.驗證進程正在運行。
在集群的每個節(jié)點上,運行 jps 命令并驗證正確的進程正在每個服務(wù)器上運行。你也可能看到其它的 Java 進程正在你的服務(wù)器上運行,如果它們用于其它目的。
實例 2. node-a jps 輸出
- $ jps
- 20355 Jps
- 20071 HQuorumPeer
- 20137 HMaster
實例 3. node-b jps 輸出
- $ jps
- 15930 HRegionServer
- 16194 Jps
- 15838 HQuorumPeer
- 16010 HMaster
實例 4. node-a jps 輸出
- $ jps
- 13901 Jps
- 13639 HQuorumPeer
- 13737 HRegionServer
ZooKeeper 進程名
HQuorumPeer 進程是由 HBase 控制及啟動的 ZooKeeper 實例。如果你以這種方式使用 ZooKeeper,則每個集群節(jié)點限制只有一個實例,且只有測試時才合適。如果 ZooKeeper 不在 HBase 下運行,則進程名稱為 HQuorumPeer 。更多關(guān)于 ZooKeeper 配置的內(nèi)容,包括在 HBase 下使用一個外部的 ZooKeeper 實例,請參考 zookeeper 。
1.瀏覽 Web UI。
Web UI 端口改變
Web UI 端口改變
在版本新于 0.98.x 的 HBase 中,HBase Web UI 使用的 HTTP 端口從 Master 采用60010,每個 RegionServer 采用 60030 變?yōu)榱?Master 采用 16010 且 RegionServer 采用 16030。
如果所有的東西都設(shè)置正確,你應(yīng)該能夠連接到 Master 的 UI http://node-a.example.com:16010/ 或從 master 的 http://node-b.example.com:16010/,使用瀏覽器。如果你能夠通過 localhost 連接,但無法通過其它主機名,則檢查你的防火墻規(guī)則。你可以在它們的 IP 地址的端口上 16030 看到每個 RegionServers 的 web UI,或點擊 Master 的 web UI 中它們的鏈接。
當(dāng)節(jié)點或服務(wù)消失時測試發(fā)生了什么。
具有三個節(jié)點的集群,就像你配置的那樣,不是非常有彈性的。當(dāng)主 Master 或 RegionServer 消失時,你依然可以通過殺掉進程或看 logs,測試發(fā)生了什么。