Alex 的 Hadoop 菜鳥教程: 第6課 Hbase 安裝教程
阿新 • • 發佈:2018-12-31
原帖地址: http://blog.csdn.net/nsrainbow/article/details/38515007
宣告:
- 本文基於Centos 6.x + CDH 5.x
- 官方英文安裝教程http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/cdh5ig_hbase_installation.html 。本文並不是簡單翻譯,而是再整理
- 因為之前說過了HA模式的部署,所以這邊不會說單機版的安裝,直接說分散式的安裝
- 有一個基本常識需要知道,hadoop的配置檔案基本上是所有機器都一樣的,所以如果有改到配置檔案方面基本都是要同步修改所有機器
介紹
Hbase是什麼
Hbase 是基於google那篇 bigtable的論文的一個開源的實現,基於hdfs來儲存表裡面的資料。是一個NoSQL資料庫。它是一個列式資料庫。啥叫列式資料庫呢?我們一般的資料庫裡面一行的資料就是存成一行,但是在hbase裡面如果你這行有5個列,那就是5個獨立的鍵值對,有可能都不是存在同一臺機器上,這5個鍵值對之間的關聯就是 rowkey,他們有共同的rowkey,除此之外他們之間麼有關聯,就像完全屬於不同的表一樣。Hbase的架構
- HMaster— HBase中僅有一個Master server。
- HRegionServer—負責多個HRegion使之能向client端提供服務,在HBase cluster中會存在多個HRegionServer。
安裝
配置最大檔案數
centos 最大檔案數
hbase 會開啟很多檔案,而centos的預設最大開啟數是不夠的,所以要調整 編輯 /etc/security/limits.conf file 增加下面兩行hdfs - nofile 32768
hbase - nofile 32768
hdfs最大檔案數
還要調整hdfs的最大檔案數。編輯 /etc/hadoop/conf/hdfs-site.xml 增加以下屬性 (所有機器)如果不增加這個容易出現以下錯誤<property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property>
10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node:
java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry...
記得改完後重啟hadoop的服務
安裝hbase
$ sudo yum install hbase -y
如果沒有yum源請參考 Alex 的 Hadoop 菜鳥教程: 第2課 hadoop 安裝教程 (CentOS6 CDH分支 yum方式)
用
rpm -ql hbase
檢驗安裝路徑,會發現安裝在 /usr/lib/hbase下
安裝hbase-master
這邊要說下hbase的 master 和 slave 概念。hbase 執行的時候有一個master 和多個 slave 。這邊的 hbase-master 從命名上也能看出就是master機。還是選擇在 host1 上安裝
yum install hbase-master -y
在 host1 和 host2 兩臺機子上都修改 /etc/hbase/conf/hbase-site.xml 在 <configuration> 和 </configuration> 之間增加以下2個屬性
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
這裡的mycluster 是我自己的叢集id,具體名稱看你在 hdfs-site.xml 裡面的 dfs.nameservices 屬性配的是什麼名字了。
在hdfs上建立 hbase 使用的資料夾
sudo -u hdfs hdfs dfs -mkdir /hbase
sudo -u hdfs hdfs dfs -chown hbase /hbase
啟動 hbase-master 。 hbase-master 是需要zookeeper的,所以確保你的zookeeper啟動了。
安裝 RegionServer
官方建議在所有的 datanode 機器上安裝 RegionServer 。所以在host1 和 host2 都安裝 RegionServer 。
yum install hbase-regionserver -y
安裝好後修改兩臺機器的配置檔案 /etc/hbase/conf/hbase-site.xml ,在 <configuration> 和 </configuration> 中增加以下屬性
<property>
<name>hbase.zookeeper.quorum</name>
<value>mymasternode</value>
</property>
這裡的 mymasternode 要替換成真實的地址。這個東西其實我們在 Alex 的 Hadoop 菜鳥教程: 第4課 Hadoop 安裝教程 - HA方式 (2臺伺服器) 中見過,在hdfs的HA配置中有一個屬性叫 ha.zookeeper.quorum 配置的是 zookeeper 叢集的地址,同理的,這邊也是配置了hbase 的 RegionServer 需要的 zookeeper 地址,所以在本例中我們配置成
<property>
<name>hbase.zookeeper.quorum</name>
<value>host1:2181,host2:2181</value>
</property>
啟動Hbase
先啟動hbase-master 再期待共 hbase-regionserverservice hbase-master start
service hbase-regionserver start
注意: 確保兩臺機器的hbase-site.xml的配置是一樣的,別某臺機器漏掉了某項配置就麻煩了安裝HBase Thrift Server
這個Thrift 是用來讓其他程式跟Hbase連線用的,你可以看做是有了Thrift 之後Hbase才開放了程式呼叫的API,你才可以用不同的語言來呼叫hbase。我們選擇hbase-master 所在的host1進行安裝 yum install hbase-thrift -y
啟動服務
service hbase-thrift start
服務的啟動順序
官方說服務的啟動順序是這樣的- zookeeper
- hbase-master
- 各個regionserver
檢驗
web介面
服務都啟動完畢後,訪問 http://host1:60010/ 會看到這樣的介面shell命令列工具
在 hbase-master 那臺機子上進入 hbase shell 並執行 list 查詢所有表試試看$ hbase shell
......
hbase(main):001:0> list
TABLE
0 row(s) in 15.1010 seconds
=> []
如果沒有報任何異常,輸出像這樣,那麼恭喜你成功了! 如果出現任何異常就去 /var/log/hbase/ 下面看日誌,這些日誌對你解決問題的幫助非常大,可以說是唯一的線索!
參考資料
- http://www.uml.org.cn/sjjm/201212141.asp