作者:Neshoir
HBase是基于Google BigTable论文设计的具有高可靠性,高性能,可伸缩的开源分布式数据库,其具有松散表结构、高效查询、高吞吐低延迟、多版本等特点,可应用于丰富的场景中,如用户画像、实时报表、股票K线、时空轨迹数据等。HBase底层存储是基于HDFS之上,所以使用HBase之前先搭建好Hadoop HDFS的环境,同时也需要搭建zookeeper集群服务。本文主要介绍HBase集群环境的搭建。
机器环境及软件包准备
-
三台Ubuntu 14.0.4系统的机器(master.com,node1.com,node2.com)。
-
各机器的JDK 1.8环境配置,配置/etc/profile文件。
-
各机器固定IP配置,以及hosts文件中的IP与主机名的映射。
-
各机器关闭防火墙,service iptables stop 。
-
节点机器之间配置ssh免密登录。
-
集群的时间要保持一致性,配置NTP。
-
设置系统的ulimit和nproc【建议】。
#hbase是数据库,同一时间使用很多的文件句柄,大多数Linux系统默认是1024,是不能满足的。如果不设置大一些,可能会出现下面的异常: java.io.IOException...(Too many open files) org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException #在hbase用户下/etc/security/limits.conf 文件中设置如下 supermap - nofile 32768 supermap soft/hard nproc 32000 #supermap代表hadoop和hbase的运行用户 #在hbase用户下/etc/pam.d/common-session文件中设置如下 session required pam_limits.so #注销系统再登录即可生效
注:准备阶段可以参考超图大数据环境搭建之基础环境搭建的博客。
Hadoop集群配置
-
在系统环境文件/etc/profile里配置HADOOP_HOME的环境,以及source。其值如下示例:
JAVA_HOME=/home/supermap/jdk1.8.0_171 JRE_HOME=${JAVA_HOME}/jre HADOOP_HOME=/home/supermap/hadoop PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export JAVA_HOME JRE_HOME PATH HADOOP_HOME
注:参考超图大数据环境搭建之Hadoop集群搭建的博客,hbase与hadoop存在版本兼容,hbase 1.3.X支持hadoop 2.7.X,本系列博客即采用的该版本。
zookeeper集群和hbase集群角色图
机器 | master.com机器 | node1.com机器 | node2.com机器 |
---|---|---|---|
IP | 192.168.31.137 | 192.168.31.138 | 192.168.31.139 |
角色 | zookeeper | zookeeper | zookeeper |
角色 | HMaster | regionserver | regionserver |
ZooKeeper集群配置
zookeeper是一个高度可靠的分布式协调服务框架。需要至少三个节点部署。
-
下载 zookeeper-3.4.13.tar.gz ,并解压到每台机器。
-
进入zookeeper/conf目录,复制zoo_sample.cfg并重命名为zoo.cfg,添加如下内容:
dataDir=/home/supermap/zookeeper/data #数据存储目录 dataLogDir=/home/supermap/zookeeper/log #日志存储目录 server.1=master.com:2888:3888 server.2=node1.com:2888:3888 server.3=node2.com:2888:3888
-
创建上一步中的data和log文件夹。
-
进入data目录,创建myid文件,填写上一步中server.X中的X值,每个机器填的值不一样,比如master.com机器中填:
1
-
以上步骤,三个机器同步配置,注意myid的值。
-
每个节点机器启动zk以及验证
bin/zkServer.sh start #启动 bin/zkServer.sh status #检查状态
HBase集群配置
-
下载 hbase-1.3.2-bin.tar.gz ,并解压,然后进入hbase/conf目录。
-
编辑regionservers文件,添加节点如下:
node1.com node2.com
-
编辑hbase-env.sh文件,配置环境值如下:
export JAVA_HOME=/home/supermap/jdk1.8.0_171 export HBASE_CLASSPATH=/home/supermap/hbase/lib export HBASE_HOME=/home/supermap/hbase export HADOOP_HOME=/home/supermap/hadoop export HBASE_LOG_DIR=/home/supermap/hbase/logs export HBASE_MANAGES_ZK=false #启用外部zookeeper服务
-
配置hbase-site.xml参数,值如下:
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://192.168.31.137:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master.info.port</name> <value>60000</value> </property> <property> <name>hbase.regionserver.handler.count</name> <value>100</value> </property> <property> <name>hbase.master</name> <value>192.168.31.137</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.31.137:2181,192.168.31.138:2181,192.168.31.139:2181</value> </property> <property> <name>hbase.coprocessor.user.region.classes</name> <value>org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor</value> </property> </configuration>
-
geomesa依赖库拷贝, 进入hbase/lib查看是否有geomesa-hbase-distributed-runtime_2.11-2.2.0.jar库,如果没有,下载 geomesa-hbase ,并将该jar拷贝到lib目录下。
-
每个节点机器同步上面的步骤配置即可。
-
hbase集群启动及检查结果如图。
bin/start-hbase.sh #启动hbase之前,需先启动各节点的zookeeper,以及启动hdfs服务 #ui地址 http://master.com:60000/master-status