HBase四種部署模式和基本操作

本文主要包括兩部分的內容蓖议,第一部分主要包HBase的四種安裝方法史汗,分別是:① 單機版模式,② 偽集群模式,③ 使用HBase自帶的zookeeper構建分布式集群弓摘,④ 使用獨立安裝的zookeeper構建分布式集群。第二部分通過HBase shell,展示HBase的基本操作损合,如創(chuàng)建表、插入記錄钧栖、查詢記錄谤牡、刪除記錄等。

HBase的部署方式包括:

部署模式 說明
單機模式 單機版模式,常用于本地開發(fā)
偽集群模式 使用HBase自帶的zookeeper
集群模式 使用HBase自帶的zookeeper
集群模式 單獨安裝zookeeper

Ⅰ HBase的安裝

本文的HBase安裝是在Hadoop已經安裝好的基礎上實現(xiàn)的爸业,所以之前要導出JAVA_HOME其骄、HADOOP_HOME( 單機模式不需要,偽分布式模式和分布式模式需要)等環(huán)境變量以及配置好SSH互信等扯旷。

0 公共配置

導出HBase的環(huán)境變量

export HBASE_HOME=/root/software/hbase-1.2.1
export PATH=$PATH:$HBASE_HOME/bin

查看hbase版本 : hbase version

1 單機模式

配置hbase-env.sh

在hbase-env.sh添加如下內容

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_MANAGES_ZK=true 

說明:其中HBASE_MANAGES_ZK=true,表示由hbase自己管理zookeeper拯爽,不需要單獨的zookeeper,HBASE_MANAGES_ZK=false則表示使用獨立部署的zookeeper钧忽。

配置hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///data/hbase</value>
    </property>
</configuration>

說明:hbase.rootdir毯炮,用于指定HBase數(shù)據(jù)的存儲位置,因為如果不設置的話耸黑,hbase.rootdir默認為/tmp/hbase-${user.name},這意味著每次重啟系統(tǒng)都會丟失數(shù)據(jù)桃煎。此配置中HBase直接使用默認的文件系統(tǒng)。

啟動和停止

$HBASE_HOME/bin/start-hbase.sh
$HBASE_HOME/bin/stop-hbase.sh

2 偽集群模式

配置hbase-env.sh

在hbase-env.sh添加如下內容

export JAVA_HOME=$JAVA_HOME
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
export HBASE_MANAGES_ZK=true 
  • HBASE_MANAGES_ZK=true,表示由hbase自己管理zookeeper大刊,不需要單獨的部署zookeeper为迈。
  • export HBASE_CLASSPATH="", 表示使用hdfs作為HBase的儲存。

配置hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:8020/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
</configuration>

說明:

  • base.rootdir缺菌,用于指定HBase數(shù)據(jù)的存儲位置葫辐,此時已經使用了hdfs。
  • hbase.cluster.distributed設置集群處于分布式模式;

啟動和停止

啟動(包括啟動hdfs和hbase)

$HBASE_HOME/sbin/start-dfs.sh
$HBASE_HOME/bin/start-hbase.sh

停止(包括停止hbase和hdfs)

$HBASE_HOME/bin/stop-hbase.sh
$HBASE_HOME/sbin/stop-dfs.sh

3 集群模式(使用hbase自帶的zookeeper)

配置hbase-env.sh

在hbase-env.sh添加如下內容

export JAVA_HOME=$JAVA_HOME
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
export HBASE_MANAGES_ZK=true
  • HBASE_MANAGES_ZK=true,表示使用hbase自帶的zookeeper伴郁。

配置hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:8020/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>master:6000</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>slave1:2181,slave2:2181,slave3:2181</value>
    </property>
    <property>
        <name>zookeeper.znode.parent</name>
        <value>/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property</name>
        <value>/data/zookeeper/data</value>
    </property>
</configuration>

說明:

  • base.rootdir 用于指定HBase數(shù)據(jù)的存儲位置;
  • hbase.cluster.distributed 設置集群處于分布式模式;
  • hbase.master 指定hbase的hmaster的主機名和端口 ;
  • hbase.zookeeper.quorum 指定使用zookeeper的主機地址另患,必須是奇數(shù)個;
  • hbase.zookeeper.property 指定zookeeper數(shù)據(jù)存儲目錄,默認路徑是/tmp蛾绎,如果不配置昆箕,重啟之后數(shù)據(jù)將被清空。

配置regionservers

在regionservers文件中添加HBase的slave節(jié)點租冠,類似hadoop中的slaves鹏倘,一行一個。

slave1
slave2
slave3

啟動和停止

啟動(包括啟動hdfs和hbase)

$HBASE_HOME/sbin/start-dfs.sh
$HBASE_HOME/bin/start-hbase.sh

停止(包括停止hbase和hdfs)

$HBASE_HOME/bin/stop-hbase.sh
$HBASE_HOME/sbin/stop-dfs.sh

HBase啟動成功之后:

  • master節(jié)點上的進程有:HMaster
  • slave節(jié)點上的進程有:HRegionServer顽爹、HQuorumPerr

4 集群模式(單獨安裝zookeeper)

安裝zookeeper

zookeeper的下載和解壓這里不贅述纤泵,直接開始zookeeper集群的配置。
首先镜粤,導出zookeeper環(huán)境編輯捏题,添加如下內容到~/.bash_profile中

export ZOOKEEPER_HOME=/root/software/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

解壓zookeeper之后,進入conf目錄肉渴,拷貝生成zoo.cfg

cp zoo_sample.cfg zoo.cfg

配置zoo.cfg公荧。在zoo.cfg中添加如下內容

clientPort=2181
dataDir=/data/zookeeper/zk_data
server.1=master:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

說明::第一個端口是master和slave之間的通信端口,默認是2888同规,第二個端口是leader選舉的端口循狰,集群剛啟動的時候選舉或者leader掛掉之后進行新的選舉的端口默認是3888窟社。

分發(fā)解壓的zookeeper到slave2、slave3

scp -r /root/software/zookeeper-3.4.10 slave2:/root/software/zookeeper-3.4.10
scp -r /root/software/zookeeper-3.4.10 slave3:/root/software/zookeeper-3.4.10

創(chuàng)建數(shù)據(jù)目錄

ssh root@master 'mkdir -p /data/zookeeper/zk_data'
ssh root@slave2 'mkdir -p /data/zookeeper/zk_data'
ssh root@slave3 'mkdir -p /data/zookeeper/zk_data'

寫入myid

ssh root@master  'echo 1 > /data/zookeeper/zk_data/myid'
ssh root@slave2  'echo 2 > /data/zookeeper/zk_data/myid'
ssh root@slave3  'echo 3 > /data/zookeeper/zk_data/myid'

注意:本文部署的zookeeper集群包含三個節(jié)點绪钥,分別是master灿里、slave1、slave2程腹。寫入myid的值要和zoo.cfg中server后數(shù)值對應匣吊。

啟動、停止寸潦、查看zookeeper狀態(tài)

ssh root@master   '/root/software/zookeeper-3.4.10/bin/zkServer.sh start'
ssh root@slave2   '/root/software/zookeeper-3.4.10/bin/zkServer.sh start'
ssh root@slave3   '/root/software/zookeeper-3.4.10/bin/zkServer.sh start'

ssh root@master   '/root/software/zookeeper-3.4.10/bin/zkServer.sh status'
ssh root@slave2   '/root/software/zookeeper-3.4.10/bin/zkServer.sh status'
ssh root@slave3  '/root/software/zookeeper-3.4.10/bin/zkServer.sh status'

ssh root@master   '/root/software/zookeeper-3.4.10/bin/zkServer.sh stop'
ssh root@slave2   '/root/software/zookeeper-3.4.10/bin/zkServer.sh stop'
ssh root@slave3   '/root/software/zookeeper-3.4.10/bin/zkServer.sh stop'

配置hbase-env.sh

export JAVA_HOME=$JAVA_HOME
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
export HBASE_MANAGES_ZK=false 

其中HBASE_MANAGES_ZK=false,表示不使用hbase自帶的zookeeper色鸳,而使用獨立部署的zookeeper。

配置hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:8020/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>master:6000</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>slave1:2181,slave2:2181,slave3:2181</value>
    </property>
    <property>
        <name>zookeeper.znode.parent</name>
        <value>/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property</name>
        <value>/data/zookeeper/data</value>
    </property>
</configuration>

說明:

  • base.rootdir 用于指定HBase數(shù)據(jù)的存儲位置;
  • hbase.cluster.distributed 設置集群處于分布式模式;
  • hbase.master 指定hbase的hmaster的主機名和端口 ;
  • hbase.zookeeper.quorum 指定使用zookeeper的主機地址甸祭,必須是奇數(shù)個;
  • hbase.zookeeper.property 指定zookeeper數(shù)據(jù)存儲目錄缕碎,默認路徑是/tmp,如果不配置池户,重啟之后數(shù)據(jù)將被清空咏雌。

配置regionservers

在regionservers文件中添加HBase的slave節(jié)點,類似hadoop中的slaves校焦,一行一個赊抖。

slave1
slave2
slave3

啟動和停止

先啟動zookeeper,參考上述“啟動寨典、停止氛雪、查看zookeeper狀態(tài)”。

啟動(包括啟動hdfs和hbase)

$HBASE_HOME/sbin/start-dfs.sh
$HBASE_HOME/bin/start-hbase.sh

停止(包括停止hbase和hdfs)

$HBASE_HOME/bin/stop-hbase.sh
$HBASE_HOME/sbin/stop-dfs.sh

HBase啟動成功之后:

  • master節(jié)點上的進程有:HMaster耸成、QuorumPeerMain
  • slave節(jié)點上的進程有:HRegionServer报亩、QuorumPeerMain

說明:hbase的master節(jié)點和slave節(jié)點中都出現(xiàn)了QuorumPeerMain(就是zookeeper進程)而不是QuorumPeer進程,表示此時hbase使用的是獨立的zookeeper井氢。

Ⅱ HBase的操作

下面的操作主要是在hbase的shell中操作的弦追,進入hbase shell

hbase shell

創(chuàng)建表

create 'student','Sname','Ssex','Sage','Sdept','course'
create 'teacher',{NAME=>'username',VERSIONS=>5} // 創(chuàng)建表示指定保存的版本數(shù)

查看表詳情

describe 'student'

顯示所有的表

list

插入數(shù)據(jù)

put 'student','95001','Sname','LiYing'
put 'student','95001','Ssex','Male'
put 'student','95001','course:math','80'
put 'student','95001','course:english','90'

put 'student','95002','Sname','ZhangYiDa'
put 'student','95002','Ssex','Femal'
put 'student','95002','course:math','90'
put 'student','95002','course:english','70'

注意:一次只能為一個表的一行數(shù)據(jù)的一個列,也就是一個單元格添加一個數(shù)據(jù)花竞,所以直接用shell命令插入數(shù)據(jù)效率很低劲件,在實際應用中,一般都是利用編程操作數(shù)據(jù)约急。當運行命令:put ‘student’,’95001’,’Sname’,’LiYing’時零远,即為student表添加了學號為95001,名字為LiYing的一行數(shù)據(jù)厌蔽,其行鍵為95001牵辣。

查詢數(shù)據(jù)

HBase中有兩個用于查看數(shù)據(jù)的命令:
① get命令,用于查看表的某一行數(shù)據(jù)躺枕;
② scan命令用于查看某個表的全部數(shù)據(jù)

get 'student','95001'
get 'student','95001','course'
get 'student','95001','course:math'

scan 'student'

刪除數(shù)據(jù)

在HBase中用delete以及deleteall命令進行刪除數(shù)據(jù)操作服猪,它們的區(qū)別是:
① delete用于刪除一個數(shù)據(jù)供填,是put的反向操作拐云;
② deleteall操作用于刪除一行數(shù)據(jù)罢猪。

delete 'student','95001','Ssex'
deleteall 'student','95001'

修改數(shù)據(jù)

在添加數(shù)據(jù)時,HBase會自動為添加的數(shù)據(jù)添加一個時間戳叉瘩,故在需要修改數(shù)據(jù)時膳帕,只需直接添加數(shù)據(jù),HBase即會生成一個新的版本薇缅,從而完成“改”操作危彩,舊的版本依舊保留,系統(tǒng)會定時回收垃圾數(shù)據(jù)泳桦,只留下最新的幾個版本汤徽,保存的版本數(shù)可以在創(chuàng)建表的時候指定。下面是一個操作的例子:

hbase(main):034:0> get 'student','95001'
COLUMN                             CELL                                                                                               
 Sname:                            timestamp=1537497681798, value=LiYing                                                              
 Ssex:                             timestamp=1537497682400, value=Male                                                                
 course:english                    timestamp=1537497872225, value=90                                                                  
 course:math                       timestamp=1537497681859, value=80                                                                  
4 row(s) in 0.0310 seconds

hbase(main):035:0> put 'student','95001','course:english','100'
0 row(s) in 0.0130 seconds

hbase(main):036:0> get 'student','95001'
COLUMN                             CELL                                                                                               
 Sname:                            timestamp=1537497681798, value=LiYing                                                              
 Ssex:                             timestamp=1537497682400, value=Male                                                                
 course:english                    timestamp=1537498062541, value=100                                                                 
 course:math                       timestamp=1537497681859, value=80                                                                  
4 row(s) in 0.0130 seconds

刪除表

刪除表有兩步灸撰,第一步先讓該表不可用谒府,第二步刪除表。直接drop未disable的表會失敗浮毯。

disable 'student'
drop 'student'

查詢歷史的表

create 'teacher',{NAME=>'username',VERSIONS=>5}

put 'teacher','91001','username','Mary'
put 'teacher','91001','username','Mary1'
put 'teacher','91001','username','Mary2'
put 'teacher','91001','username','Mary3'
put 'teacher','91001','username','Mary4'  
put 'teacher','91001','username','Mary5'

get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5}

hbase(main):064:0> get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5}
COLUMN                             CELL                                                                                               
 username:                         timestamp=1537498459746, value=Mary5                                                               
 username:                         timestamp=1537498455244, value=Mary4                                                               
 username:                         timestamp=1537498455193, value=Mary3                                                               
 username:                         timestamp=1537498455174, value=Mary2                                                               
 username:                         timestamp=1537498455149, value=Mary1                                                               
5 row(s) in 0.0110 seconds

退出hbase

exit

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末完疫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子债蓝,更是在濱河造成了極大的恐慌壳鹤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰迹,死亡現(xiàn)場離奇詭異芳誓,居然都是意外死亡,警方通過查閱死者的電腦和手機啊鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門锹淌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莉掂,你說我怎么就攤上這事葛圃。” “怎么了憎妙?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵库正,是天一觀的道長。 經常有香客問我厘唾,道長褥符,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任抚垃,我火速辦了婚禮喷楣,結果婚禮上趟大,老公的妹妹穿的比我還像新娘。我一直安慰自己铣焊,他們只是感情好逊朽,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曲伊,像睡著了一般叽讳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟募,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天岛蚤,我揣著相機與錄音,去河邊找鬼懈糯。 笑死涤妒,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赚哗。 我是一名探鬼主播她紫,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜂奸!你這毒婦竟也來了犁苏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扩所,失蹤者是張志新(化名)和其女友劉穎围详,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祖屏,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡助赞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了袁勺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雹食。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖期丰,靈堂內的尸體忽然破棺而出群叶,到底是詐尸還是另有隱情,我是刑警寧澤钝荡,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布街立,位于F島的核電站,受9級特大地震影響埠通,放射性物質發(fā)生泄漏赎离。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一端辱、第九天 我趴在偏房一處隱蔽的房頂上張望梁剔。 院中可真熱鬧虽画,春花似錦、人聲如沸荣病。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽众雷。三九已至灸拍,卻和暖如春做祝,著一層夾襖步出監(jiān)牢的瞬間砾省,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工混槐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留编兄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓声登,卻偏偏與公主長得像狠鸳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悯嗓,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 入門指南 1. 簡介 Quickstart會讓你啟動和運行一個單節(jié)點單機HBase件舵。 2. 快速啟動 – 單點HB...
    和心數(shù)據(jù)閱讀 4,577評論 1 41
  • 簡介 HBase是高可靠性,高性能脯厨,面向列铅祸,可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Serve...
    九世的貓閱讀 2,195評論 1 6
  • 前言 在本節(jié)中合武,你將首先學習單節(jié)點临梗、獨立的HBase的設置,并且學會運行單節(jié)點稼跳、獨立的HBase實例盟庞! 在一個獨立...
    步閑閱讀 1,869評論 1 3
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)汤善,斷路器什猖,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評論 2 89