實驗環境:
centos7,共四台虛拟機,對應關系如下:
master 192.168.159.101 hbase主節點
node1 192.168.159.102 hbase子節點 zookeeper
node2 192.168.159.103 hbase子節點 zookeeper
node3 192.168.159.104 hbase子節點 zookeeper
軟體版本:
hadoop2.7.3
zookeeper-3.4.10
hbase-1.3.0
一、搭建分布式zookeeper
zookeeper叢集節點的數量最好是奇數,具體原因可以自行搜尋,這裡搭建的時候沒有在master上安裝zookeeper,這樣既滿足了zookeeper節點是奇數同時又減輕了主節點的壓力。
1.首先解壓壓縮包
找到壓縮包的位置,進入壓縮包所在的目錄,執行解壓指令
tar -zxvf zookeeper-3.4.10.tar.gz
2.建立目錄
在zookeeper安裝目錄下建立存放資料和日志的目錄
mkdir data
mkdir log
3.修改配置檔案
進入conf目錄中,将zoo_sample.cfg重命名為zoo.cfg并進行編輯
cd zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
将dataDir和dataLogDir前的注釋符号#去掉,并修改為自己建立的目錄
dataDir=/home/hadoop/zookeeper-3.4.10/data
dataLogDir=/home/hadoop/zookeeper-3.4.10/logs
其中,dataDir用來存放zookeeper存放的資料,dataLogDir用來存放日志檔案
添加安裝zookeeper的節點對應的位址
第一台機器就寫 server.1=node1:2888:3888
第二台寫 server.2=node2:2888:3888之後以此類推
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
配置完成後如下圖
4.進入data目錄,建立檔案myid
cd data
vi myid
将檔案中寫入1
5.将zookeeper發送給其它節點
在此zookeeper位置為/home/hadoop下,将發送到node1,2,3的/home/hadoop/下,一定要注意權限問題,如果是root則忽略
scp -r /home/hadoop/zookeeper-3.4.10 [email protected]:/home/hadoop/
scp -r /home/hadoop/zookeeper-3.4.10 [email protected]:/home/hadoop/
chown -R hadoop:hadoop /home/hadoop/zookeeper-3.4.10 修改檔案所屬者群組
chmod -R 777 /home/hadoop/zookeeper-3.4.10 修改通路權限
6.修改每一台機器的myid
按照zoo.cfg中對應的數字修改,例如node2修改為2
vi myid
節點 | myid |
node1 | 1 |
node2 | 2 |
node3 | 3 |
7.進入bin目錄下,開啟zookeeper
使用指令zkServer.sh start依次開啟每一台節點上的zookeeper
8.全部開啟完畢後檢視zookeeper狀态
zkServer.sh status,其中有一台為上司者,其它為跟從者
跟從者:
上司者:
注意:開啟之後需要等待一小會才能看到選舉結果
9.使用jps指令檢視程序
jps
其中,QuorumPeerMain即為zookeeper的程序
附zookeeper便捷啟動腳本:
#!/bin/shell
echo "start zookeeper server..."
#hosts裡是安裝zookeeper的主機名
hosts="node1 node2 node3"
#用循環來分别執行zkServer.sh start的腳本
for host in $hosts
do
echo "$host"
ssh $host "source /etc/profile; /home/hadoop/zookeeper-3.4.10/bin/zkServer.sh start"
done
二、搭建分布式hbase
1.首先解壓
tar -zxvf hbase-1.3.0-bin.tar.gz
2.進入hbase中的conf目錄,配置hbase-env.sh
cd conf
vi habse-env.sh
修改jdk路徑
使用外部的zookeeper,不使用hbase内置zookeeper,如果是單節點僞分布式叢集的話可以省力使用内置zookeeper(推薦)
3.配置hbase-site.xml
在配置檔案中配置的任何路徑都不需要自己手動建立
vi hbase-site.xml
在configuration中添加配置
<configuration>
<!--hbase的根目錄-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!--是否是分布式hbase-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--zookeeper所在的節點-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<!--hbase的zookeeper資料存放位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase-1.3.0/tmp/zk/data</value>
</property>
</configuration>
4.修改regionservers
此配置檔案是配置副節點的,即寫進的節點都為hbase的副節點
vi regionservers
将localhost删除,修改為附節點(注意一個節點占一行)
node1
node2
node3
5.将hbase發送到其它節點
同時也需要注意權限問題,如果不為root使用者,則需要修改一下權限
scp -r /home/hadoop/hbase-1.3.0 [email protected]:/home/hadoop/
scp -r /home/hadoop/hbase-1.3.0 [email protected]:/home/hadoop/
scp -r /home/hadoop/hbase-1.3.0 [email protected]:/home/hadoop/
6.在hbase主節點上開啟hbase(需要先啟動hadoop和zookeeper叢集)
start-hbase.sh
7.使用jps指令檢視程序
主節點:(HMaster程序)
副節點:(HRegionServer程序)
8.登入web端檢視hbase狀況
使用浏覽器檢視狀态,輸入master:16010,在RegionServers下可以看到有三個節點