Skip to content

HBase Install

NameVersiondownload
HBase1.2.1https://archive.apache.org/dist/hbase/1.2.1/hbase-1.2.1-bin.tar.gz

其它版本可到https://archive.apache.org/dist/hbase/下载。

解压hbase安装包

sh
tar -zxvf ~/hbase-1.2.1-bin.tar.gz -C /opt/
tar -zxvf ~/hbase-1.2.1-bin.tar.gz -C /opt/

进行软链接:

sh
ln -s /opt/hbase-1.2.1 /opt/hbase
ln -s /opt/hbase-1.2.1 /opt/hbase

配置环境变量

sh
vim /etc/profile
vim /etc/profile
sh
# set hbase env
export HBASE_HOME=/opt/hbase 
export PATH=$HBASE_HOME/bin:$PATH
# set hbase env
export HBASE_HOME=/opt/hbase 
export PATH=$HBASE_HOME/bin:$PATH

使其生效:

sh
source /etc/profile
source /etc/profile

文件配置

hbase-env.sh

sh
vim $HBASE_HOME/conf/hbase-env.sh
vim $HBASE_HOME/conf/hbase-env.sh

找到JAVA_HOME,注释掉,改为如下:

sh
# export JAVA_HOME=/usr/java/jdk1.6.0/
export JAVA_HOME=/opt/jdk
# export JAVA_HOME=/usr/java/jdk1.6.0/
export JAVA_HOME=/opt/jdk

找到HBASE_MANAGES_ZK,注释掉,改为如下:

值为true使用HBase自带的ZooKeeper,值为false使用在Hadoop上装的ZooKeeper:

sh
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=false
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=false

找到HBASE_CLASSPATH,将hbase类路径改为你hadoop的配置文件目录:

sh
# export HBASE_CLASSPATH=
export HBASE_CLASSPATH=/opt/hadoop/etc/hadoop
# export HBASE_CLASSPATH=
export HBASE_CLASSPATH=/opt/hadoop/etc/hadoop

修改hbase-site.xml

sh
vim $HBASE_HOME/conf/hbase-site.xml
vim $HBASE_HOME/conf/hbase-site.xml
xml
<!-- hbase.rootdir  # 使用8020端口 -->
<!-- 注意:这里的端口需要和hadoop中的core-site.xml中的fs.defaultFS一致 -->
<property> 
       <name>hbase.rootdir</name> 
       <value>hdfs://master:8020/hbase</value> 
       <description>The directory shared by region servers.</description> 
</property> 
<!-- hbase.master.info.port  # 使用master节点60010端口 -->
<property> 
        <name>hbase.master.info.port</name> 
        <value>60010</value>
</property> 
<!-- hbase.zookeeper.property.clientPort  # 使用master节点2181端口 -->
<property> 
       <name>hbase.zookeeper.property.clientPort</name> 
       <value>2181</value>
       <description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect. 
       </description> 
</property> 
<!-- zookeeper.session.timeout zookeeper超时时间 -->
<property> 
       <name>zookeeper.session.timeout</name> 
       <value>120000</value>
</property> 
<!-- hbase.zookeeper.quorum  # ZooKeeper管理节点 -->
<!-- 这里根据你zookeeper管理节点修改 -->
<property> 
       <name>hbase.zookeeper.quorum</name>
       <!-- <value>master,slave1,slave2</value> -->
       <value>master</value>
</property> 
<!-- hbase.tmp.dir  # HBase临时文件路径 -->
<property> 
       <name>hbase.tmp.dir</name> 
       <value>/opt/hbase/tmp</value>  
</property> 
<!-- hbase.cluster.distributed  # 使用分布式HBase -->
<property> 
       <name>hbase.cluster.distributed</name> 
       <value>true</value>  
</property>
<!-- hbase.rootdir  # 使用8020端口 -->
<!-- 注意:这里的端口需要和hadoop中的core-site.xml中的fs.defaultFS一致 -->
<property> 
       <name>hbase.rootdir</name> 
       <value>hdfs://master:8020/hbase</value> 
       <description>The directory shared by region servers.</description> 
</property> 
<!-- hbase.master.info.port  # 使用master节点60010端口 -->
<property> 
        <name>hbase.master.info.port</name> 
        <value>60010</value>
</property> 
<!-- hbase.zookeeper.property.clientPort  # 使用master节点2181端口 -->
<property> 
       <name>hbase.zookeeper.property.clientPort</name> 
       <value>2181</value>
       <description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect. 
       </description> 
</property> 
<!-- zookeeper.session.timeout zookeeper超时时间 -->
<property> 
       <name>zookeeper.session.timeout</name> 
       <value>120000</value>
</property> 
<!-- hbase.zookeeper.quorum  # ZooKeeper管理节点 -->
<!-- 这里根据你zookeeper管理节点修改 -->
<property> 
       <name>hbase.zookeeper.quorum</name>
       <!-- <value>master,slave1,slave2</value> -->
       <value>master</value>
</property> 
<!-- hbase.tmp.dir  # HBase临时文件路径 -->
<property> 
       <name>hbase.tmp.dir</name> 
       <value>/opt/hbase/tmp</value>  
</property> 
<!-- hbase.cluster.distributed  # 使用分布式HBase -->
<property> 
       <name>hbase.cluster.distributed</name> 
       <value>true</value>  
</property>

hbase.rootdir:该项配置了数据写入的目录,默认hbase.rootdir是指向/tmp/hbase${user.name},也就说你会在重启后丢失数据(重启的时候操作系统会清理/tmp目录)。

hbase.zookeeper.property.clientPort:指定zk的连接端口 zookeeper.session.timeout:RegionServer与ZooKeeper间的连接超时时间。

当超时时间到后,ReigonServer会被ZooKeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.

hbase.zookeeper.quorum:默认值是localhost,列出zookeepr ensemble中的servers hbase.master.info.port:浏览器的访问端口

修改regionservers文件

sh
vim $HBASE_HOME/conf/regionservers
vim $HBASE_HOME/conf/regionservers

删除localhost,每一行写一个slave节点主机机器名

row
master
master

创建hbase.tmp.dir目录

sh
mkdir $HBASE_HOME/tmp
mkdir $HBASE_HOME/tmp

同步安装文件到从节点

sh
scp -r /opt/hbase slave1:/opt/
scp -r /opt/hbase slave1:/opt/
sh
scp -r /opt/hbase slave2:/opt/
scp -r /opt/hbase slave2:/opt/

修改hbase权限并切换hadoop用户(可选)

TIP

从节点的以此类推

sh
chown -R hadoop:hadoop /opt/hbase/
chown -R hadoop:hadoop /opt/hbase/
sh
su - hadoop
su - hadoop

启动HBase

先启动Hadoop,然后启动ZooKeeper,最后启动HBase

需要确保Hadoop和ZooKeeper已经启动

sh
start-all.sh
start-all.sh
sh
zkServer.sh start
zkServer.sh start

启动HBase:

sh
start-hbase.sh
start-hbase.sh
row
[root@master conf]# start-hbase.sh
starting master, logging to /opt/hbase/logs/hbase-root-master-master.centos.com.out
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hbase-1.2.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
master: starting regionserver, logging to /opt/hbase/bin/../logs/hbase-root-regionserver-master.centos.com.out
master: OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
master: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
[root@master conf]#
[root@master conf]# start-hbase.sh
starting master, logging to /opt/hbase/logs/hbase-root-master-master.centos.com.out
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hbase-1.2.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
master: starting regionserver, logging to /opt/hbase/bin/../logs/hbase-root-regionserver-master.centos.com.out
master: OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
master: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
[root@master conf]#

访问浏览器地址

访问浏览器地址: http://master:60010