Hbase是基于Hadoop的HDFS(分布式文件系统)的数据库,是apache下的顶级项目,研究大数据HBase很有必要深入了解。遂决心采用Hbase1.24stable版本搭建完全分布式环境。网络上相关的文章比比皆是,但一则版本比较旧,二则往往难以非常完整,因此决定自己写文以记之。本文详细描述HBase1.2.4完全分布式部署过程。
假定,Hadoop的完全分布式环境已经部署成功(稍后我会写关于此部分的文章),环境为:
|----------------------------------------------------------------------------------------------------|
| 133.16.157.35 master namenode |
| 133.16.157.34 slave1 secondaryNameNode, dataNode |
| 133.16.157.36 slave2 dataNode |
|-----------------------------------------------------------------------------------------------------|
方案规划为133.16.157.35作为HBase HMaster,34,36作为RegionServer,同时36还作为35的备份Backup-Master。
一、将安装包hbase-1.2.4-bin.tar.gz放置于/opt目录,解压缩
tar -zxvf hbase-1.2.4-bin.tar.gz
二、编辑/etc/hosts文件,增加所有节点的主机等
127.0.0.1 localhost
133.16.157.35 master
133.16.157.34 slave1
133.16.157.36 slave2
完事后,要source /etc/hosts
三、配置HBase环境变量,编辑/etc/profile
export HBASE_HOME=/opt/hbase-1.2.4
export PATH=$PATH:${HBASE_HOME}/bin
完事后,source /etc/profile
四、创建hbase临时文件夹(集群每个节点都需要创建)
mkdir /home/hadoop/hbase-data
sudo chmod a+rwx /home/hadoop/hbase-data
最好设置好读写权限,否则可能发生意想不到的问题
五、修改/opt/hbase-1.2.4/conf/hbase-env.sh,修改片段代码如下:
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/local/jdk1.7.0_80
# Extra Java CLASSPATH elements. Optional.
# export HBASE_CLASSPATH=
export HBASE_CLASSPATH=/opt/hbase-1.2.4/conf
# The maximum amount of heap to use. Default is left to JVM default.
# export HBASE_HEAPSIZE=1G
export HBASE_HEAPSIZE=4G
# Extra Java runtime options.
# Below are what we set by default. May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://wiki.apache.org/hadoop/PerformanceTuning
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmx4g -Xms4g -Xmn1g -XX:PermSize=128m -XX:MaxPermSize=128m"
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=false
六、修改配置文件/opt/hbase-1.2.4/conf/hbase-site.xml,内容如下:
<configuration>
<!--hbase存储在HADOOP HDFS上文件根目录路径-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://133.16.157.35:9000/hbase</value>
</property>
<!--hbase的Master-->
<property>
<name>hbase.master</name>
<value>hdfs://133.16.157.35:60000</value>
</property>
<!--采用分布式模式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--hbase临时文件存储目录,比如一些数据表的预分区信息等等-->
<property>
<name>hbase.tmp.dir</name>
<value>/home/hadoop/hbase-data/</value>
</property>
<!--zookeeper地址,端口不指定的话就默认为2181-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>133.16.157.35,133.16.157.34,133.16.157.36</value>
</property>
<!--zookeeper端口2181,其实可以不用配置,默认就是2181-->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!--zookeeper存储数据位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper-data</value>
</property>
<!--ZooKeeper 会话超时.HBase把这个值传递改zk集群,向他推荐一个会话的最大超时时间-->
<property>
<name>zookeeper.session.timeout</name>
<value>60000000</value>
</property>
<!--数据冗余份数,建议最少3份-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--这里设置hbase API客户端侧缓存值,大于此值就进行一次提交,统一配置为5M,对所有HTable都生效,那么客户端API就可不设置-->
<property>
<!--htable.setWriteBufferSize(5242880);//5M -->
<name>hbase.client.write.buffer</name>
<value>5242880</value>
</property>
<!--这里设置Master并发最大线程数-->
<property>
<name>hbase.regionserver.handler.count</name>
<value>300</value>
<description>Count of RPC Listener instances spun up on RegionServers.Same property is used by the Master for count of master handlers.</description>
</property>
</configuration>
七、修改/opt/hbase-1.2.4/conf/regionservers,内容如下
133.16.157.34
133.16.157.36
八、在/opt/hbase-1.2.4/conf下,新建文件backup-masters作为备份master,内容如下
133.16.157.36
九、远程复制分发安装文件到每一个服务器节点(注意:提前把每个服务器节点上的opt目录设置好读写执行权限)
scp -r /opt/hbase-1.2.4 hadoop@133.16.157.34:/opt/
scp -r /opt/hbase-1.2.4 hadoop@133.16.157.36:/opt/
十、启动和停止hbase,命令是在集群中任何机器执行都可以的,首先保证Hadoop要启动,zookeeper要启动。
进入目录,cd /opt/hbase-1.2.4/bin
启动,./start-hbase.sh
查看进程:jps回车
发现35上是HMaster,34上是regionServer,36上是regionServer和HMaster(备份)
十一、查看hbase管理界面http://133.16.157.35:16010
至此,HBase1.2.4完全分布式环境部署成功!