即将构建的集群节点情况说明,需要三台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.