即將構建的集羣節點情況說明,需要三臺server(centos01,centos02,centos03),分別代表節點1,2,3.HBase是在hadoop和zookeeper的前提下搭建的,所以必須提前在三臺server上裝好hadoop和zookeeper。
集羣包括:1個primary Master ,1個back Master (hbase設一個主Master與一個備Master)
3個zookeeper節點
2個RegionServer
hbase實際上使用或繼承了hadoop的實現,所以不管是它的配置文件還是它的設計結構都會盡量遵循hadoop的模型。hadoop中有nodemanager和datanode(大哥和小弟),Hbase中同樣有Master(大哥) 和 RegionServer(小弟)。
Distributed Cluster Demo architecture(集羣節點的結構如下):
Node Name | Master | ZooKeeper | RegionServer |
Centos01 | yes | yes | no |
Centos02 | backup | yes | yes |
Centos03 | no | yes | yes |
一.預設環境:
1.分別在node1,2,3上安裝jdk(自行根據自己安裝的Hbase版本確定JDK版本)
HBase Version | JDK 7 | JDK 8 |
2.0 | yes | |
1.3 | yes | yes |
1.2 | yes | yes |
1.1 | yes | 能運行jdk8但是不穩定 |
二、安裝過程:
1.hadoop:分別在node1,2,3上安裝Hadoop,安裝過程略,如果不會,自己網上百度下。
2.分別在node1,2,3上安裝zookeeper,以下是zookeeper的安裝方法:
1.安裝配置zooekeeper集羣(在hadoop01上)
1.1解壓
tar-zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/app/
1.2修改配置
cd/home/hadoop/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfg zoo.cfg
vimzoo.cfg
修改:dataDir=/home/hadoop/app/zookeeper-3.4.5/tmp
在最後添加:
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
保存退出
然後創建一個tmp文件夾
mkdir/home/hadoop/app/zookeeper-3.4.5/tmp
echo1 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid
1.3將配置好的zookeeper拷貝到其他節點(首先分別在hadoop02、hadoop03根目錄下創建一個hadoop目錄:mkdir /hadoop)
scp-r /home/hadoop/app/zookeeper-3.4.5/ hadoop06:/home/hadoop/app/
scp-r /home/hadoop/app/zookeeper-3.4.5/ hadoop07:/home/hadoop/app/
注意:修改hadoop02、hadoop03對應/hadoop/zookeeper-3.4.5/tmp/myid內容
Hadoop02:
echo2 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid
Hadoop03:
echo3 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid
自己啓動測試下是否成功,同時向三臺機器執行zookeeper的啓動命令:
zkServer.sh start
然後三臺機器jps以下,看是否都存在名爲 HQuorumPeer的進程,有就表示成功了。然後kill -9 進程數,退出zookeeper。
3.設置免密碼登陸:centos01對centos01,centos02,centos03的免密登陸和centos02對centos02,centos03的免密登陸
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的權限必須是700
2).ssh/authorized_keys文件權限必須是600
在centos01上: ssh-keygen
ssh-copy-id -i ~/.sh/id_rsa.pub hadoop@centos01
ssh-copy-id -i ~/.sh/id_rsa.pub hadoop@centos01
ssh-copy-id -i ~/.sh/id_rsa.pub hadoop@centos01
在配置centos02的免密登陸,命令似上。
4.安裝hbase
先配置node1(centos01)
1.上傳hbase-1.2.6-bin.tar.gz到/home/hadoop/apps/並解壓
tar -zxvf hbase-1.2.6-bin.tar.gz
ln -s hbase-1.2.6-bin hbase #設置一個軟連接
2.配置conf
<1>編輯conf/regionservers 將原本的localhost移除,將節點2和3的主機名或者ip地址寫入
vi conf/regionservers
centos02
centos03
<2>配置HBase用node2作爲備master
在conf下建立一個新的vi文本backup-masters
vi backup-masters
centos02
<3>配置zookeeper、主節點、hbase的文件存儲信息(基於hdfs)
vi /conf/hbase-site.xml
<configuration>
#zookeeper的分佈信息,這個配置可以告訴hbase去管理和啓動zookeeper
<property>
<name>hbase.zookeeper.quorum</name>
<value>centos05,centos06,centos07</value>
</property>
#告訴hbase zookeeper的配置文件信息的位置
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/apps/hbase/zookeeper</value>
</property>
#hbasemaster的主機和端口
<property>
<name>hbase.master</name>
<value>centos05:60000</value>
</property>
#時間同步允許的時間差
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
#聲明設置hbase的分佈式
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
#hbase的表格存儲位置
<property>
<name>hbase.rootdir</name>
<value>hdfs://centos01:8020/hbase</value>
</property>
</configuration>
<4>mkdir /home/hadoop/apps/hbase/zookeeper
cp -r zookeeper/conf/zoo.cfg /home/hadoop/apps/hbase/zookeeper #將zookeeper的配置文件zoo.cfg複製到先前我們配置的hbase.zookeeper.property.dataDir的目錄下,方便hbase對zookeeper進行啓動和管理。
<5>將node1上的hbase文件分發到node2和node3上
scp -r /home/hadoop/apps/hbase centos02:/home/hadoop/apps/
scp -r /home/hadoop/apps/hbase centos03:/home/hadoop/apps/
<5>開始並測試hbase集羣
啓動前一定確保沒有hbase進程在運行,在node1上輸入命令:start-hbase.sh
如果成功啓動,你的輸出日誌應該爲:
$ bin/start-hbase.sh
node-c.example.com: starting zookeeper, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-c.example.com.out
node-a.example.com: starting zookeeper, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-a.example.com.out
node-b.example.com: starting zookeeper, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-b.example.com.out
starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-node-a.example.com.out
node-c.example.com: starting regionserver, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-c.example.com.out
node-b.example.com: starting regionserver, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-b.example.com.out
node-b.example.com: starting master, logging to/home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-nodeb.example.com.out
最後請注意:如果在hbase的配置文件中設置到要填localhost的,請用它的hostname替代。比如說在本例中,你一定想要在centos01(節點1)上也啓一個RegionServer,那麼在Regionservers 中,你不要填localhost,而用centos01.