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,如下图所示:
为保证集群的可靠性,要启动多个HMaster,我在ubuntu3上启动另一个HMaster。如下图所示:
CIO之家 www.ciozj.com 公众号:imciow