HBase 0.98 分布式集群安装详解

本文详细介绍了如何在CentOS 6.5环境下安装配置HBase 0.98版本,并通过多种方式验证安装是否成功。包括环境搭建、配置文件修改、启动过程及验证步骤。

概述

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。


前言

这篇博客应该很早就发表了,只是当时环境搭建好了之后没有及时做笔记,后来又不想重新搭建,所以才拖到今天。还有就是这篇博客安装的是 Hbase-0.98 的版本,与之前说要安装 0.96 的说明不吻合,这里统一说明,之前的博客就不更改了。还有一点就是,本文的安装过程很顺,没有出现什么启动不了,或是运行异常的行为。如果你在安装的过程出现了一些不好的事情,那么你可能会在本文中找到一些蛛丝马迹,也可能一无所获。只是我希望你可以理解到,本文并非胡编乱邹。


版权说明

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
本文作者:Q-WHai
发表日期: 2016年6月8日
本文链接:https://qwhai.blog.youkuaiyun.com/article/details/51607646
来源:优快云
更多内容:分类 >> 大数据之 Hadoop


环境说明

  1. CentOS release 6.5 (Final) ( master )
  2. CentOS release 6.5 (Final) ( slave1 )
  3. CentOS release 6.5 (Final) ( slave2 )
  4. JDK-1.8.0_92 ( Oracle )
  5. Hadoop-2.2.0
  6. Zookeeper-3.4.5
  7. 虚拟机环境: VMware® Workstation 12 Pro
序号虚拟机 IPhostname
1172.16.2.117master
2172.16.2.115slave1
3172.16.2.116slave2

HBase 环境搭建

下载

$ tar -zxvf hbase-0.98.18-hadoop2-bin.tar.gz
$ mv hbase-0.98.18-hadoop2-bin ~/hbase

配置环境变量

$ sudo vim /etc/profile
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:${HBASE_HOME}/bin
$ source /etc/profile

同步集群时间

查看各台机器的时间

$ date

如果时间是一致的,下面的这一步就不用进行了。如果时间不一致可通过下面的步骤将时间统一。

$ sudo ntpdate cn.pool.ntp.org

若没有安装ntpdate;先安装ntpdate工具。机器之间的时间如果不统一,后果就是 HMaster 进程起不起来(未测试过)。

修改配置文件

这里主要需要修改的文件有如下几个

序号文件名上层路径
1hbase-env.sh${HBASE_HOME}/conf/
2hbase-site.xml${HBASE_HOME}/conf/
3regionservers${HBASE_HOME}/conf/

hbase-env.sh

添加如下内容

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92
export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=false

HBASE_MANAGES_ZK默认是true,说明是让Hbase 单独管理 zookeeper。如果你机器上已经安装好了分布式Zookeeper,那么可以设定为fals;否则就不需要修改。

hbase-site.xml

$ vim hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <!-- 指定 hbase 在 HDFS 上存储的路径,保持与 core-site.xml 中的 hdfs 路径一致 -->
    <property>
         <name>hbase.rootdir</name>
         <value>hdfs://master:9000/hbase</value>
    </property>
	
    <!-- 指定 hbase 是分布式的 -->
    <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
    </property>
	
    <!-- 指定 zk 的地址,多个用“,”分割 ,hbase.zookeeper.quorum 的个数必须是奇数,至少是3个-->
    <property>
            <name>hbase.zookeeper.quorum</name><!-- quorum : 法定人数 -->
            <value>master:2181,slave1:2181,slave2:2181</value>
    </property>

</configuration>

regionservers

$ vim regionservers
master
slave1
slave2

下发

$ scp -r ~/hbase/ slave1:~/hbase
$ scp -r ~/hbase/ slave2:~/hbase

并修改各节点的 /etc/profile 文件内容。

启动

在 master 中启动 master 进程

$ hbase-daemon.sh start master
starting master, logging to /home/hadoop/hbase/logs/hbase-hadoop-master-master.out

在两个 slaves 中启动 master 进程

[hadoop@slave1 ~]$ hbase-daemon.sh start regionserver
starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave1.out
[hadoop@slave2 ~]$ hbase-daemon.sh start regionserver
starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave2.out

或者直接使用

$ start-hbase.sh
starting master, logging to /home/hadoop/hbase/logs/hbase-hadoop-master-master.out
slave2: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave2.out
slave1: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave1.out
master: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-master.out

验证

方式一:jps
如果你使用 jps 命令可以查看到如下的这些进程,那么 ok, 你的配置基本没啥问题了。

[hadoop@master conf]$ jps
4273 QuorumPeerMain
3875 SecondaryNameNode
4614 HMaster
4824 Jps
4011 ResourceManager
3709 NameNode
4734 HRegionServer
[hadoop@slave1 ~]$ jps
3122 HRegionServer
2948 QuorumPeerMain
2824 NodeManager
3273 Jps
2731 DataNode
[hadoop@slave2 ~]$ jps
2818 NodeManager
2948 QuorumPeerMain
2724 DataNode
3501 Jps
3358 HRegionServer

方式二:网页验证
你也可以在节点主机的 web 浏览器里输入 master:60010 进行验证
这里写图片描述
如果你的界面里也有类似的界面,那么就说明 hbase 已经成功安装了。

方式三:Shell
上面的两种还都只是验证了你的 Hbase 是否安装成功,却不能说明它一定可用。这时需要进行 Shell 验证。主要验证步骤参见下面。

shell

可以使用 hbase shell 进入

$ hbase shell
2016-06-07 16:25:07,525 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.18-hadoop2, rc26c554ab3a8deecf890873bf6b1b4c90fa001dc, Fri Mar 18 19:19:59 PDT 2016

hbase(main):001:0>

检查状态

hbase(main):001:0> status
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load

创建数据表

hbase(main):002:0> create 'student', 'name', 'sex', 'age'
0 row(s) in 0.8520 seconds

=> Hbase::Table - student

查看数据表

hbase(main):003:0> list
TABLE
student
1 row(s) in 0.0450 seconds

=> ["student"]

Ref

  • http://www.iteblog.com/archives/902
  • https://segmentfault.com/q/1010000000606670
  • http://www.aboutyun.com/thread-5882-1-1.html

征集

如果你也需要使用ProcessOn这款在线绘图工具,可以使用如下邀请链接进行注册:
https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

<think>好的,我需要帮助用户了解如何在完全分布式环境下安装和部署HBase集群。首先,我需要回顾用户提供的引用内容,确保回答准确。 用户提供了四个引用,主要涉及HBase集群安装步骤、依赖关系、配置文件和常见错误处理。根据这些信息,我应该分步骤讲解安装流程,强调Hadoop和Zookeeper的依赖,特别是版本兼容性问题。此外,需要提到配置hbase-site.xml和hbase-env.sh的注意事项,以及启动和停止集群的顺序,避免进程卡住的问题。还要解决类路径错误,如引用3提到的修改hbase文件添加依赖包。 接下来,我需要按照逻辑组织步骤:环境准备、Hadoop和Zookeeper安装HBase配置、启动与验证、注意事项。每个步骤中要包含关键命令和配置示例,使用代码块展示。同时,要提醒用户注意停止集群的正确顺序,避免强制杀进程。最后生成相关问题,覆盖兼容性、Zookeeper配置、错误处理、性能优化和应用场景。 需要检查是否遗漏了任何关键点,例如Hadoop集群的预先搭建、配置文件的详细修改、端口号等。确保所有引用内容都被合理引用,标注正确的引用标识。避免使用用户不可见的格式,保持回答结构清晰,符合用户要求的可见层指导。</think>### HBase完全分布式集群安装部署教程 #### 一、环境准备 1. **基础依赖** HBase集群必须建立在HadoopHDFS)基础之上,需预先完成Hadoop完全分布式集群部署,并确保两者版本兼容性[^2]。建议使用HBase 2.4.x搭配Hadoop 3.x版本。 2. **Zookeeper配置** 完全分布式环境需单独部署Zookeeper集群(至少3节点),并在HBase配置中关闭自带的Zookeeper[^4]: ```bash export HBASE_MANAGES_ZK=false # 在hbase-env.sh中配置 ``` #### 二、关键配置文件 1. **hbase-site.xml** 配置核心参数(位于`$HBASE_HOME/conf/`目录): ```xml <configuration> <!-- HDFS存储路径 --> <property> <name>hbase.rootdir</name> <value>hdfs://your-namenode:8020/hbase</value> </property> <!-- 启用分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- Zookeeper集群地址 --> <property> <name>hbase.zookeeper.quorum</name> <value>zk-node1,zk-node2,zk-node3</value> </property> </configuration> ``` 2. **regionservers文件** 添加所有RegionServer节点主机名: ```text node1 node2 node3 ``` #### 三、集群启动流程 1. **启动顺序** ```bash # 先启动Hadoop集群 start-dfs.sh && start-yarn.sh # 再启动Zookeeper集群 zkServer.sh start # 在所有Zookeeper节点执行 # 最后启动HBase start-hbase.sh ``` 2. **访问验证** 通过浏览器访问`http://master-node:16010`查看集群状态[^3]。 #### 四、常见问题处理 1. **类路径错误** 若出现`Error: Could not find or load main class`,需编辑`$HBASE_HOME/bin/hbase`文件,在第161行添加HBase自身依赖路径[^3]: ```bash HBASE_CLASSPATH="$HBASE_HOME/lib/*" ``` 2. **进程停止卡顿** 停止集群时必须按顺序执行: ```bash stop-hbase.sh → stop-zookeeper.sh → stop-hadoop.sh ``` 违反顺序可能导致进程无法正常终止,需使用`kill -9`强制结束。 #### 五、配置优化建议 1. 在`hbase-env.sh`中明确指定JAVA_HOME路径[^4] 2. 根据硬件资源调整`hbase.regionserver.handler.count`(默认30) 3. 开启BucketCache优化读性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值