HBase集群安装部署(完全分布式)
zookeeper 配置
?
1.???????? Zookeeper服務集群規模不小于三個節點,要求各服務之間系統時間要保持一致。
2.???????? 在m1的usr/local目錄下,解壓縮zookeeper(執行命令tar –zvxf zookeeper.tar.gz)
3.???????? 設置環境變量
打開/etc/profile文件!內容如下:
?
#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記得執行source /etc/profile
?
4.???????? 在解壓后的zookeeper的目錄下進入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集群的機器(m1、s1、s2)分別用server.0和server.1、server.2標識,2888和3888為端口號(zookeeper集群包含一個leader(領導)和多個fllower(隨從),啟動zookeeper集群時會隨機分配端口號,分配的端口號為2888的為leader,端口號為3888的是fllower)
?
6.???????? 創建文件夾mkdir /usr/local/program/zookeeper/data
7.???????? 在data目錄下,創建文件myid,值為0? (0用來標識m1這臺機器的zookeeper )
?
到此為止 m1上的配置就已經完成;接下來配置s1和s2.
?
8.???????? 把zookeeper目錄復制到s1和s2中(scp –r /usr/local/program/zookeeper s1:/usr/local/program/zookeeper)
9.???????? 把修改后的etc/profile文件復制到s1和s2中
(復制完后記得在s1和s2中執行命令source /etc/profile)
10.???? 把s1中相應的myid中的值改為1,s2中相應的myid中的值改為2
11.???? 啟動,在三個節點上分別執行命令zkServer.sh? start
12.???? 檢驗,在三個節點上分別執行命令zkServer.sh? status
?
?
?
zookeeper的shell操作
啟動zookeeper:zkServer.sh? start
進入zookeeper:zkCli.sh
?
?
hbase配置
?
HBase(NoSQL)的數據模型
1.1 表(table),是存儲管理數據的。
1.2 行鍵(row key),類似于MySQL中的主鍵。
??? 行鍵是HBase表天然自帶的。
1.3 列族(column family),列的集合。
??? HBase中列族是需要在定義表時指定的,列是在插入記錄時動態增加的。
???????? HBase表中的數據,每個列族單獨一個文件。
1.4 時間戳(timestamp),列(也稱作標簽、修飾符)的一個屬性。
??? 行鍵和列確定的單元格,可以存儲多個數據,每個數據含有時間戳屬性,數據具有版本特性。????
???????? 如果不指定時間戳或者版本,默認取最新的數據。
1.5 存儲的數據都是字節數組。
1.6 表中的數據是按照行鍵的順序物理存儲的。
?
2.HBase的物理模型
2.1 HBase是適合海量數據(如20PB)的秒級簡單查詢的數據庫。
2.2 HBase表中的記錄,按照行鍵進行拆分,拆分成一個個的region。
??? 許多個region存儲在region server(單獨的物理機器)中的。
???????? 這樣,對表的操作轉化為對多臺region server的并行查詢。
?
3.HBase的體系結構
3.1 HBase是主從式結構,HMaster、HRegionServer
?
HBase的偽分布
1.???????? 在m1上解壓縮、重命名、設置環境變量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,修改內容如下
export JAVA_HOME=/usr/local/jdkexport HBASE_MANAGES_ZK=true3.???????? 修改文件hbase-site.xml,修改內容如下
?????
<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.???????? 啟動,執行命令start-hbase.sh
??? 注意:啟動hbase之前要先啟動hadoop,確保hadoop可寫入數據。
?
?
HBase的完全分布集群
1.hbase的機群搭建過程(在原來的m1上的hbase偽分布基礎上進行搭建)
1.1 集群結構,主節點(hmaster)是m1,從節點(region server)是s1和s2
1.2 修改m1上的hbase的幾個文件
??? (1)修改hbase-env.sh的最后一行export HBASE_MANAGES_ZK=false
???????? (2)修改hbase-site.xml文件的hbase.zookeeper.quorum的值為m1,s1,s2
???????? (3)修改regionservers文件(存放的region server的hostname),內容修改為s1、s2
1.3 復制m1中的hbase文件夾到s1、s2中????????
??? 復制m1中的/etc/profile到s1、s2中,在s1、s2上執行source /etc/profile
1.4 啟動集群
?? 首先啟動hadoop(在m1上start-all.sh),
?? 然后啟動zookeeper集群(分別在三臺機器上zkServer.sh? start;可以使用zkServer.sh status查看zk的狀態)。
?? 最后在m1上啟動hbase集群(start-hbase.sh)。
HBase Shell操作(增刪改查)
說明:
?????? hbase提供了一個shell的終端給用戶交互
?
創建表
>create 'users','user_id','address','info'
???????? (說明:表users,有三個列族user_id,address,info)
?
列出全部表
>list
得到表的描述
>describe 'users'
創建表
>create 'users_tmp','user_id','address','info'
刪除表
>disable 'users_tmp'>drop 'users_tmp'
?
添加記錄
put ‘表名’,’行鍵(標識)’,’列族:字段’,’數值’
示例:
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.?????? 取得一個id的所有數據
?
>get 'users','xiaoming'
?
2.?????? 獲取一個id,一個列族的所有數據
?
>get 'users','xiaoming','info'
?
3.?????? 獲取一個id,一個列族中一個列的所有數據
?
>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'
獲取單元格數據的版本數據
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}
獲取單元格數據的某個版本數據
〉get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
全表掃描
>scan 'users'
?
刪除xiaoming值的'info:age'字段
>delete 'users','xiaoming','info:age'>get 'users','xiaoming'
刪除整行
>deleteall 'users','xiaoming'
統計表的行數
>count 'users'
清空表>truncate 'users'
總結
以上是生活随笔為你收集整理的HBase集群安装部署(完全分布式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国广电透露:小米 10 / 青春版计划
- 下一篇: Solr+Hbase多条件查(优劣互补)