1. 程式人生 > >Alex 的 Hadoop 菜鳥教程: 第6課 Hbase 安裝教程

Alex 的 Hadoop 菜鳥教程: 第6課 Hbase 安裝教程

原帖地址: 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-regionserver
service 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

服務的啟動順序

官方說服務的啟動順序是這樣的
  1. zookeeper
  2. hbase-master
  3. 各個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