HBase的数据存储在Hadoop上,而ZooKeeper负责HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理等,所以安装HBase首先需要安装Hadoop和ZooKeeper。
1.ZooKeeper安装
创建文件夹及复制解压安装包
sudo mkdir /usr/local/src/zookeeper
sudo chown -R ucmed:ucmed /usr/local/src/zookeeper
cd /usr/local/src/zookeeper
cp /tmp/apache-zookeeper-3.7.0-bin.tar.gz ./
tar -xzvf ./apache-zookeeper-3.7.0-bin.tar.gz
sudo mkdir -p /opt/zookeeper/data
sudo mkdir -p /opt/zookeeper/logs
sudo chown -R ucmed:ucmed /opt/zookeeper/
修改环境变量
sudo vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/src/zookeeper/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
修改zoo.cfg配置文件
cd $ZOOKEEPER_HOME/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
ticketTime=2000
clientPort=2181
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
initLimit=10
syncLimit=5
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
创建myid文件
vim /opt/zookeeper/data/myid
为 slave1 和 slave2 配置 zoo.cfg 和 myid 文件。zoo.cfg文件内容相同, slave1 的 myid 文件内容为 2, slave2 的 myid 文件内容为 3。并分发zookeeper安装包
scp -r /usr/local/src/zookeeper/apache-zookeeper-3.7.0-bin/ slave1:/usr/local/src/zookeeper
scp -r /usr/local/src/zookeeper/apache-zookeeper-3.7.0-bin/ slave2:/usr/local/src/zookeeper
集群启动
在每台机器上
zkServer.sh start
zkServer.sh status
2.复制安装包
sudo mkdir /usr/local/src/hbase
sudo chown -R ucmed:ucmed /usr/local/src/hbase
cd /usr/local/src/hbase
cp /tmp/hbase-2.4.9-bin.tar.gz ./
tar -xzvf hbase-2.4.9-bin.tar.gz
cd /usr/local/src/hbase/hbase-2.4.9
3.配置环境变量
sudo vim /etc/profile
export HBASE_HOME=/usr/local/src/hbase/hbase-2.4.9
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
4.修改配置文件
cd /usr/local/src/hbase/hbase-2.4.9/conf
vim hbase-env.sh
#配置Java环境变量
export JAVA_HOME=/usr/local/src/jdk/jdk1.8.0_311
#关闭hbase自带的zookeeper
export HBASE_MANAGES_ZK=false
vim hbase-site.xml
<configuration>
<!-- 此目录regionserver共享的目录,用来持久存储HBase的数据,其默认值为:${hbase.tmp.dir}/hbase,如果不修改默认值,数据将会在集群重启时丢失。 -->
<property>
<name>hbase.rootdir</name>
<!-- 设置Hadoop master-->
<value>hdfs://master:8020/hbase</value>
</property>
<!-- 设置hbase集群为分布式集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 设置zookeeper集群,用英文逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2:2181</value>
</property>
<!-- hbase备份的副本数,不能超过datanode的节点数。 hbase的数据备份数需要再hbase-site.xml配置文件中单独设置,否则hbase写入的数据regionServer只会保存一份! -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- Zookeeper元数据的存储目录,需要和Zookeeper的zoo.cfg 配置的一致 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zookeeper/data</value>
</property>
<!-- 指定HBase Master Web页面访问端口,默认端口号16010 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!-- 指定HBase RegionServer Web页面访问端口,默认端口号16030 -->
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
<!-- 解决启动HMaster无法初始化WAL的问题 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
<!-- 支持phoenix的namespace -->
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
</configuration>
vim regionservers
slave1
slave2
5.分发hbase配置到slave节点并配置环境变量
scp -r /usr/local/src/hbase/hbase-2.4.9 slave1:/usr/local/src/hbase
scp -r /usr/local/src/hbase/hbase-2.4.9 slave2:/usr/local/src/hbase
6.启动hbase
cd /usr/local/src/hbase/hbase-2.4.9/bin
./start-hbase.sh
7.测试创建表
hbase shell
create 'hbase_test','column_family_1', 'column_family_2', 'column_family_3'