hbase 0.98.1集群安装 (转载)



本文将基于hbase 0.98.1讲解其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net/bluishglc/article/details/24593597,转载请注明出处!

1. 安装与配置

1.1. 前置条件

确保已经安装了hadoop并保证hadoop运行正常。关于hbase与hadoop的版本依赖关系,请参考:   https://hbase.apache.org/book/configuration.html#hadoop 关于java和hadoop的安装和配置请参考: http://blog.csdn.net/bluishglc/article/details/24591185 本文不再赘述,只给出/etc/profile中 关于JAVA_HOME,HADOOP_HOME和HBASE_HOME的配置参考:

  1. JAVA_HOME=/usr/java/jdk1.7.0_51  
  2. HADOOP_HOME=/usr/local/hadoop  
  3. HBASE_HOME=/usr/local/hbase  
  4. PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin  
  5. export JAVA_HOME HADOOP_HOME HBASE_HOME PATH  
JAVA_HOME=/usr/java/jdk1.7.0_51
HADOOP_HOME=/usr/local/hadoop
HBASE_HOME=/usr/local/hbase
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
export JAVA_HOME HADOOP_HOME HBASE_HOME PATH
注:为了在输入命令时避免同名的cmd文件的干扰,可以使用rm -f $HBASE_HOME/bin/*.cmd删除cmd文件。

1.2. 将安装包解压到/usr/local(或者/opt)下, 编辑conf/hbase-env.sh
 在开头部分添加:
  1. export JAVA_HOME=/usr/java/jdk1.7.0_51  
  2. export HBASE_LOG_DIR=/var/hbase/logs  
export JAVA_HOME=/usr/java/jdk1.7.0_51
export HBASE_LOG_DIR=/var/hbase/logs

关于在hbase-env.sh中设置 JAVA_HOME的原因与在 hadoop-env.sh和yarn-env.sh中设置 JAVA_HOME的原因是一样的,即使你的结点上已经正确设置了 JAVA_HOME,在*-env.sh中设置依然是必须的!

1.3. 配置${HBASE_HOME}/conf/hbase-site.xml

  1. <configuration>  
  2.     <property>  
  3.         <name>hbase.tmp.dir</name>  
  4.         <value>/var/hbase</value>  
  5.     </property>  
  6.     <property >  
  7.         <name>hbase.rootdir</name>  
  8.         <value>hdfs://YOUR-NAMENODE:9000/hbase</value>  
  9.     </property>  
  10.     <property >  
  11.         <name>hbase.cluster.distributed</name>  
  12.         <value>true</value>  
  13.     </property>  
  14.     <property>  
  15.         <name>hbase.zookeeper.quorum</name>  
  16.         <value>YOUR-ZNODE1,YOUR-ZNODE2,YOUR-ZNODE3</value>  
  17.     </property>  
  18. </configuration>  
<configuration>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/var/hbase</value>
    </property>
    <property >
        <name>hbase.rootdir</name>
        <value>hdfs://YOUR-NAMENODE:9000/hbase</value>
    </property>
    <property >
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>YOUR-ZNODE1,YOUR-ZNODE2,YOUR-ZNODE3</value>
    </property>
</configuration>

对于 hbase.master.info.bindAddress的配置需要注意,该项默认值是0.0.0.0,若改为某个结点的主机名或IP时,若在另外一个结点上使用start-hbase.sh启动hbase会失败,原因是使用 start-hbase.sh启动时,会将当前结点作为master,即在当前结点上启动 master服务,但如果 hbase.master.info.bindAddress是另外一个结点,那么另外一个主机的地址是肯定无法bind到当前主机上的,所以HMaster服务就起不来了。

1.4 配置slave结点列表

通常情况我们使用start-hbase.sh脚本来启动整个集群,查看该脚本可以知道,该脚本会基于配置文件在目标结点上启动master,zookeeper和regionserver,而regionserver的列表是在 ${HBASE_HOME}/conf/regionservers文件中配置的,一个结点一行。所以我们需要在此文件中添加所有的regionserver机器名或IP

1.5. 将上述配置的hbase安装程序重新打包复制到所有结点的对应位置再展开,同时记得修改每个结点的/etc/profile

2. 启动

2.1 关于账户设置

关于这一点,在账户设置上与hadoop是一致的,请参考 blog.csdn.net/bluishglc/article/details/24591185一文的3.1节!为了从简,本文直接使用root账户启动。

2.2 启动HBase集群

执行:

start-hbase.sh 

该命令可在任意结点上执行,不过需要注意的是:在哪个结点上执行该命令,该点将自动成为master(与zookeeper的配置不同,hbase的配置文件中不提供指定master的选项),如果需要多个back-up master,可在另外的结点上通过 hbase-daemon.sh start master单独启动master!

以下是单独启动某项服务的命令:

启动zookeeper

hbase-daemon.sh start zookeeper

启动master

hbase-daemon.sh start master

启动regionserver

hbase-daemon.sh start regionserver

所有服务启动后, 访问:


检查各结点的状态, 如都能访问表示HBase没有问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。


3. 常见问题和处理方法

3.1  org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.hadoop.hbase.ClockOutOfSyncException: Server xxxxxx,60020,1416564592512 has been rejected; Reported time is too far out of sync with master.  Time difference of xxxxx ms > max allowed of 30000ms

这是由于各节点的时间不同步引起的,解决这个问题需要在集群各几点上安装和启动NTP服务,并选取其中一台机器(往往是master节点)做为集群内的时间服务器,从而确保整个集群所有机器的时间是一致的。

3.2 FATAL [master:xxxxx:60000] master.HMaster: Unhandled exception. Starting shutdown.
org.apache.hadoop.security.AccessControlException: Permission denied: user=hbase, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x

这是由于启动HBase服务的用户没有在HDFS指定目录上(这里是根目录)进行写操作的权限。出现这种问题的常见原因是使用了某个专有帐号(比如hadoop)启动了hadoop的各项服务,而使用了另个某个专有帐号(比如hbase)去启动hbase,由于hbase在初次启动时需要在HDFS的根目录上建立一个hbase文件夹来存放数据,而对于hdfs来说,只有hadoop用户才有权在根目录上进行写操作。所以解决的方法就是使用hadoop用户在hdfs的根目录上建立一个hbase文件夹,同时把它的group和owner都改为hbase就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值