环境:CentOS 6.4,Hadoop 2.6.0,ZooKeeper 3.4.6,HBase 1.0.1.1
集群角色规划:
HostName HBase Role ZooKeeper HDP1 HDP2 Backup Master & RegionServer YES Master HDP3 RegionServer YES Slave HDP4 RegionServer YES Slave
1. 任意Master(HDP1)节点解压HBase
sudo tar zxvf hbase-1.0.1.1-bin.tar.gz -C /usr/local/
sudo mv hbase-1.0.1.1 hbase
sudo chown -R hdp:hdp hbase
2. 修改hbase-env.sh
vim conf/hbase-env.sh,出掉JAVA_HOME的注释,并修改为本地的JAVA_HOME
export JAVA_HOME=/usr/lib/jdk7
修改HBASE_MANAGES_ZK为false,默认为true,表示HBase托管zookeeper实例,如果是HBase独占的zookeeper,可以设定为true。
export HBASE_MANAGES_ZK=false
3. 修改hbase-site.xml
以下只配置几个必需要修改的项,其它的项使用默认值。hbase-site.xml的默认配置可以从获得。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://HDP2:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>HDP1,HDP2,HDP3,HDP4</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
hbase.rootdir:Region Servers共享的HBase持久化数据的存储地址。需要使用包含文件系统scheme的完全限定地址。
hbase.cluster.distributed:指定Hbase集群是否以分布式方式运行。
hbase.master.port:Master绑定的端口,包括backup-master.
hbase.zookeeper.property.dataDir:这个是ZooKeeper配置文件zoo.cfg中的dataDir。zookeeper存储数据库快照的位置。
hbase.zookeeper.quorum:ZooKeeper的所有成员服务器列表,服务器名之间用逗号分隔。
hbase.zookeeper.property.clientPort:这个是ZooKeeper配置文件zoo.cfg中的clientPort。ZooKeeper提供给客户端连接的端口,默认是2181。
4. 修改regionservers,将RegionServers写入。
vim conf/regionservers
HDP2,HDP3,HDP4
5. 修改backup-masters,将Backup Master写入。
vim conf/backup-masters
HDP2
6. 添加环境变量方便调用HBase
vim /etc/profile
#HBase Env
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin:$HBASE_HOME/conf
7. 将修改好的安装目录分发到所有节点,一并修改环境变量。
8. 启动HBase
在HDP1上调用start-hbase即可。
9.通过jps查看进程。
HDP1上有HMaster,HDP2上有HMaster和HRegionServer,HDP3和HDP4上是HRegionServer。
总结:
1. hbase.master.port需要指定,不然启动backup-master时会报Already in use的错误。
2. HMaster(包括backup-master)需要能够passwordless ssh到其它服务器
3. 我这里的ZooKeeper使用是偶数个节点,其实是不合理的,应该用奇数个节点。