QingYingX的博客 In solitude, where we are least alone.

QingYingX / HBase 搭建教程

Created Tue, 01 Apr 2025 00:00:00 +0800 Modified Thu, 18 Dec 2025 11:00:50 +0000
1245 Words

Apache HBase 安装配置教程

1. 概述

Apache HBase是一个开源的、分布式的、版本化的、非关系型数据库,构建在Hadoop之上,提供对大型数据的随机、实时读/写访问。它是Google Bigtable的开源实现。

2. 前置依赖

  • Hadoop集群(已安装并运行)
  • ZooKeeper集群(可独立或使用HBase内置)
  • Java 1.8+
  • SSH免密登录配置

3. 环境准备

3.1 系统要求

# 检查Java版本
java -version

# 检查Hadoop状态
hadoop version
hdfs dfsadmin -report

# 检查SSH免密
ssh localhost date

3.2 下载解压

cd /root/software
# 解压
tar -zxvf hbase-2.4.8-bin.tar.gz
mv hbase-2.4.8 hbase

3.3 配置环境变量

# 编辑环境变量
vim /etc/profile

# 添加以下内容
export HBASE_HOME=/root/software/hbase
export PATH=$PATH:$HBASE_HOME/bin

# 使配置生效
source /etc/profile

4. HBase配置

4.1 基本配置文件

cd $HBASE_HOME/conf

# 1. 配置hbase-env.sh
vim hbase-env.sh

修改以下内容:

# 设置Java环境
export JAVA_HOME=/root/software/jdk8

# 使用外部ZooKeeper
export HBASE_MANAGES_ZK=false

# HBase日志目录
export HBASE_LOG_DIR=/root/software/hbase/logs

# HBase PID目录
export HBASE_PID_DIR=/root/software/hbase/pids

4.2 配置hbase-site.xml

vim hbase-site.xml

添加以下配置:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- HBase数据存储目录 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    
    <!-- HBase运行模式:分布式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    
    <!-- ZooKeeper地址 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    
    <!-- ZooKeeper数据目录 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/zookeeper/data</value>
    </property>
    
    <!-- Master绑定的主机 -->
    <property>
        <name>hbase.master</name>
        <value>master:16000</value>
    </property>
    
    <!-- 启用Web UI -->
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    
    <!-- 开启异步日志 -->
    <property>
        <name>hbase.wal.provider</name>
        <value>filesystem</value>
    </property>
</configuration>

4.3 配置regionservers

vim regionservers

# 添加RegionServer节点
slave1
slave2

5. 分发配置到集群

# 在Master节点执行
scp -r /root/software/hbase slave1:/root/software/
scp -r /root/software/hbase slave2:/root/software/

# 分发环境变量
scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/

# 在从节点生效
ssh slave1 "source /etc/profile"
ssh slave2 "source /etc/profile"

6. 启动前准备

6.1 创建HDFS目录

# 创建HBase在HDFS上的根目录
hdfs dfs -mkdir -p /hbase
hdfs dfs -chown hbase:hadoop /hbase
hdfs dfs -ls /

6.2 配置ZooKeeper(如未安装)

如果使用内置ZooKeeper:

# 修改hbase-env.sh
export HBASE_MANAGES_ZK=true

# 启动时包括ZooKeeper
start-hbase.sh

如果使用外部ZooKeeper,确保已安装并启动:

# 检查ZooKeeper状态
echo stat | nc localhost 2181

# 或使用zkCli.sh
zkCli.sh -server master:2181

7. 启动HBase集群

7.1 启动命令

# 在Master节点启动
start-hbase.sh

# 查看进程
jps
# 应看到:HMaster, HQuorumPeer, HRegionServer

# 查看Web UI
# Master: http://master:16010

7.2 检查集群状态

# 进入HBase Shell
hbase shell

# 查看集群状态
status

# 查看版本
version

# 查看表
list

8. HBase Shell基本操作

8.1 创建命名空间和表

hbase shell

# 创建命名空间
create_namespace 'test'

# 创建表(列族cf1)
create 'test:student', 'cf1', 'cf2'

# 查看表结构
describe 'test:student'

8.2 数据操作

# 插入数据
put 'test:student', '1001', 'cf1:name', 'Tom'
put 'test:student', '1001', 'cf1:age', '20'
put 'test:student', '1001', 'cf2:score', '85'

put 'test:student', '1002', 'cf1:name', 'Jerry'
put 'test:student', '1002', 'cf1:age', '22'

# 查询数据
get 'test:student', '1001'
scan 'test:student'

# 带过滤器的查询
scan 'test:student', {FILTER => "ValueFilter(=, 'binary:Tom')"}

# 删除数据
delete 'test:student', '1001', 'cf1:age'
deleteall 'test:student', '1002'

8.3 表管理

# 禁用表
disable 'test:student'

# 启用表
enable 'test:student'

# 删除表
disable 'test:student'
drop 'test:student'

# 清空表
truncate 'test:student'

9. 集群管理

9.1 启动/停止

# 启动集群
start-hbase.sh

# 停止集群
stop-hbase.sh

# 单独启动Master
hbase-daemon.sh start master

# 单独启动RegionServer
hbase-daemon.sh start regionserver

9.2 监控命令

# 查看RegionServer状态
hbase hbck

# 查看表Region分布
hbase hbck -details

# 均衡Region
balance_switch true
hbase balancer

9.3 日志查看

# Master日志
tail -f $HBASE_HOME/logs/hbase-root-master-master.log

# RegionServer日志
tail -f $HBASE_HOME/logs/hbase-root-regionserver-slave1.log

# ZooKeeper日志
tail -f $HBASE_HOME/logs/hbase-root-zookeeper-master.log

10. 与Hadoop集成

10.1 配置Hadoop Classpath

# 编辑hbase-env.sh
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop

10.2 MapReduce集成

# 创建Hadoop作业,使用HBase作为输入/输出
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv 
  -Dimporttsv.columns=HBASE_ROW_KEY,cf1:name,cf1:age 
  test:student 
  /input/data.tsv