实际场景中,HBase肯定要运行在一个完全分布式的场景中,整个集群中包含多个节点,每个节点运行一个或者多个HBase守护程序,其中包括主Master实例和备份Master实例,多个Zookeeper实例和多个RegionServer实例。
1、确保节点通信
确保所有节点都具有完全的通信访问权限,并且没有适当的防火墙规则可能阻止它们相互通信。如果看到类似的错误no route to host,请检查防火墙。
2、环境准备
2.1、JDK版本:1.8
2.2、HBase版本:2.0.5
2.3、节点角色分配
3、配置无密码的SSH访问
3.1、在node01上,生成密钥
ssh-keygen
如果命令成功执行,则将密钥对的位置打印到标准输出。公钥的默认名称是id_rsa.pub。
3.2、把密钥复制到其他节点
ssh-copy-id -i /root/.ssh/id_rsa.pub node02(节点名称)
ssh-copy-id -i /root/.ssh/id_rsa.pub node03(节点名称)
ssh-copy-id -i /root/.ssh/id_rsa.pub node04(节点名称)
其他节点也要重复上面的配置,确保节点之间都配置了免密。
4、配置HBASE环境变量、4个节点全部都要配置
vi /etc/profile
export JAVA_HOME=/usr/java/default
export ZOOKEEPER_HOME=/opt/bigdata/zookeeper-3.4.6
export HADOOP_HOME=/opt/bigdata/hadoop-2.6.5
export HBASE_HOME=/opt/bigdata/hbase-2.0.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin
5、修改hbase配置文件
先配置node01节点,配置完之后在copy到其他3个节点上。
5.1、修改hbase-env.sh
vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_MANAGES_ZK=false
5.2、修改hbase-site.xml
vi $HBASE_HOME/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node02,node03,node04</value>
</property>
</configuration>
5.3、配置集群中运行的RegionServer节点列表
vi $HBASE_HOME/conf/regionservers
5.4、配置运行备份Master实例的节点列表
vi $HBASE_HOME/conf/backup-masters
5.5、让HBase使用自己的hdfs配置
cp /opt/bigdata/hadoop-2.6.5/etc/hadoop/hdfs-site.xml /opt/bigdata/hbase-2.0.5/conf/
5.6、把上述5步的修改内容远程复制到node02、node03、node04节点上
scp -r hbase-2.0.5/ node02:`pwd`
scp -r hbase-2.0.5/ node03:`pwd`
scp -r hbase-2.0.5/ node04:`pwd`
6、搭建完成,在node01节点启动hbase
6.1、启动hbase
start-hbase.sh
通过日志和web页面检查配置与设想的一致
6.2、进入hbase shell命令行
hbase shell