MAPREDUCE服务 MRS-快速开发HBase应用:获取样例工程

时间:2024-06-27 19:17:02

获取样例工程

  1. 通过开源镜像站获取样例工程。

    下载样例工程的Maven工程源码和配置文件,并在本地配置好相关开发工具,可参考通过开源镜像站获取样例工程

    根据集群版本选择对应的分支,下载并获取 MRS 相关样例工程。

    例如本章节场景对应示例为“hbase-example”样例,获取地址:https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-3.1.0/src/hbase-examples/hbase-example

  2. 本地使用IDEA工具导入样例工程,等待Maven工程下载相关依赖包,具体操作可参考配置并导入样例工程

    图2 HBase样例工程示例

    本地配置好Maven及SDK相关参数后,样例工程会自动加载相关依赖包。

  3. 准备应用开发配置文件中获取的集群配置文件及用户认证文件放置在样例工程的“../src/main/resources/conf”目录下。
  4. 在“com.huawei.bigdata.hbase.examples”包的“TestMain”类中修改“userName”为实际用户名,例如developuser

    private static void login() throws IOException {
            if (User.isHBaseSecurityEnabled(conf)) {
                userName = "developuser";
               
                //In Windows environment
                String userdir = TestMain.class.getClassLoader().getResource("conf").getPath() + File.separator;
                //In Linux environment
                //String userdir = System.getProperty("user.dir") + File.separator + "conf" + File.separator;
    
                LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_ LOG IN_CONTEXT_NAME, userName, userKeytabFile);
                LoginUtil.login(userName, userKeytabFile, krb5File, conf);
            }
    }

    本样例工程中,假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,A业务操作流程如下:

    序号

    步骤

    1

    根据已有信息创建表。

    2

    导入用户数据。

    3

    增加“教育信息”列族,在用户信息中新增用户的学历、职称等信息。

    4

    根据用户编号查询用户姓名和地址。

    5

    根据用户姓名进行查询。

    6

    为提升查询性能,创建二级索引或者删除二级索引。

    7

    用户销户,删除用户信息表中该用户的数据。

    8

    A业务结束后,删除用户信息表。

    例如以下创建用户信息表代码片段在com.huawei.bigdata.hbase.examples包的“HBaseSample”类的testCreateTable方法中,其他各功能代码片段详情说明可参考HBase数据读写示例程序

    public void testCreateTable() {
                 LOG.info("Entering testCreateTable.");
                 TableDescriptorBuilder htd = TableDescriptorBuilder.newBuilder(tableName); //创建表描述符
                 ColumnFamilyDescriptorBuilder hcd = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info")); //创建列族描述符
                 hcd.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF); //设置编码算法,HBase提供了DIFF,FAST_DIFF,PREFIX三种编码算法
                 hcd.setCompressionType(Compression.Algorithm.SNAPPY);
                 htd.setColumnFamily(hcd.build());  //添加列族描述符到表描述符中
                 Admin admin = null; 
                 try {
                   admin = conn.getAdmin(); //获取Admin对象,Admin提供了建表、创建列族、检查表是否存在、修改表结构和列族结构以及删除表等功能。
                   if (!admin.tableExists(tableName)) {
                     LOG.info("Creating table...");
                     admin.createTable(htd.build());//调用Admin的建表方法。
                     LOG.info(admin.getClusterMetrics().toString());
                     LOG.info(admin.listNamespaceDescriptors().toString());
                     LOG.info("Table created successfully.");
                   } else {
                     LOG.warn("table already exists");
                   }
                 } catch (IOException e) {
                     LOG.error("Create table failed " ,e);
                 } finally {
                   if (admin != null) {
                     try {
                       admin.close();
                     } catch (IOException e) {
                       LOG.error("Failed to close admin " ,e);
                     }
                   }
                 }
                 LOG.info("Exiting testCreateTable.");
      }     

support.huaweicloud.com/devg-lts-mrs/mrs_09_0019.html