HBASE安装
以下内容均假设用户已经安装了Java环境、zk和Hadoop。以下是本文档的测试环境:
•操作系统Debian 11 ; hbase :1.7.2。
•总共3台机器:host1,host2,host3。
• JDK版本为Oracle JDK1.8。
1. 环境准备
1.1 建立hbase用户(所有节点)
# useradd hbase
# passwd hbase
# 建立supergroup用户组(hdfs默认的超级用户组,如果你的机器上 没有的话需要手动建立):
# # groupadd supergroup
# 添加hbase用户到supergroup中:
# # groupmems -g supergroup -a hbase
2. 解压HBase安装包(任一节点)
把HBase安装包推送到所有机器上,解压并移动 到/usr/local/hbase目录。
tar zxvf hbase-1.2.2-bin.tar.gz mv hbase-1.2.2 /usr/local/hbase
3. 配置环境变量
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
4. 配置hbase-env.sh
4.1 关闭自带的ZooKeeper
#Tell HBase whether it should manage it’s own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false
首先你需要知道:HBase自带了一个ZooKeeper,而且会默认启动自己的ZooKeeper。如果HBase用的是自己的ZooKeeper,那你在jps中看到的ZooKeeper 名字是HQuorumPeer。如果你使用的是外部的ZooKeeper集群,那么它的 名字叫 QuorumPeer 或者 QuorumPeerMain。
安装HBase有一个前提就是你一定要有ZooKeeper,其实如果你没有ZooKeeper的话,HBase会自带一个 ZooKeeper。但是强烈不建议使用HBase自带的Zookeepor,因为生产环境下Zookeepor集群是Hadoop、HBase等很多软件公用的.
是否开启HBase自带的ZooKeeper开关
是否开启自带的ZooKeeper由conf/hbase-env. sh中定义的 HBASE_MANAGES_ZK变量定义。这个变量默认为true,也就是开启自带的 ZooKeeper
ZooKeeper的配置在哪里?如果你用的是独立部署的ZooKeeper的配置,它是在zoo.cfg文件里。如果你用的是HBase自带的ZooKeeper,那么它就在hbase-site.xml 里面配置。它们的区别是,在hbase-site. xml中的ZooKeeper相关配置 项就是在zoo.cfg中对应的属性名前面加上hbase.zookeeper.property. 前缀。比如在zoo.cfg中的配置项dataDir,在hbase-site.xml中就叫 hbase.zookeeper.property.dataDir.
4.2 配置 HBASE_CLASSPATH
HBase会根据HDFS的客户端配置来做一些策略调整,比如HBase默认存储的备份数是3,当你把dfs. replication数设置为5的时候,如果 HBase能读到这个配置,它会自动把备份数提高到5。让HBase读取到HDFS的配置有三种方式:
把HADOOP_C0NF_DIR添加到HBASE_CLASSPATH中(推荐)。
把HDFS的配置文件复制一份到HBase的conf文件夹下,或者直 接建一个hdfs-site. xml的软链接到hbase/conf下。
把HDFS的几个配置项直接写到hbase-site. xml文件里面去。
我们现在采用把HADOOP_CONF_DIR添加到HBASE_CLASSPATH里面去的方式。我的Hadoop配置文件夹路径是/usr/local/hadoop/etc/hadoop,所以我在hbase-env.sh中找到这行:
# Extra Java CLASSPATH elements. Optional.
# export HBASE_CLASSPATH=
将其改成:
export HBASE CLASSPATH=/usr/local/hadoop/etc/hadoop
4.3 修改HBase日志输出文件夹
默认的日志文件夹是$HBASE_HOME/logs,事先手动创建目录
# Where log files are stored. $HBASE_HOME/logs by default.
# export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_LOG_DIR=/data/logs/hbase
5. 配置hbase-site.xml
编辑conf/hbase-site.xml。
hbase存储根目录(hbase.rootdir)
HDFS有HA和没有HA的情况下这 个路径的写法是不一样的。
如果你的HDFS没有HA
<property>
<name>hbase.rootdir</name>
<value>hdfs://host1:9000/hbase</value>
</property>
如果你的HDFS有HA,这里就写成:
<property>
<name>hbase.rootdir</name>
<value>hdfs://<clustername>/hbase</value>
</property>
其中〈clustername〉请替换为你的集群id,比如我的集群id是 mycluster。HBase会通过集群id,连接 ZooKeeper来查询namenode的情况。
分布式开关(hbase.cluster.distributed )
添加这个配置项,并设置成true来告诉HBase现在要按分布式模式启动.
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
ZooKeeper集群地址 ( base.zookeeper.quorum )
<property>
<name>hbase.zookeeper.quorum</name>
<value>host1,host2,host3</value>
</property>
6. 推送到所有节点上
先把之前做好的配置文件(hbase-site.xml和hbase-env.sh)推送 (或者复制)到所有机器上.
scp -r /usr/local/hbase host2:/usr/local/
scp -r /usr/local/hbase host3:/usr/local/
7. 启动Hbase集群
启动Master
我们先挑选集群中的一台机器作为Master,执行以下命令:
$ hbase-daemon.sh start master
然后用jps:
2705 HMaster
启动RegionServer
登录到所有你希望启动RegionServer的机器上,执行以下命令:
/hbase-daemon.sh start regionserver
启动后用jps看看是否启动了RegionServer:
2871 HRegionServer
如果失败,可以通过查看日志定位解决。
8. HBase Web控制台
接下来,我要带你们去看HBase的 Web控制台,master:16010 在那,你们可以一目了然地看到集群的各项指标,比如有多少RegionServer、有多少表、有多少请求等。HBase启动后会同时启动一个Web控制台.