Hbase集群搭建
网友 CSDN博客

Hbase集群搭建

1.        系统配置

Ø  电脑1(LenovoE420),win7 64位系统,8G内存,此电脑虚拟机上运行两个ubuntu14.10系统。

Ø  电脑2(LenovoSL410),win7 64位系统,4G内存,此电脑虚拟机上运行一个ubuntu14.10系统。

Ø  虚拟机:Vmware10.0

Ø  Hadoop2.7.0

Ø  Zookeeper3.4.6

Ø  Hbase-0.98.12.1-hadoop2-bin.tar.gz

2.        集群规划

由于本人电脑配置太差,经过实际操作发现E420最多只能运行两台虚拟机ubuntu系统,所以就在另一台电脑SL410上搭建了另一个虚拟机ubuntu系统,所以hbase也就在这两台电脑的三台虚拟机上搭建,其具体规划如下:

主机名

IP

安装软件

运行的进程

Ubuntu1

192.168.1.120

Jdk,Hadoop

Zookeeper,

hbase

NameNode、DFSZKFailoverController、DataNode、NodeManager、JournalNode、QuorumPeerMain

HMaster,HRegionServer

Ubuntu2

192.168.1.121

Jdk,hadoop

Zookeeper,

hbase

NameNode,DFSZKFailoverController,DataNode、NodeManager、JournalNode、QuorumPeerMain,

HRegionServer

Ubuntu3

192.168.1.122

Jdk,hadoop

Zookeeper,

hbase

DataNode、NodeManager、JournalNode、QuorumPeerMain,ResourceManager,

HMaster,HRegionServer

 

3.        Hbase安装包下载

在网址http://mirrors.cnnic.cn/apache/hbase/去下载hbase的最新下载包,hbase以前的版本都有区分适合hadoop1和hadoop2两种版本的,要根据自己实际的hadoop版本来下载相应的hbase版本。而在最新的stable版本1.0.1.1中没有区分hadoop的版本,我想应该最新的版本适合hadoop1又适合hadoop2吧(这个我没有测试,我刚开始下载的也是1.0.1.1版本,可是由于我操作的失误,集群搭建失败,我以为这个版本不适合,才下载了0.98.12.1版本跟hadoop2对应的hbase-0.98.12.1-hadoop2-bin.tar.gz)。

4.        Hbase安装包解压

Ø  解压:tar –zxvfhbase-0.98.12.1-hadoop2-bin.tar.gz

Ø  重命名:mv  hbase-0.98.12.1-hadoop2 hbase

5.        Hbase集群配置

1)        拷贝hadoop安装目录中的的hdfs-site.xml和core-site.xml两个文件到hbase安装路径下的conf文件夹中。因为hadoop2的HA体系里有两个namenode,他们有一个统一的名字nameservice,也就是我们在hadoop2集群搭建中配置的ns1。我们的hbase最终要将数据存储在hdfs中,这就要求我们告知hbase hdfs中ns1和每一个namenode节点的对应关系,而这个对应关系就是我们在hadoop中配置的这两个文件中。

Ø  跳转到hadoop安装路径下的etc/hadoop目录中

cd  /home/brian/hadoop/hadoop/etc/hadoop

Ø  复制hdfs-site.xml,core-site.xml到hbase安装路径下的conf文件夹中

Ø  cp  -r hdfs-site.xmlcore-site.xml /home/brian/hadoop/hbase/conf

2)        修改hbase-env.sh

Ø  修改jdk的安装目录

exportJAVA_HOME=/home/brian/hadoop/jdk

Ø  告知hbase使用外部zk,hbase默认是使用hbase内部zk的,我们这边只需把以前的ture改成false

ExportHBASE_MANAGES_ZK=false

Ø  修改HBASE_PID_DIR路径,网上很多的安装方法中没有这一条,可是我经过实践发现,这个必须修改,因为默认情况下,HBASE_PID_DIR文件保存在/tmp目录下,而/tmp目录下的文件很容易丢失,所以这就有很大可能导致停止hbase时报错:stopping hbasecat:/tmp/hbase-mango-master.pid:No Such file ordirectory

跳转到hbase安装目录:cd  /home/brian/hadoop/hbase

创建文件夹pids:  mkdir pids

修改路径:exportHBASE_PID_DIR=/home/brian/hadoop/hbase/pids

3)        修改hbase-site.xml,将下边内容拷贝到hbase-site.xml中。

<configuration>

                   <!-- 指定hbase在HDFS上存储的路径 -->

        <property>

               <name>hbase.rootdir</name>

               <value>hdfs://ns1/hbase</value>

        </property>

                   <!-- 指定hbase是分布式的 -->

        <property>

               <name>hbase.cluster.distributed</name>

               <value>true</value>

        </property>

                   <!-- 指定zk的地址,多个用“,”分割 -->

        <property>

               <name>hbase.zookeeper.quorum</name>

                <value>ubuntu1:2181,ubuntu2:2181,ubuntu3:2181</value>

        </property>

         </configuration>

4)        修改regionservers,这个文件里配置HRegionServer的路径,由于我们的集群小,HRegionServer分别运行在ubuntu1,ubuntu2,ubuntu3个节点中。将下边内容拷贝到

Regionservers中

ubuntu1

ubuntu2

ubuntu3

6.        拷贝hbase到其他节点,由于hbase安装安装包中有很多的docs文件,为了减少传输时间,我们可以将hbase安装包里的docs文件删除掉。

scp  -r /home/brian/hadoop/hbase root@ubuntu2:/home/brian/hadoop

scp  -r /home/brian/hadoop/hbaseroot@ubuntu3:/home/brian/hadoop

7.        同步zookeeper链接信息,这个我觉得很重要,因为我按照上边的步骤部署了hbase集群之后,在ubuntu1中启动hbase,发现如果我不启动hadoop而只启动hbase,那么通过jps可以发现hbase一切正常(在ubuntu1中有HMaster,HRegionServer连个进程,在ubuntu2和ubuntu3中有HRegionServer进程),可是当我一启动hadoop,则ubuntu1中的HMaster消失不见了。为了解决这个问题,我重新格式化hdfs,重新部署hbase很多遍,都不能解决,最后在一个论坛中发现说这种情况有两种可能:一是没有更改hbase-env.xml中的PID目录(这个我们在上边已经说明过了),二是zookeeper链接信息过期了,需要进入zookeeper客户端,用zookeeper的rmr 命令删除掉/base然后重启zk和hbase就行了。我按照这个方法,一试OK。

8.        同步各节点时间,这个也很重要,刚开始我没注意这个,搭好集群,用jps指令查看,发现ubuntu1上有Hmaster,HRegionServer两个进程,ubuntu2上有HRegionServer进程,而ubuntu3上没有Hmaster,也没有HRegionServer,发生了什么事?进入ubuntu3的 log中查看发现是因为ubuntu3系统上的时间与其他两个节点的时间差距大于默认值,导致ubuntu3上HRegionServer进程自动关闭。

9.        启动所有的hbase,由于hbase是数据库,要将数据存储在hdfs中,并且要受zookeeper的管理,所以在启动hbase之前首先要启动zookeeper和hadoop集群

Ø  分别启动各个节点的zk

ssh  ubuntu1

cd  /home/brian/hadoop/zk/bin

./zkServer.sh  start

 

ssh   ubuntu2

cd  /home/brian/hadoop/zk/bin

./zkServer.sh start

./zkServer.sh status(启动两个zk节点就可以查看zk状态,验证是否启动成功)

 

ssh ubuntu3

cd            /home/brian/hadoop/zk/bin

./zkServer.sh start

./zkServer.sh status

Ø  启动hdfs,在ubuntu1上启动就行了

ssh ubuntu1

cd    /home/brian/hadoop/hadoop/sbin

./start-dfs.sh

jps (在三个节点上都用jps指令查看hdfs是否按照我们当初的部署启动成功)

Ø  启动hbase ,在主节点上(这里是ubuntu1)启动就行了

cd  /home/brian/hadoop/hbase/bin

start-hbase.sh

jps(在三个节点上都用jps指令查看)

10.    通过浏览器访问hbase管理页面,端口号为60010

例如我的访问网址是:http://192.168.1.120:60010,如下图所示:

blob.png

为保证集群的可靠性,要启动多个HMaster,我在ubuntu3上启动另一个HMaster。如下图所示:

blob.png

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢