原文:http://www.jianshu.com/p/510e1d599123html
本博客採用創做共用版權協議, 要求署名、非商業用途和保持一致. 轉載本博客文章必須也遵循署名-非商業用途-保持一致的創做共用協議.java
我的博客地址: http://andrewliu.tk, 歡迎持續關注和友聯.node
HBase是Hadoop的數據庫, 而Hive數據庫的管理工具, HBase具備分佈式, 可擴展及面向列存儲
的特色(基於谷歌BigTable). HBase可使用本地文件系統和HDFS文件存儲系統, 存儲的是鬆散的數據(key-value的映射關係).sql
HBase位於HDFS的上層, 向下提供存儲, 向上提供運算shell
HBase有單機, 僞分佈式, 全分佈式運行模式數據庫
依賴:apache
安裝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....................
必須關閉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
$ 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
HBase是一個稀疏的長期存儲的, 多維度的, 排序的映射表, 經過行鍵, 行鍵 + 時間戳 或 行鍵 + 列(列族: 列修飾符)就能夠定位特殊的數據
HBase的服務器體系聽從簡單的主從服務器架構, 由HRegion服務器羣
和HBase服務器構成
, Master服務器負責管理全部的HRegion服務器, 而HBase中全部的服務器經過ZooKeeper來進行協調並處理HBase服務器運行期間可能遇到的錯誤.
HBase邏輯上的表可能會被劃分爲多個HRegion, 而後存儲在HRegion服務器上.
元數據子表採用三級索引結構: 根子表->用戶表的元數據表->用戶表
使表有效或無效
, 以及添加或刪除列族成員