1. 程式人生 > >Hbase學習01

Hbase學習01

本地 command p地址 演示 1.3 enable 保存文件 填充 man

1.1 快速介紹

1.1.1 快速入門,單節點Hbase

本小節介紹單節點獨立HBase的設置。 獨立實例包含所有HBase守護進程 - Master,RegionServers和ZooKeeper 在單個JVM中運行,並保存到本地文件系統。 這是我們最基本的部署配置文件。下面會介紹如何使用hbase shell CLI(Client的簡稱)在HBase中創建表,向表中插入行,對表執行放置和掃描操作,啟用osr禁用表以及啟動和停止HBase。

除了下載HBase之外,這個過程應該不到10分鐘。

在HBase 0.94.x之前,HBase預計環回IP地址為127.0.0.1。 Ubuntu和其他一些發行版默認為127.0.1.1,這會給你帶來問題。 請參閱HBase為什麽關心或需要/etc/hosts(https://web-beta.archive.org/web/20140104070155/http://blog.devving.com/why-does-hbase-care-about-etchosts)為細節

?

以下的/ etc / hosts文件對於HBase 0.94.x及更早版本在Ubuntu上正常工作。 如果遇到麻煩,請將其作為模板使用。在Linux-Centos中無影響。

127.0.0.1 localhost

127.0.0.1 ubuntu.ubuntu-domain ubuntu

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

1.1.2 JDK Version Requirements

Table. Java JDK With Hbase Requirements

HBase Version

JDK 7

JDK 8

2.0

Not Supported

yes

1.3

yes

yes

1.2

yes

yes

1.1

yes

Running with JDK 8 will work but is not well tested.

Warning:HBase will neither build nor compile with Java 6

1.2 Hbase 入門

Procedure: Download, Configure, and Start HBase in Standalone Mode

1.從Apache下載鏡像列表中選擇一個下載站點(https://www.apache.org/dyn/closer.cgi/hbase/)。 點擊建議的頂部鏈接。 這將帶你到HBase發布的鏡像。 單擊名為stable的文件夾,然後將以.tar.gz結尾的二進制文件下載到本地文件系統。 現在不要下載以src.tar.gz結尾的文件。

Extract the downloaded file, and change to the newly-created directory.

$ tar xzvf hbase-3.0.0-SNAPSHOT-bin.tar.gz

$ cd hbase-3.0.0-SNAPSHOT/

2.在啟動HBase之前,需要設置JAVA_HOME環境變量。 可以通過操作系統的常規機制來設置變量(將JDK加入系統環境變量),但HBase提供了一個中心機制conf/hbase-env.sh。 編輯此文件,取消註釋以JAVA_HOME開頭的行,並將其設置為適合您操作系統的位置。(可以指定特定位置JDK) 應將JAVA_HOME變量設置為包含可執行文件bin/java的目錄。大多數現代Linux操作系統提供了一種機制,例如RHEL或CentOS上的/usr/bin/alternatives,用於在諸如Java之類的可執行文件的版本之間進行透明切換。 在這種情況下,可以將JAVA_HOME設置為包含通常為/usr的bin/java的符號鏈接的目錄。

JAVA_HOME=/usr

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

Example 1. Example hbase-site.xml for Standalone HBase

我們不需要創建HBase數據目錄。HBase會為你做這個。如果你創建了這個目錄,HBase會試圖做一個遷移,這不是你想要的。

?

上例中的hbase.rootdir指向本地文件系統中的一個目錄。‘file:/‘前綴是我們如何表示本地文件系統。要在現有的HDFS實例上安裝HBase,請將hbase.rootdir設置為指向您實例上的目錄:例如,HDFS://namenode.example.org:8020/HBase的。有關此參數的更多信息,文檔後續會專門續寫有關HDFS上的獨立HBase的部分。

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

即HMaster,單個HRegionServer和ZooKeeper守護程序。轉到http://localhost:16010查看HBase Web UI。(此處使用Hbase自帶的zookeeper,無需關心。)

Java需要安裝並可用。 如果你得到一個錯誤,指出沒有安裝Java,但是

它在您的系統上,也許在非標準位置,編輯conf/hbase-env.sh文件並修改

JAVA_HOME設置指向您的系統上包含bin/java的目錄

1.3 Hbase Shell

1.Connect to HBase.

使用位於HBase安裝的bin/目錄中的hbase-shell命令連接到正在運行的HBase實例。在本例中,省略了啟動HBaseShell時打印的一些用法和版本信息。HBase-Shell提示符以>字符結尾。

$./bin/hbase shell hbase(main):001:0>

2. Display HBase Shell Help Text.

輸入help並按回車,顯示HBase Shell的一些基本用法信息,以及幾個示例命令。請註意,表名,行,列都必須用引號字符括起來

3. Create a table.

使用create命令創建一個新表。 您必須指定表名稱和ColumnFamily(列簇)名稱

hbase(main):001:0> create ‘test‘, ‘cf‘

0 row(s) in 0.4170 seconds

=> Hbase::Table - test

4. List Information About your Table Use the list command to

hbase(main):002:0> list ‘test‘ TABLE

test

1 row(s) in 0.0180 seconds

=> ["test"]

5. Put data into your table.

To put data into your table, use the put command.

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

在這裏,我們插入三個值,一次一個。 第一個插入位於第一行,列cf:a,值為value1。 HBase中的列由一個列族前綴組成,在本例中是cf,後跟一個冒號,然後是列限定符後綴,在這種情況下.

6. Scan the table for all data at once.

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

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

7. Get a single row of data.

要一次獲取單行數據,請使用get命令。

hbase(main):007:0> get ‘test‘, ‘row1‘

COLUMN CELL

cf:a timestamp=1421762485768, value=value1

1 row(s) in 0.0350 seconds

8. Disable a table.

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

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

Disable the table again if you tested the enable command above:

hbase(main):010:0> disable ‘test‘

0 row(s) in 1.1820 seconds

9. Drop the table.

要刪除(刪除)表,請使用drop命令.

hbase(main):011:0> drop ‘test‘

0 row(s) in 0.1370 seconds

10. Exit the HBase Shell.

要退出HBase Shell並從群集斷開連接,請使用quit命令。 否則HBase Shell仍然在後臺運行.

Procedure: Stop HBase

1. 和bin/start-hbase.sh腳本一樣,為了方便啟動所有的HBase守護進程,bin/stop-hbase.sh腳本停止它們。(這裏主要講解使用方法。啟停等集群命令忽略)

$ ./bin/stop-hbase.sh

stopping hbase....................

$

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

1.4 偽分布式安裝部署示例

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

Hadoop Configuration

此過程假定您已在本地系統和/或遠程系統上配置Hadoop和HDFS,

和他們正在運行和可用。它還假定您正在使用Hadoop 2.關於在Hadoop中設置單節點群集的指南(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html)文檔是一個很好的起點。.

1.如果HBase正在運行,請停止。

如果您剛完成快速入門並且HBase仍在運行,請停止它。此過程將創建一個全新的目錄,HBase將存儲其數據,因此您之前創建的任何數據庫都將丟失。

2.配置HBase。

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

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>


XML

接下來,使用hdfs:////將hbase.rootdir從本地文件系統更改為HDFS實例的地址

URI語法。在這個例子中,HDFS在端口8020的本地主機上運行。

<property>

<name>hbase.rootdir</name>

<value>hdfs://localhost:8020/hbase</value>

</property>

1.啟動HBase。

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

2.檢查HDFS中的HBase目錄。

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

$ ./bin/hadoop fs -ls / hbase找到7項

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.創建一個表並使用數據填充它。

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

4.啟動和停止備份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/1603啟動3個備份服務器,和16015/16025/16035。

$ ./bin/local-master-backup.sh 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

您不需要在HDFS中創建目錄。 HBase會為你做到這一點。如果您創建目錄,HBase將嘗試執行遷移,這不是您想要的。

1.啟動和停止其他RegionServer

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)。

$ .bin / local-regionservers.sh start 2 3 4 5

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

$ .bin / local-regionservers.sh停止3

2.停止HBase。

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

1.5 完全分布式安裝部署示例

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

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

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

這個快速入門假設每個節點都是虛擬機,並且它們都在同一個網絡中。 它建立在以前的快速入門“偽分布式本地安裝”上。

確保所有節點都具有完全的通信訪問權限,並且沒有適用的防火墻規則

過程:配置無密碼SSH訪問(示例並非正式生產環境部署模式與過程)

節點a需要能夠登錄到節點b和節點c(以及自己)以啟動守護程序。完成此操作的最簡單方法是在所有主機上使用相同的用戶名,並配置從節點a到其他每個用戶的無密碼SSH登錄。

1.在節點-a上,生成密鑰對。

以使用HBase的用戶身份登錄時,使用以下命令生成SSH密鑰對:

$ ssh-keygen -t rsa BASH

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

2.創建將保存其他節點上的共享密鑰的目錄。

在node-b和node-c上,以HBase用戶身份登錄並在用戶主目錄中創建一個.ssh /目錄(如果尚不存在)。如果它已經存在,請註意它可能已經包含其他鍵。

3.將公鑰復制到其他節點。

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

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

4.測試無密碼登錄。

如果您正確執行了此過程,則在從節點a到使用相同用戶名的其他節點之間進行SSH連接時,不應提示您輸入密碼。

5.由於節點-b將運行備份主節點,請重復上述過程,將節點-b替換為節點-a的任何位置。 請確保不要覆蓋現有的.ssh / authorized_keys文件,而是使用>>操作符而不是>運算符將新鍵連接到現有文件。

過程:準備節點-a

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

節點a。

1.編輯conf/regionservers並刪除包含localhost的行。添加具有節點b和節點c的主機名或IP地址的行。

即使您確實想在node-a上運行RegionServer,也應該使用其他服務器用來與其通信的主機名來引用它。在這種情況下,這將是node-a.example.com。這使您可以將配置分發給群集中的每個節點,但不會造成任何主機名沖突。保存文件。

2.將HBase配置為使用節點b作為備份主節點。

在conf/called backup-masters中創建一個新文件,並用node-b的主機名添加一個新行。在這個演示中,主機名是node-b.example.com。

3.配置ZooKeeper

實際上,你應該仔細考慮你的ZooKeeper配置。您可以在zookeeper部分找到更多關於配置ZooKeeper的信息。此配置將指示HBase在群集的每個節點上啟動和管理ZooKeeper實例。

在節點-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>

4.在配置中的任何地方,您已將node-a稱為localhost,請將引用更改為指向其他節點將用於引用節點a的主機名。在這些示例中,主機名是node- a.example.com。

過程:準備節點b和節點c

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

1.下載並解壓HBase。

就像您為獨立和偽分布式快速啟動一樣,將HBase下載並解壓到節點b。

2.將配置文件從節點a復制到節點b和節點c。

集群中的每個節點都需要具有相同的配置信息。將conf /目錄的內容復制到node-b和node-c上的conf /目錄。

過程:啟動並測試群集

1.確保HBase未在任何節點上運行。

如果您之前的測試忘記停止HBase,則會出現錯誤。使用jps命令檢查HBase是否在任何節點上運行。查找進程HMaster,HRegionServer和HQuorumPeer(Hbase自帶的zookeeper)。如果他們存在,殺死他們。

2.啟動群集。

在節點-a上,發出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首先啟動,然後是主控,然後是RegionServers,最後是備份主控。

3.確認進程正在運行。

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

Example 2. node-a jps Output

Example 3. node-b jps Output

Example 4. node-c jps Output

ZooKeeper進程名稱

HQuorumPeer進程是一個由HBase控制和啟動的ZooKeeper實例。 如果你使用

?ZooKeeper以這種方式,每個群集節點僅限於一個實例,並且僅適用於測試。

如果ZooKeeper在HBase之外運行,則該進程稱為QuorumPeer。 有關ZooKeeper配置的更多信息,包括在HBase中使用外部ZooKeeper實例,請參閱zookeeper部分。

4.瀏覽到Web UI。

Web UI端口更改Web UI端口更改

在比0.98.x更加新的HBase版本中,HBase Web UI使用的HTTP端口從主服務器的60010和每個RegionServer的60030更改為主服務器的16010和RegionServer的16030。

如果所有設置都正確,則應該能夠連接到主http:// node- a.example.com:16010/的UI或http://node-b.example.com上的輔助主設備: 16010 /使用網絡瀏覽器。 如果可以通過本地主機連接,但不能從另一臺主機連接,請檢查防火墻規則。 您可以在端口16030的IP地址中查看每個RegionServers的Web UI,也可以單擊主頁的Web UI中的鏈接。

5.測試節點或服務消失時會發生什麽。

使用您配置的三節點群集,事情不會很有彈性。 您仍然可以通過關閉進程並查看日誌來測試主要主服務器或RegionServer的行為。

Hbase學習01