1. 程式人生 > >HBase資料庫安裝之shell命令詳解

HBase資料庫安裝之shell命令詳解

關係型資料庫
RDBMS:具有“表”模型結構,表與表之間存在著關係
事物:一致性
  隔離性
  原子性
  永續性

MySQL
開源:免費
支援標準SQL語句
資料量:10W

Oarcle:
收費
資料量:海量

SqlServer
微軟,收費
提供一個圖形介面的管理平臺

特點:都支援結構化查詢語言

非關係型資料庫
HBase、MongoDB、NoSQL
1、不使用SQL語句
2、使用高效
使用情況:資料量特別大的時候,
論行計算:上億行,上百億行
論資料單位記:上TB級別

缺點:
1.無事物性



二、基本的HBase概念
比較HBase與關係型資料庫
資料型別
HBase只有字串型別
資料操作
HBase沒有修改操作,表和表之間相互分離
儲存模式
HBase基於列儲存,關係型資料庫基於行儲存
資料維護
HBase的更新實際是插入新的資料
可伸縮性
HBase很容易靠增加硬體滿足系統需要

基本術語
表:不儲存NULL值的稀疏表
行鍵:行的主鍵,標識一行資料
列族:表的資料列,在建立表時必須被定義
列鍵:唯一標識列族中的一個成員,格式為<family>:<qualifier>其中qualifier可取空值
儲存單元格:儲存列鍵值的單元
時間戳:插入單元格時的時間,預設作為單元格的版本號



列族:
Hbase表中的每個列,都歸屬於某個列族
列族是表的一部分(而列不是),列族必須在使用之前定義
列名都以列族作為字首。
如courses:english,    courses:math
都屬於courses這個列族





hbase官網:
hbase.apache.org

三、Zookeeper分散式協作框架
1、源自於Google三大論文之一的BigTable協作框架
2、官網:http://zookeeper.apache.org/
3、同步服務(同步叢集),輔助功能
4、zookeeper-》Java語言編寫的框架-》提供JavaAPI

5、安裝配置
5.1:上傳下載好的壓縮包

5.2:解壓壓縮包到指定位置
tar -zxvf zookeeper-3.4.6.tar.gz -C /opt/modules/

5.3:配置zoo.cfg檔案
-->切換到zookeeper的家目錄下的配置檔案目錄中
/opt/modules/zookeeper-3.4.6/conf

--》重新命名配置檔案
mv zoo_sample.cfg zoo.cfg

5.4:編輯檔案zoo.cfg
--》在zookeeper家目錄下建立一個目錄,用來儲存zookeeper的資料
mkdir mydata
--》修改第12行dataDir
dataDir=/opt/modules/zookeeper-3.4.6/mydata

5.5:啟動測試
--》啟動順序:先啟動HDFS 再啟動zookeeper
bin/zkServer.sh start
--》啟動後的節點名稱
16795 QuorumPeerMain

--》檢視zookeeper執行狀態
bin/zkServer.sh status

5.6:關閉節點
--》bin/zkServer.sh stop



四、HBase配置
1.上傳

2.解壓到指定位置
tar -zxf hbase-1.0.2-bin.tar.gz -C /opt/modules/

3.配置conf/hbase-env.sh
--》第27行去掉註釋,寫入JDK安裝路徑
export JAVA_HOME=/opt/modules/jdk1.7.0_67
--》124行 去掉註釋,將true修改為false 。 不使用hbase自帶zookeeper。
export HBASE_MANAGES_ZK=false



4.配置conf/hbase-site.xml
--》指定NameNode所在機器,以及互動埠號
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://bdqn.com.cn:8020/hbase</value>
  </property>
--》是否是分散式的
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
--》指定zookeeper節點所在位置
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>bdqn.com.cn</value>
  </property>

5.配置conf/regionservers
--》指定從節點所在機器位置
bdqn.com.cn

6.啟動hbase--》全部啟動命令
bin/start-hbase.sh 
注意:此命令啟動會有問題,我們通過檢視log日誌發現,
HRegionServer節點和主節點HMaster 共同佔用同一個埠號

--》所以啟動方式改為單獨啟動方式:
bin/hbase-daemon.sh start master
bin/local-regionservers.sh start 1

--》全部關閉方式:
bin/stop-hbase.sh 

--》單獨關閉方式:
bin/hbase-daemon.sh stop master
bin/hbase-daemon.sh stop regionserver

通過web頁面訪問HMaster節點
bdqn.com.cn:16010

7.進入hbase shell 命令列
bin/hbase shell

8.簡單操作
list 列舉有哪些表
create '表名','列族……'   建立表
退格需要按住ctrl鍵
退出使用: exit



五、HBase shell 命令
建立表:
create '表名稱','列族名稱1','列名族稱2'
create 'scores','grade','course'

檢視所有表:list

刪除表
disable '表名'
drop '表名'
注意:刪除表必須先讓表置為不可用狀態,然後才能刪除
示例:
disable 'scores'
drop 'scores'

檢視指定表的列族詳細資訊:describe
describe '表名'
describe 'scores'

列族引數
NAME:列族名稱
VERSIONS:最大版本數量
MIN_VERSIONS:最小版本數量
BLOCKSIZE:資料塊大小
……
完整建立表的語法:
create 'scores01',{NAME=>'grade',VERSIONS=>5},{NAME=>'course',VERSIONS=>5}

新增資料:put
put '表名','行健','列族:列鍵','值'
put 'scores','tom','grade:','1'
put 'scores','tom','course:art','80'
put 'scores','tom','course:math','89'
put 'scores','jack','grade:','2'
put 'scores','jack','course:art','87'
put 'scores','jack','course:math','57'

scan 掃描全表
scan '表名稱',{COLUMNS=>['列族名1','列族名2',……],引數名=>引數值…}

示例:
scan 'scores' 
scan 'scores',{COLUMNS=>'course'} 
--》簡寫 scan 'scores','course'
scan 'scores',{COLUMN=>'course:math',LIMIT=>1}

LIMIT:顯示幾條資料

獲取資料:get
獲取行的所有單元或者某個指定的單元
get '表名稱','行鍵',{COLUMN=>['列鍵1','列鍵2'…],引數名=>引數值…}
get 'scores','jack' 
get 'scores','jack',{COLUMNS=>'course'}
get 'scores','jack',{COLUMN=>'course:math'}
--》簡寫
get 'scores','jack','course:math','grade:'

刪除資料
delete:刪除一個單元
deleteall:刪除一行
語法:
delete '表名稱','行鍵','列鍵'
deleteall '表名稱','行鍵'
--》刪除tom的數學成績
delete 'scores','tom','course:math'

--》刪除tom所有的資訊
deleteall 'scores','tom'

修改表:alter
增加或修改表的列族,列族名存在則修改否則增加

語法:
alter '表名稱',引數名=>引數值,...
alter '表名稱',{引數名=>引數值,...}, {引數名=>引數值,...}…
示例:alter 'scores',NAME=>'course',VERSIONS=>'5'
alter 'scores',{NAME=>'grade',VERSIONS=>'5'},{NAME=>'course',VERSIONS=>'5'}