Java 连接 HBase 原理与环境准备

Java 连接 HBase 的原理、环境准备与连接封装

一、为什么一定要用 Java 操作 HBase?

在真实的大数据系统中:

  • HBase 不是给人用的
  • HBase 是 给程序用的
  • Java 是 Hadoop 生态的 第一语言

所以:

Shell = 学习 / 调试工具
Java API = 生产环境唯一方式


二、Java 访问 HBase 的整体架构

Java Client
   ↓ RPC
HBase RegionServer
   ↓
HDFS

Java 程序本质上做了三件事:

  1. 通过 Zookeeper 找到 HBase 集群
  2. 建立 RPC 连接
  3. 通过 RegionServer 读写数据

三、版本兼容性说明(非常重要)

组件 推荐版本
JDK 1.8
Hadoop 3.4.1
HBase 2.4.18

错误示范

  • JDK 11 + HBase 2.x(大量坑)
  • Hadoop 2.x + HBase 2.x(冲突)

四、Maven 工程创建步骤

1 创建 Maven 项目

mvn archetype:generate

选择:

maven-archetype-quickstart

2 添加依赖(核心)

<dependencies>
    <!-- HBase 客户端 -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>2.4.18</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>2.4.18</version>
    </dependency>

    <!-- Hadoop -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.4.1</version>
    </dependency>
</dependencies>

这一步出错 = 后面全废


五、Java 连接 HBase 的核心步骤

步骤拆解

  1. 创建 Configuration
  2. 指定 Zookeeper 地址
  3. 创建 Connection(重量级对象)
  4. 全局复用

六、HBase 连接工具类(生产级写法)

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;

public class HBaseConnectionUtil {

    private static Connection connection;

    static {
        try {
            Configuration config = HBaseConfiguration.create();

            // Zookeeper 配置
            config.set("hbase.zookeeper.quorum", "localhost");
            config.set("hbase.zookeeper.property.clientPort", "2181");

            connection = ConnectionFactory.createConnection(config);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        return connection;
    }
}

为什么 Connection 只建一次?

  • Connection 非常昂贵
  • 内部维护线程池 + RPC
  • 一个 JVM 只建一个
posted @ 2025-10-20 02:19  元始天尊123  阅读(6)  评论(0)    收藏  举报