hbase安裝
0. 簡介
HBase是一個分佈式的、面向列的開源數據庫,源於google的一篇論文《bigtable:一個結構化數據的分佈式存儲系統》。HBase是Google Bigtable的開源實現,它利用Hadoop HDFS做爲其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper做爲協同服務。
hbase安裝相對簡單,就是把其整合hadoop
1.解壓
tar -zxvf hbase-1.0.0-bin.tar.gz
sudo mv hbase-1.0.0 /opt/hbase
cd /opt
sudo chmod -R 775 hbase
sudo chown -R coco:coco: hbase
2.修改環境變量
sudo vim /opt/hbase/conf/hbase-env.sh
修改$JAVA_HOME爲jdk安裝目錄
3.修改hbase-site.xml
添加:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
4.啓動hbase
start-hbase.sh
5.進入hbase shell
hbase shell
6.查看進程
經過jps,應該會看到一共有9個進程,分別以下:
3616 NodeManager
3008 NameNode
6945 HQuorumPeer
7010 HMaster
3302 SecondaryNameNode
3128 DataNode
7128 HRegionServer
3496 ResourceManager
7209 Jps
進程號不必定是這些
若是在啓動後用list命令出現錯誤:ERROR: Can't get master address from ZooKeeper; znode data == null
請必定要記得hadoop的服務是否已經啓動了,因此必定要先啓動hadoop服務,才能啓動HBASE。
7. HBase shell的基本用法
hbase提供了一個shell的終端給用戶交互。經過執行 help get 能夠看到命令的幫助信息。
(1) 創建一個表格scores 具備兩個列族grad 和courese
hbase(main):001:0> create'scores','grade', 'course'
0 row(s) in 0.4780 seconds
(2) 查看當前HBase中具備哪些表
hbase(main):002:0> list
TABLE
scores
1 row(s) in 0.0270 seconds
(3) 查看錶的構造
hbase(main):004:0> describe'scores'
DESCRIPTION ENABLED
{NAME => 'scores', FAMILIES => [{NAME =>'course', BLOOMFILTER => 'NONE', REPLICATION_SCOPE =>'0', true
COMPRESSION => 'NONE', VERSIONS =>'3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'fal
se', BLOCKCACHE => 'true'}, {NAME => 'grade', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPR
ESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'false',
BLOCKCACHE => 'true'}]}
1 row(s) in 0.0390 seconds
(4) 加入一行數據,行名稱爲zkb 列族grad的列名爲」」 值位5
hbase(main):006:0> put'scores','zkb','grade:','5'
0 row(s) in 0.0420 seconds
(5) 給zkb這一行的數據的列族course添加一列<math,97>
hbase(main):007:0> put'scores','zkb','course:math','97'
0 row(s) in 0.0270 seconds
(6) 給zkb這一行的數據的列族course添加一列<art,87>
hbase(main):008:0> put'scores','zkb','course:art','87'
0 row(s) in 0.0260 seconds
(7) 加入一行數據,行名稱爲baoniu 列族grad的列名爲」」 值爲4
hbase(main):009:0> put'scores','baoniu','grade:','4'
0 row(s) in 0.0260 seconds
(8) 給baoniu這一行的數據的列族course添加一列<math,89>
hbase(main):010:0> put'scores','baoniu','course:math','89'
0 row(s) in 0.0270 seconds
(9) 給Jerry這一行的數據的列族course添加一列<art,80>
hbase(main):011:0> put'scores','baoniu','course:art','80'
0 row(s) in 0.0270 seconds
(10) 查看scores表中zkb的相關數據
hbase(main):012:0> get'scores','zkb'
COLUMN CELL
course:art timestamp=1316100110921, value=87
course:math timestamp=1316100025944, value=97
grade: timestamp=1316099975625, value=5
3 row(s) in 0.0480 seconds
(11) 查看scores表中全部數據
注意:scan命令能夠指定startrow,stoprow來scan多個row,例如:scan 'user_test',{COLUMNS =>'info:username',LIMIT =>10, STARTROW => 'test',STOPROW=>'test2'}
hbase(main):013:0> scan'scores'
ROW COLUMN+CELL
baoniu column=course:art, timestamp=1316100293784, value=80
baoniu column=course:math, timestamp=1316100234410, value=89
baoniu column=grade:, timestamp=1316100178609, value=4
zkb column=course:art, timestamp=1316100110921, value=87
zkb column=course:math, timestamp=1316100025944, value=97
zkb column=grade:, timestamp=1316099975625, value=5
2 row(s) in 0.0470 seconds
(12) 查看scores表中全部數據courses列族的全部數據
hbase(main):017:0> scan'scores',{COLUMNS => 'course'}
ROW COLUMN+CELL
baoniu column=course:art, timestamp=1316100293784, value=80
baoniu column=course:math, timestamp=1316100234410, value=89
zkb column=course:art, timestamp=1316100110921, value=87
zkb column=course:math, timestamp=1316100025944, value=97
2 row(s) in 0.0350 seconds
(13) 刪除scores表
hbase(main):024:0> disable'scores'
0 row(s) in 0.0330 seconds
hbase(main):025:0> drop'scores'
0 row(s) in 1.0840 seconds
總結下,hbase shell經常使用的操做命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,經過help能夠看到詳細的用法。
node