HDFS的高可用搭建不在本篇中描述,请参考《Hadoop HDFS与YARN高可用安装》。
节点规划
hostname | ip | 安装服务 |
---|---|---|
zk1 | 192.168.1.1 | zookeeper |
zk2 | 192.168.1.2 | zookeeper |
zk3 | 192.168.1.3 | zookeeper |
提示:
zookeeper集群安装不在本文描述范围, 请自行参考其他文档。(zookeeper集群也可以跟datanode安装在一起)
hostname | ip | 安装服务 |
---|---|---|
master1 | 192.168.1.10 | HMaster |
master2 | 192.168.1.11 | HMaster |
region1 | 192.168.1.12 | HRegionServer |
region2 | 192.168.1.13 | HRegionServer |
- HBase Master 用于协调多个 Region Server,侦测各个 Region Server 之间的状态,并平衡 Region Server 之间的负载。HBase Master 还有一个职责就是负责分配 Region 给 Region Server。HBase 允许多个 Master 节点共存,但是这需要 Zookeeper 的帮助。不过当多个 Master 节点共存时,只有一个 Master 是提供服务的,其他的 Master 节点处于待命的状态。当正在工作的 Master 节点宕机时,其他的 Master 则会接管 HBase 的集群。
- 对于一个 Region Server 而言,其包括了多个 Region。Region Server 的作用只是管理表格,以及实现读写操作。Client 直接连接 Region Server,并通信获取 HBase 中的数据。对于 Region 而言,则是真实存放 HBase 数据的地方,也就说 Region 是 HBase 可用性和分布式的基本单位。如果当一个表格很大,并由多个 CF 组成时,那么表的数据将存放在多个 Region 之间,并且在每个 Region 中会关联多个存储的单元(Store)。
- 对于 HBase 而言,Zookeeper 的作用是至关重要的。首先 Zookeeper 是作为 HBase Master 的 HA 解决方案。也就是说,是 Zookeeper 保证了至少有一个 HBase Master 处于运行状态。并且 Zookeeper 负责 Region 和 Region Server 的注册。其实 Zookeeper 发展到目前为止,已经成为了分布式大数据框架中容错性的标准框架。不光是 HBase,几乎所有的分布式大数据相关的开源框架,都依赖于 Zookeeper 实现 HA。
安装前准备
操作系统:CentOS 6.5 x86_64 JDK:1.8.0_74-b02 (JDK的安装本文不进行描述) Hbase: Hbase-1.2.5-bin.tar.gz Zookeeper: 3.4.6
安装过程
1. 主机名修改
登录nna节点,修改/etc/hosts文件,在后面追加如下内容:
192.168.1.1 zk1
192.168.1.2 zk2
192.168.1.3 zk3
192.168.1.10 master1
192.168.1.11 master2
192.168.1.12 region1
192.168.1.13 region2
# hdfs服务器地址,hdfs搭建请参考《Hadoop HDFS与YARN高可用安装》
192.168.1.4 nna
192.168.1.5 nns
192.168.1.6 dn1
192.168.1.7 dn2
192.168.1.8 dn3
分发到其它主机,下面以zk1为例:
scp /etc/hosts root@zk1:/etc
2. 创建hbase用户
登录除zk外的主机,分别创建hbase用户:
useradd hbase
3. 添加ssh信任
su - hbase
ssh-keygen -t rsa #一直按回车键,直到交互结束。会在 ~/.ssh/ 目录下生成 id_rsa.pub 文件
cat ~/.ssh/id_rsa.pub # 拷贝里面的内容
# 在所有主机中重复以上步骤
touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys # 将所有主机的 id_rsa.pub 文件中的内容都拷贝到此文件中,并将此文件分发到所有主机。注意是hbase用户下的 ~/.ssh/authorized_keys 文件
做完上述动作后,可以使用如下命令验证免密登录是否设置成功,若登录过程不需要输入密码则已设置成功:
su - hbase
ssh master1
有必要在所有机器上都相互验证下。
4. 线程数与打开文件句柄数修改
Hbase会在同一时间使用很多的文件句柄.大多数linux系统使用的默认值1024是不能满足的。
编辑/etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
* soft nproc 16384
* hard nproc 16384
若操作系统为centos6.5,还需编辑/etc/security/limits.d/90-nproc.conf:
* soft nproc 1024
root soft nproc unlimited
hbase soft nproc 16384
hbase hard nproc 16384
除zk外的主机,请都完成上述设置。
5. 关闭防火墙
由于hbase的节点之间需要通信(RPC机制),这样一来就需要监听对应的端口,这里我就直接将防火墙关闭了,命令如下:
chkconfig iptables off
6. 开启时钟同步
各个节点的时间如果不同步,会出现启动异常,或其他原因。
service ntpd start
7. 环境变量配置
export JAVA_HOME=/usr/lib/java
export HBASE_HOME=/home/hbase/hbase
export HADOOP_HOME=/home/hbase/hadoop #配置hadoop变量,否则hbase不识别hdfs集群名
export HBASE_MANAGES_ZK=false #不使用hbase自带的zookeeper,使用搭建的zk集群。
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 核心文件配置
将hbase-1.2.5-bin.tar.gz上传到/home/hbase下,并解压。拷贝hdfs节点上的hadoop安装目录到/home/hbase。
su - hbase && cd /home/hbase
tar -xzvf hbase-1.2.5-bin.tar.gz && ln -s hbase-1.2.5 hbase
`
bash $HBASE_HOME/conf/hbase-site.xml
```bash $HBASE_HOME/conf/regionservers
region1
region2
将配置好的hbase与hadoop复制到其它节点;
scp -r hbase master2:~/
scp -r hbase region1:~/
scp -r hbase region2:~/
scp -r hadoop master2:~/
scp -r hadoop region1:~/
scp -r hadoop region2:~/
- 启动
登录到master1:
su - hbase
$HBASE_HOME/bin/start-hbase.sh # 此脚本会在master1上启动HMaster,region1与region2上启动HRegionServer
登录到master2:
su - hbase
$HBASE_HOME/bin/hbase-daemon.sh start master # 此脚本会在master2上启动HMaster