Mac下安裝HBase及詳解

原文:http://www.jianshu.com/p/510e1d599123html

 

本博客採用創做共用版權協議, 要求署名、非商業用途和保持一致. 轉載本博客文章必須也遵循署名-非商業用途-保持一致的創做共用協議.java

我的博客地址: http://andrewliu.tk, 歡迎持續關注和友聯.node

1. 千篇一概的HBase簡介


HBase是Hadoop的數據庫, 而Hive數據庫的管理工具, HBase具備分佈式, 可擴展及面向列存儲的特色(基於谷歌BigTable). HBase可使用本地文件系統和HDFS文件存儲系統, 存儲的是鬆散的數據(key-value的映射關係).sql

HBase位於HDFS的上層, 向下提供存儲, 向上提供運算shell

2. HBase安裝


HBase有單機, 僞分佈式, 全分佈式運行模式數據庫

依賴:apache

  • 匹配HBase的Hadoop版本
  • Java JDK 1.6+
  • SSH

安裝vim

$ brew install hbase # 安裝在/usr/local/Cellar/hbase/1.0.0

配置HBase服務器

conf/hbase-env.sh設置JAVA_HOME架構

$ cd /usr/local/Cellar/hbase/1.0.0/libexec/conf $ vim hbase-env.sh export JAVA_HOME="/usr/bin/java"

conf/hbase-site.xml設置HBase的核心配置

$ vim hbase-site.xml

<configuration> <property> <name>hbase.rootdir</name> //這裏設置讓HBase存儲文件的地方 <value>file:///Users/andrew_liu/Downloads/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> //這裏設置讓HBase存儲內建zookeeper文件的地方 <value>/Users/andrew_liu/Downloads/zookeeper</value> </property> </configuration>

/usr/local/Cellar/hbase/1.0.0/bin/start-hbase.sh提供HBase的啓動

$ ./start-hbase.sh starting master, logging to /usr/local/Cellar/hbase/1.0.0/libexec/bin/../logs/hbase-andrew_liu-master-Andrew-liudeMacBook-Pro.local.out

驗證是否安裝成功

$ jps

3440 Jps 3362 HMaster # 有HMaster則說明安裝成功 1885

啓動HBase Shell

$ ./bin/hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.0.0, r6c98bff7b719efdb16f71606f3b7d8229445eb81, Sat Feb 14 19:49:22 PST 2015 1.8.7-p357 :001 > 1.8.7-p357 :001 > exit #退出shell

中止HBase運行

$ ./bin/stop-hbase.sh
stopping hbase....................

3. 僞分佈式模式

必須關閉HBase

修改hbase-env.sh

HBASE_MANAGE_XK = true

修改hbase-site.xml, 設置HBase使用分佈式模式運行

<configuration> <property> <name>hbase.rootdir</name> //Here you have to set the path where you want HBase to store its files. <value>hdfs://localhost:8020/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>

hbase.rootdir路徑必定要跟hadoop中core-site.xml中fs.default.name相同

change the hbase.rootdir from the local filesystem to the address of your HDFS instance ---offical quick start

如何兩處設置不一樣會引發ERROR: Can't get master address from ZooKeeper; znode data == null錯誤錯誤

在啓動HBase以前, 請先啓動Hadoop, 使之運行

啓動HBase

$ ./start-hbase.sh
$ jps  #驗證是否啓動成功, 包含HMaster和HRegionServer說明啓動成功

6400 DataNode 7872 Jps 7702 HMaster 7624 HQuorumPeer 6315 NameNode 6508 SecondaryNameNode 6716 NodeManager 7804 HRegionServerHBase 6623 ResourceManager

若是在啓動HBase後, 提示以下

regionserver running as process 4667. Stop it first. #請執行如下操做 $ kill -9 4667 #這裏4667是要殺掉的進程號

啓動成功HBase會在HDFS下建立/hbase目錄

$ hdfs dfs -ls /hbase

4. HBase Shell


$ hbase shell #啓動HBase Shell #建立表 > create 'student', 'description', 'course' #建立表名爲student的表, 指明兩個列名, 分別爲description和course #信息明細 > list 'student' #列出list表信息 #插入數據 > put 'student', 'row1', 'description:age', '18' #意思爲在student表row1處插入description:age的數據爲18 > put 'student', 'row1', 'description:name', 'liu' put 'student', 'row1', 'course:chinese', '100' #一次掃描全部數據 > scan 'student #使表失效 / 有效 > disable 'student' > enable 'student' #刪除表(要先disable) > drop 'student' #退出shell > quit

5. HBase與HDFS


HBase是一個稀疏的長期存儲的, 多維度的, 排序的映射表, 經過行鍵, 行鍵 + 時間戳 或 行鍵 + 列(列族: 列修飾符)就能夠定位特殊的數據

5.1. HBase體系結構

HBase的服務器體系聽從簡單的主從服務器架構, 由HRegion服務器羣HBase服務器構成, Master服務器負責管理全部的HRegion服務器, 而HBase中全部的服務器經過ZooKeeper來進行協調並處理HBase服務器運行期間可能遇到的錯誤.

HBase邏輯上的表可能會被劃分爲多個HRegion, 而後存儲在HRegion服務器上.

  • HBase不涉及數據的直接刪除和更新, 當Store中的Storefile數量超出閾值會觸發合併操做
  • HMaster的主要任務是告訴每一個HRegion服務器它要維護那些HRegion
  • ZooKeeper存儲的是HBase中ROOT表和META表的位置, ZooKeeper還負責監控各個機器的狀態

元數據子表採用三級索引結構: 根子表->用戶表的元數據表->用戶表

5.2. Java API

  • HBaseConfiguration, 經過此類對HBase進行配置
  • HBaseAdmin, 提供一個接口來管理HBase數據庫的表信息, 提供建立, 刪除表, 列出表項, 使表有效或無效, 以及添加或刪除列族成員
  • HTableDescriptor, 包含了表的名字及對應表的列族
  • HColumnDescriptor, 維護關於列族的信息
  • HTable, 用來與HBase表進行通訊
  • Put, 用來對單個行執行添加操做
  • Get, 用來獲取單個行的相關信息
  • Result, 存儲Get或者Scan操做後獲取的表的單行值

6. 參考連接


做者:Andrew_liu 連接:http://www.jianshu.com/p/510e1d599123 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索