HBASE的简介和安装步骤

本文深入探讨HBase的起源、架构及其在Hadoop生态中的角色,包括HMaster和RegionServer的功能,以及部署和配置的详细步骤。介绍了HBase作为结构化数据存储解决方案的重要性和其依赖的Zookeeper集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HBASE介绍

1.1HBASE的起源
Hbase的原型是Goole的三遍论文之一的BigTable论文,受到该论文思想的启发,目前作为hadoop的子项目来开发维护,用于支持结构化的数据存储
官网:

http://hbase.apache.org

1.2HBASE的角色
1.2.1 HMaster
功能:1.监控RegionServer
2.处理RegionServer故障转移
3.处理元数据的变更
4.处理region的分配或移除
5.在空闲时间进行数据的负载均衡
6.通过zookeeper发布自己的位置给客户端
1.2.2 RegionServer
功能:1.负责存储Hbase的实际数据
2.处理分配给他的Region
3.刷新缓存到hdfs
4.维护Hlog
5.执行压缩
6.负责处理region分片
组件:1)Write-Ahead logs
HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中, 然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
2)HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。
3)Store
HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
4)MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL
之后,RegsionServer 会在内存中存储键值对。
5)Region
Hbase 表的分片,HBase 表会根据RowKey 值被切分成不同的region 存储在RegionServer 中,在一个 RegionServer 中可以有多个不同的 region
1.3Hbase的架构
Hbase一种是作为存储的分布式文件系统,另一种是作为数据处理模型的MR框架。因为日常开发人员比较熟练的是结构化的数据进行处理。但是在hdfs直接存储的数据往往不具备结构化,所以催生出了Hbase在hdfs上的操作。
HBase 内置有 Zookeeper,但一般我们会有其他的 Zookeeper 集群来监管 master 和regionserver,Zookeeper 通过选举,保证任何时候,集群中只有一个活跃的HMaster,HMaster与 HRegionServer 启动时会向 ZooKeeper 注册,存储所有 HRegion 的寻址入口,实时监控
HRegionserver 的上线和下线信息。并实时通知给 HMaster,存储 HBase 的 schema 和 table 元数据,默认情况下,HBase 管理 ZooKeeper 实例,Zookeeper 的引入使得 HMaster 不再是单点故障。一般情况下会启动两个 HMaster,非 Active 的 HMaster 会定期的和 Active HMaster通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个 HMaster 反而增加了 Active HMaster 的负担。
一个 RegionServer 可以包含多个 HRegion,每个 RegionServer 维护一个 HLog,和多个 HFiles以及其对应的 MemStore。RegionServer 运行于 DataNode 上,数量可以与 DatNode 数量一致。
二、Hbase的部署和使用
2.1.1 在安装hbase之前要保证Zookeeper集群的正常部署和使用:bin/zkServer.sh start
2.1.2hadoop的正常部署:

$ ~/modules/hadoop-2.7.2/sbin/start-dfs.sh

$ ~/modules/hadoop-2.7.2/sbin/start-yarn.sh

2.1.3 解压hbase

tar -zxf ~/softwares/installations/hbase-1.3.1-bin.tar.gz -C ~/modules/

2.1.4hbase的配置文件
hbase-env.sh修改内容:

export JAVA_HOME=/home/admin/modules/jdk1.8.0_121

export HBASE_MANAGES_ZK=false

hbase-site.xml修改内容:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.136.129:9000/hbase</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.136.135:2181,192.168.136.136:2181,192.168.136.137:2181</value>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper-3.4.5/zkData</value>
</property>
</configuration>

regionservers中添加虚拟机的主机名:

linux01
linux02 
linux03

2.1.5hbase需要依赖的jar包,因为hbase需要依赖hadoop,所以替换hbase的lib目录下的hadoop的jar包,以解决兼容问题:
1.删除原有的jar:

$ rm -rf /home/admin/modules/hbase-1.3.1/lib/hadoop-*

$ rm -rf /home/admin/modules/hbase-1.3.1/lib/zookeeper-3.4.6.jar

2)拷贝新 jar,涉及的 jar 有:

hadoop-annotations-2.7.2.jar hadoop-auth-2.7.2.jar hadoop-client-2.7.2.jar hadoop-common-2.7.2.jar hadoop-hdfs-2.7.2.jar
hadoop-mapreduce-client-app-2.7.2.jar hadoop-mapreduce-client-common-2.7.2.jar hadoop-mapreduce-client-core-2.7.2.jar hadoop-mapreduce-client-hs-2.7.2.jar
hadoop-mapreduce-client-hs-plugins-2.7.2.jar hadoop-mapreduce-client-jobclient-2.7.2.jar hadoop-mapreduce-client-jobclient-2.7.2-tests.jar hadoop-mapreduce-client-shuffle-2.7.2.jar hadoop-yarn-api-2.7.2.jar
hadoop-yarn-applications-distributedshell-2.7.2.jar

hadoop-yarn-applications-unmanaged-am-launcher-2.7.2.jar hadoop-yarn-client-2.7.2.jar
hadoop-yarn-common-2.7.2.jar

hadoop-yarn-server-applicationhistoryservice-2.7.2.jar hadoop-yarn-server-common-2.7.2.jar
hadoop-yarn-server-nodemanager-2.7.2.jar hadoop-yarn-server-resourcemanager-2.7.2.jar
hadoop-yarn-server-tests-2.7.2.jar
hadoop-yarn-server-web-proxy-2.7.2.jar
zookeeper-3.4.5.jar

这些jar包的位置:

$ find /home/admin/modules/hadoop-2.7.2/ -name hadoop-annotations*

2.1.6hbase软连接hadoop配置:

$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/core-site.xml

~/modules/hbase-1.3.1/conf/core-site.xml

$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

~/modules/hbase-1.3.1/conf/hdfs-site.xml

2.1.7将配置好的hbase同步到其他集群:xsync hbase(注:xsync是本人自己写的同步脚本,如果没有。就要使用scp远程复制命令)

$ scp -r /home/admin/modules/hbase-1.3.1/ linux02:/home/admin/modules/

2.1.8hbase服务的启动,启动之前要先保证集群时间是同步的,如果集群时间不同步, 会导致 regionserver 无法启动,抛出ClockOutOfSyncException 异常。

$ bin/start-hbase.sh
$ bin/stop-hbase.sh

2.1.9查看hbase页面

http://linux01:16010(hbase1.0以下的版本使用60010)

若有错误,欢迎评论指出!!!

### HBase 配置与安装方法 #### 一、HBase简介 HBase 是一种分布式数据库系统,具有高可靠性、高性能以及可扩展性等特点[^2]。它能够支持大规模结构化数据存储,并允许用户在低成本硬件集群上构建高效的存储解决方案。 --- #### 二、HBase 安装准备 为了成功部署 HBase,需要完成以下准备工作: - **环境依赖**:确保已正确安装并配置 Java 环境(推荐 JDK 8 或更高版本)。此外,还需要安装 Apache Hadoop 并验证其正常运行状态。 - **下载 HBase 软件包**:可以从官方提供的稳定版链接获取最新版本的压缩包,例如 `http://mirror.bit.edu.cn/apache/hbase/stable/` 中找到适合的发行版文件[^3]。 --- #### 三、具体安装步骤 以下是基于通用 Linux 系统下的典型安装流程: 1. **解压软件包** 将下载好的 `.tar.gz` 文件放置到目标目录下并通过命令进行解压: ```bash tar -zxvf hbase-<version>-bin.tar.gz -C /your/target/directory/ ``` 2. **设置环境变量** 修改用户的 shell 配置文件(如 `.bashrc`),添加如下内容以便全局调用 HBase 命令工具[^4]: ```bash export HBASE_HOME=/path/to/hbase-x.x.x export PATH=$PATH:$HBASE_HOME/bin source ~/.bashrc ``` 3. **编辑核心配置文件** 进入 `$HBASE_HOME/conf` 目录调整必要的参数设定: - **hbase-site.xml**: 此处定义主要属性比如 ZooKeeper 地址列表或者表预分区策略等; 示例片段展示如何启用伪分布模式: ```xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration> ``` - **hbase-env.sh**: 主要用于指定 JVM 参数以及其他高级选项;通常会涉及内存分配大小限制等问题。 4. **启动服务进程** 使用内置脚本一键开启所有必需组件实例: ```bash $HBASE_HOME/bin/start-hbase.sh ``` 5. **验证功能可用性** 打开 Shell 终端测试基本 CRUD 功能是否生效: ```bash ./hbase shell create 'test', 'cf' list put 'test', 'row1', 'cf:a', 'value1' scan 'test' disable 'test' drop 'test' exit ``` --- #### 四、注意事项 对于特定架构平台(如同飞腾处理器系列),可能还需额外关注兼容性优化方面的工作。这包括但不限于重新编译部分原生库模块来适配底层 CPU 特征集等情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值