HBase集群安装部署(完全分布式)
zookeeper 配置
?
1.???????? Zookeeper服務(wù)集群規(guī)模不小于三個(gè)節(jié)點(diǎn),要求各服務(wù)之間系統(tǒng)時(shí)間要保持一致。
2.???????? 在m1的usr/local目錄下,解壓縮zookeeper(執(zhí)行命令tar –zvxf zookeeper.tar.gz)
3.???????? 設(shè)置環(huán)境變量
打開/etc/profile文件!內(nèi)容如下:
?
#set java & hadoopexport JAVA_HOME=/usr/local/program/jdkexport HADOOP_HOME=/usr/local/program/hadoopexport ZOOKEEPER_HOME=/usr/local/program/zookeeperexport PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
?
?
注:修改完后profile記得執(zhí)行source /etc/profile
?
4.???????? 在解壓后的zookeeper的目錄下進(jìn)入conf目錄修改配置文件
更名操作:mv zoo_sample.cfg zoo.cfg
5.???????? 編輯zoo.cfg (vi zoo.cfg)
修改dataDir=/usr/local/program/zookeeper/data/
新增server.0=m1:2888:3888
???????? server.1=s1:2888:3888
???????? server.2=s2:2888:3888
?
文件如下:
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/local/program/zookeeper/data# the port at which the clients will connectclientPort=2181## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1server.0=m1:2888:3888server.1=s1:2888:3888server.2=s2:2888:3888?
? 注:
server.0=m1:2888:3888server.1=s1:2888:3888server.2=s2:2888:3888這三行為配置zookeeper集群的機(jī)器(m1、s1、s2)分別用server.0和server.1、server.2標(biāo)識(shí),2888和3888為端口號(zookeeper集群包含一個(gè)leader(領(lǐng)導(dǎo))和多個(gè)fllower(隨從),啟動(dòng)zookeeper集群時(shí)會(huì)隨機(jī)分配端口號,分配的端口號為2888的為leader,端口號為3888的是fllower)
?
6.???????? 創(chuàng)建文件夾mkdir /usr/local/program/zookeeper/data
7.???????? 在data目錄下,創(chuàng)建文件myid,值為0? (0用來標(biāo)識(shí)m1這臺(tái)機(jī)器的zookeeper )
?
到此為止 m1上的配置就已經(jīng)完成;接下來配置s1和s2.
?
8.???????? 把zookeeper目錄復(fù)制到s1和s2中(scp –r /usr/local/program/zookeeper s1:/usr/local/program/zookeeper)
9.???????? 把修改后的etc/profile文件復(fù)制到s1和s2中
(復(fù)制完后記得在s1和s2中執(zhí)行命令source /etc/profile)
10.???? 把s1中相應(yīng)的myid中的值改為1,s2中相應(yīng)的myid中的值改為2
11.???? 啟動(dòng),在三個(gè)節(jié)點(diǎn)上分別執(zhí)行命令zkServer.sh? start
12.???? 檢驗(yàn),在三個(gè)節(jié)點(diǎn)上分別執(zhí)行命令zkServer.sh? status
?
?
?
zookeeper的shell操作
啟動(dòng)zookeeper:zkServer.sh? start
進(jìn)入zookeeper:zkCli.sh
?
?
hbase配置
?
HBase(NoSQL)的數(shù)據(jù)模型
1.1 表(table),是存儲(chǔ)管理數(shù)據(jù)的。
1.2 行鍵(row key),類似于MySQL中的主鍵。
??? 行鍵是HBase表天然自帶的。
1.3 列族(column family),列的集合。
??? HBase中列族是需要在定義表時(shí)指定的,列是在插入記錄時(shí)動(dòng)態(tài)增加的。
???????? HBase表中的數(shù)據(jù),每個(gè)列族單獨(dú)一個(gè)文件。
1.4 時(shí)間戳(timestamp),列(也稱作標(biāo)簽、修飾符)的一個(gè)屬性。
??? 行鍵和列確定的單元格,可以存儲(chǔ)多個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)含有時(shí)間戳屬性,數(shù)據(jù)具有版本特性。????
???????? 如果不指定時(shí)間戳或者版本,默認(rèn)取最新的數(shù)據(jù)。
1.5 存儲(chǔ)的數(shù)據(jù)都是字節(jié)數(shù)組。
1.6 表中的數(shù)據(jù)是按照行鍵的順序物理存儲(chǔ)的。
?
2.HBase的物理模型
2.1 HBase是適合海量數(shù)據(jù)(如20PB)的秒級簡單查詢的數(shù)據(jù)庫。
2.2 HBase表中的記錄,按照行鍵進(jìn)行拆分,拆分成一個(gè)個(gè)的region。
??? 許多個(gè)region存儲(chǔ)在region server(單獨(dú)的物理機(jī)器)中的。
???????? 這樣,對表的操作轉(zhuǎn)化為對多臺(tái)region server的并行查詢。
?
3.HBase的體系結(jié)構(gòu)
3.1 HBase是主從式結(jié)構(gòu),HMaster、HRegionServer
?
HBase的偽分布
1.???????? 在m1上解壓縮、重命名、設(shè)置環(huán)境變量HBASE_HOME
如下:
#set java & hadoopexport JAVA_HOME=/usr/local/jdkexport HADOOP_HOME=/usr/local/hadoopexport ZOOKEEPER_HOME=/usr/local/zookeeperexport HBASE_HOME=/usr/local/hbaseexport PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$JAVA_HOME/bin:$PATH
?
注:修改完成后記得source /etc/profile
?
2.???????? 修改文件$HBASE_HOME/conf/hbase-env.sh,修改內(nèi)容如下
export JAVA_HOME=/usr/local/jdkexport HBASE_MANAGES_ZK=true3.???????? 修改文件hbase-site.xml,修改內(nèi)容如下
?????
<property><name>hbase.rootdir</name><value>hdfs://m1:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>m1</value></property><property><name>dfs.replication</name><value>1</value></property>
4.???????? (可選)修改regionservers,具體操作見ppt
5.???????? 啟動(dòng),執(zhí)行命令start-hbase.sh
??? 注意:啟動(dòng)hbase之前要先啟動(dòng)hadoop,確保hadoop可寫入數(shù)據(jù)。
?
?
HBase的完全分布集群
1.hbase的機(jī)群搭建過程(在原來的m1上的hbase偽分布基礎(chǔ)上進(jìn)行搭建)
1.1 集群結(jié)構(gòu),主節(jié)點(diǎn)(hmaster)是m1,從節(jié)點(diǎn)(region server)是s1和s2
1.2 修改m1上的hbase的幾個(gè)文件
??? (1)修改hbase-env.sh的最后一行export HBASE_MANAGES_ZK=false
???????? (2)修改hbase-site.xml文件的hbase.zookeeper.quorum的值為m1,s1,s2
???????? (3)修改regionservers文件(存放的region server的hostname),內(nèi)容修改為s1、s2
1.3 復(fù)制m1中的hbase文件夾到s1、s2中????????
??? 復(fù)制m1中的/etc/profile到s1、s2中,在s1、s2上執(zhí)行source /etc/profile
1.4 啟動(dòng)集群
?? 首先啟動(dòng)hadoop(在m1上start-all.sh),
?? 然后啟動(dòng)zookeeper集群(分別在三臺(tái)機(jī)器上zkServer.sh? start;可以使用zkServer.sh status查看zk的狀態(tài))。
?? 最后在m1上啟動(dòng)hbase集群(start-hbase.sh)。
HBase Shell操作(增刪改查)
說明:
?????? hbase提供了一個(gè)shell的終端給用戶交互
?
創(chuàng)建表
>create 'users','user_id','address','info'
???????? (說明:表users,有三個(gè)列族user_id,address,info)
?
列出全部表
>list
得到表的描述
>describe 'users'
創(chuàng)建表
>create 'users_tmp','user_id','address','info'
刪除表
>disable 'users_tmp'>drop 'users_tmp'
?
添加記錄
put ‘表名’,’行鍵(標(biāo)識(shí))’,’列族:字段’,’數(shù)值’
示例:
put 'users','xiaoming','info:age','24';put 'users','xiaoming','info:birthday','1987-06-17';put 'users','xiaoming','info:company','alibaba';put 'users','xiaoming','address:contry','china';put 'users','xiaoming','address:province','zhejiang';put 'users','xiaoming','address:city','hangzhou';put 'users','zhangyifei','info:birthday','1987-4-17';put 'users','zhangyifei','info:favorite','movie';put 'users','zhangyifei','info:company','alibaba';put 'users','zhangyifei','address:contry','china';put 'users','zhangyifei','address:province','guangdong';put 'users','zhangyifei','address:city','jieyang';put 'users','zhangyifei','address:town','xianqiao'?
獲取一條記錄
1.?????? 取得一個(gè)id的所有數(shù)據(jù)
?
>get 'users','xiaoming'
?
2.?????? 獲取一個(gè)id,一個(gè)列族的所有數(shù)據(jù)
?
>get 'users','xiaoming','info'
?
3.?????? 獲取一個(gè)id,一個(gè)列族中一個(gè)列的所有數(shù)據(jù)
?
>get 'users','xiaoming','info:age'
?
更新記錄
>put 'users','xiaoming','info:age' ,'29'>get 'users','xiaoming','info:age'>put 'users','xiaoming','info:age' ,'30'>get 'users','xiaoming','info:age'
獲取單元格數(shù)據(jù)的版本數(shù)據(jù)
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}
獲取單元格數(shù)據(jù)的某個(gè)版本數(shù)據(jù)
〉get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
全表掃描
>scan 'users'
?
刪除xiaoming值的'info:age'字段
>delete 'users','xiaoming','info:age'>get 'users','xiaoming'
刪除整行
>deleteall 'users','xiaoming'
統(tǒng)計(jì)表的行數(shù)
>count 'users'
清空表>truncate 'users'
總結(jié)
以上是生活随笔為你收集整理的HBase集群安装部署(完全分布式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国广电透露:小米 10 / 青春版计划
- 下一篇: Solr+Hbase多条件查(优劣互补)