示例工程开发

最近更新时间: 2026-03-13 09:03:00

环境准备

  1. 开发环境准备(Java/Scala)
准备项 说明
安装JDK JDK 8 ,推荐使用 konaJDK,下载地址
安装 Scala Scala 2.12,下载地址
安装和配置 IDE 按需选择,比如 IntelliJ IDEA 或 Eclipse
安装 Maven 开发环境基础配置,负责构建 Java 应用程序
Maven 配置准备 如果需要本地调试,需要参考开发环境准备,配置 Maven pom.xml,推荐 Maven 3.6.3,下载地址
  1. 远程调试环境准备
    以下使用 Linux 环境作为开发机进行应用调试说明。
    1. 准备开发机(可选):建议使用 Linux 操作系统
    2. 部署客户端:参考部署TBDS客户端在开发机上执行客户端部署
  2. 导入示例工程代码
    以下以 IntelliJ IDEA 举例,将示例工程代码导入进行说明。
    1. 下载样例代码:git clone https://e.coding.net/g-necm8077/tencentcloud-tbds-examples/tbds-examples.git
    2. 导入项目:安装完 IntelliJ IDEA 和 JDK 工具后,导入样例工程到 IntelliJ IDEA 开发环境。点击 Open 后,选择上一步下载的项目地址打开。
    3. IDEA 配置 JDK:首先确保在本地安装了 JDK 1.8,并配置好了环境变量。IDEA 选择 File 下的 Project Structure,点击 SDKs,选择 JDK 1.8,点击 Apply,再点击 OK。若没有 JDK 1.8,则点击 + 号进行添加,点击 Add JDK 后选择 JDK 1.8 安装目录,然后点击 OK 即可。
    4. IDEA 配置 Maven:首先确保在本地安装了 Maven,并配置好了环境变量和 settings.xml 文件。IDEA 点击 Settings 进入配置页面,左上角输入 maven 进行搜索,点击 Build Tools 下的 Maven 配置项,修改 “Maven home path” 为本地 Maven 的安装目录,修改 “User settings file” 为本地 Maven settings.xml 配置文件的文件路径,并勾选 Override,此时 “Local repository” 将自动设置为 settings.xml 文件中配置的本地 Maven 仓库的目录。最后点击 Apply,再点击 OK。

代码逻辑说明

  1. 功能说明
    本教程演示的是:HBase创建集群连接、创建表、读写、删除表的基本功能操作示例。
  2. 代码逻辑说明
    初始化HBase Configuration,这里会从java程序的classpath中尝试加载hbase-site.xml,推荐使用这种方式初始化:
    conf = HBaseConfiguration.create();

如果不方便在classpath设置hbase-site.xml的路径,可以手动在代码中设置。

    conf.addResource(new Path( "/etc/hbase/conf/hbase-site.xml"));

用户认证相关初始化,从conf中加载认证类型:hadoop.security.authentication和hbase.security.authentication

    UserGroupInformation.setConfiguration(conf);

创建HBase集群连接。

    conn = ConnectionFactory.createConnection(conf);

创建表: 先通过connection拿到HAdmin对象,再调用其createTable方法。

    public void createTable() throws IOException {
        // Specify the table descriptor.
        TableDescriptorBuilder tableBuilder = TableDescriptorBuilder.newBuilder(tableName);

        // Set the column family name to info
        ColumnFamilyDescriptorBuilder cfBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info"));

        // Set data encoding methods. HBase provides DIFF,FAST_DIFF,PREFIX
        cfBuilder.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF);

        // Set compression methods
        cfBuilder.setCompressionType(Compression.Algorithm.SNAPPY);

        ColumnFamilyDescriptor cf = cfBuilder.build();

        tableBuilder.setColumnFamily(cf);

        Admin admin = this.conn.getAdmin();

        admin.createTable(tableBuilder.build());
    }

写入数据:先通过connection获得HTable对象,再调用其put方法。 参数是一个Put对象需要通过组装获取。

        Table table = conn.getTable(tableName);
        table.put(puts);

组装Put对象

    private static void putData(List<Put> puts, String rowKey, List<String> data) {
        Put put = new Put(Bytes.toBytes(rowKey));
        put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes(data.get(0)));
        put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes(data.get(1)));
        put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("gender"), Bytes.toBytes(data.get(2)));
        put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("score"), Bytes.toBytes(data.get(3)));
        puts.add(put);
    }

读取数据:先通过connection获得HTable对象,再调用其get方法。

        Get get = new Get(Bytes.toBytes("row1"));

        // Submit a get request.
        Table table = conn.getTable(tableName);
        Result result = table.get(get);
                // Print query results.
        for (Cell cell : result.rawCells()) {
            LOG.info("{}:{},{},{}", Bytes.toString(CellUtil.cloneRow(cell)),
                    Bytes.toString(CellUtil.cloneFamily(cell)), Bytes.toString(CellUtil.cloneQualifier(cell)),
                    Bytes.toString(CellUtil.cloneValue(cell)));
        }

打包发布

  1. 打包
    以下使用 IntelliJ IDEA 说明示例工程代码编译过程。点击 IDEA 下方 Terminal 打开终端,切换到示例工程的 HBase 工程目录下,然后使用命令 mvn clean package 对工程进行打包,运行过程中可能还需要下载一些文件,直到出现 BUILD SUCCESS 表示打包成功。
cd src/hbase-examples/hbase-example/
mvn clean package

通过上述编译打包后,将在工程目录下 target 文件夹中看到打好的 tar.gz 包,如图示中的 hbase-example-1.0-SNAPSHOT-bin.tar.gz,这里面包含了样例程序以及运行过程中所需的所有依赖,大小在60MB左右。

2. 开发机运行

  1. 准备用户:参考获取用户认证 获取认证信息。若是 Kerberos 环境,需要将用户的 keytab 文件下载到本地,然后上传至开发机。这里将 test 用户的 test.keytab 文件上传至开发机的 /tmp 目录。
  2. 将集群的配置文件hbase-site.xml放在解压后的conf目录下,如果是集群内的节点,直接执行:cp /usr/local/service/hbase/conf/hbase-site.xml conf/ 即可。
  3. 安全认证:将principal和keytab信息放入hbase-site.xml中,增加这3个对应配置,hbase客户端会读取对应配置自动完成认证处理:
    <property>
      <name>hadoop.security.authentication</name>
      <value>kerberos</value>
   </property>
   <property>
      <name>hbase.client.keytab.principal</name>
      <value>test@TBDS-XXXXX</value>
   </property>
   <property>
     <name>hbase.client.keytab.file</name>
     <value>/tmp/test.keytab</value>
   </property>
  1. Ranger 授权:参考Ranger授权(经典集群),确保 test 用户具有创建/写入对应表的权限。
  2. 运行样例
    1. 设置要运行的类: export MAIN_CLASS=com.tencent.tbds.hbase.HBaseClientExample
    2. 执行测试: sh start.sh

程序运维监控

控制台以及logs/client.log都会打印运行期间的日志。