环境
ubuntu 14.04
hadoop 2.7.1 搭建过程,请参考我的上几篇文章
master 192.168.31.131
slave1 192.168.31.132
slave2 192.168.31.133
HBase依赖于zookeeper,故先搭建Zookeeper
Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
搭建Zookeeper
1.在zookeeper.apache.org上下载zookeeper-3.4.8.tar.gz
2.解压 tar -xzvf zookeeper-3.4.8.tar.gz
3.修改权限 sudo chown -R cms(ubuntu用户名) zookeeper-3.4.8
4.修改配置文件 /etc/profile,增加
export ZOOKEEPER_HOME=$HOME/zookeeper-3.4.8
export CLASSPATH=$ZOOKEEPER_HOME/lib
export PATH=$ZOOKEEPER_HOME/bin
5.对Zookeeper的配置文件的参数进行设置
进入zookeeper-3.4.5/conf
1)cp zoo_sample.cfg zoo.cfg
一是是修改dataDir的文件目录位置
2)在zookeeper下新建一个存放数据的目录
mkdir zookerperdata
3)vim zoo.cfg
dataDir=/home/cms/zookeeper-3.4.8/zookerperdata
二是配置id
server.1=192.168.31.131:2888:3888
server.2=192.168.31.132:2888:3888
server.3=192.168.31.133:2888:3888
注意上图的配置中master,slave1分别为主机名
在上面的配置文件中"server.id=host:port:port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。
4)创建myid
接下来在dataDir所指定的目录下(zookeeper-3.4.8/zookerperdata/)创建一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是上图中server.id中的id。例如:在服务器1中的myid的内容应该写入1。
vim myid
5)远程复制到slave1,slave2相同的目录下
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
6)修改slave1,slave2机器上的myid的值分别为2和3
启动ZooKeeper集群
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:
cms@slave1:~/zookeeper-3.4.8$ bin/zkServer.sh start
cms@slave2:~/zookeeper-3.4.8$ bin/zkServer.sh start```
如下图所示:
![master](http://upload-images.jianshu.io/upload_images/1908836-7a7a18d21e6a4ecf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![slave1](http://upload-images.jianshu.io/upload_images/1908836-ba8f4b1b6c5c9f81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
其中,QuorumPeerMain是zookeeper进程,启动正常。
如上依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
![](http://upload-images.jianshu.io/upload_images/1908836-b09d963015dd31d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1908836-7d6521a6c2fa500c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过上面状态查询结果可见,slave1是集群的Leader,其余的两个结点是Follower。
另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接,例如:
```zkCli.sh -server slave1:2181```
![](http://upload-images.jianshu.io/upload_images/1908836-01e92ca35045f795.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
quit退出
######停止zookeeper进程:
```zkServer.sh stop```
至此,Zookeeper集群安装大功告成!
######安装HBase
1.下载以及解压hbase-1.0.3.tar.gz
2.修改配置文件 /etc/profile,增加
export HBASE_HOME=$HOME/hbase-1.0.3
export CLASSPATH=$HBASE_HOME/lib
export PATH=$HBASE_HOME/bin
3.对Hbase的配置文件的参数进行设置
进入Hbase/conf
1)修改 hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_MANAGES_ZK=false // 告诉hbase使用外部的zk
2)修改hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/cms/zookeeper-3.4.8/zookerperdata</value>!-- 指定zk的数据文件夹 -->
</property>
</configuration>3)
vim regionservers```
添加内容
slave1
slave2
4)远程复制到slave1,slave2相同的目录下
scp -r hbase-1.0.3 cms@slave1:/home/cms/
scp -r hbase-1.0.3 cms@slave1:/home/cms/
启动Hbase
在启动hbase之前,要启动
1)启动hadoop集群
start-dfs.sh start-yarn.sh
2)分别启动zk(注意每个节点的zk都要启动)
zkServer.sh start
3)启动hbase,在主节点上运行:
start-hbase.sh```
jps
![](http://upload-images.jianshu.io/upload_images/1908836-63f89379701ddbfa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1908836-a3c0c21ebaf53ff7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####测试Hbase
![](http://upload-images.jianshu.io/upload_images/1908836-6529db009e02c583.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
显示:
![](http://upload-images.jianshu.io/upload_images/1908836-d47f836e2f7e4150.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1908836-5d71d532e4d6514b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
至此搭建成功
######参考文献
[Zookeeper集群环境安装过程详解](http://blog.csdn.net/cruise_h/article/details/19046357)
[hbase集群搭建](https://my.oschina.net/sucre/blog/700481)