更新时间:2024-12-10 GMT+08:00

编译并运行HBase应用

在程序代码完成开发后,您可以在Windows开发环境中运行应用。

操作步骤

  1. 在windows下使用REST API操作HBase集群时,JDK版本需为jdk1.8.0_60及以上版本。从集群环境中获取jdk的cacerts文件,并复制“/opt/Bigdata/jdk/jre/lib/security/cacerts”文件到windows上的JDK环境中“C:\Program Files\Java\jdk1.8.0_60\jre\lib\security”(不使用REST API操作HBase集群可跳过此步骤)。
  2. 在windows上配置集群的ip与主机名映射关系。登录集群后台,执行命令cat /etc/hosts后,把hosts文件中的ip与hostname映射关系拷贝到“C:\Windows\System32\drivers\etc\hosts”中。其中主机名请以查询结果为准。

    192.168.0.90 node-master1BedB.089d8c43-12d5-410c-b980-c2728a305be3.com
    192.168.0.129 node-ana-corezLaR.089d8c43-12d5-410c-b980-c2728a305be3.com

    使用windows访问MRS集群来操作HBase,有如下两种方式:

    • 申请一台windows的ECS访问MRS集群操作hbase。安装开发环境后运行样例代码。申请ECS访问MRS集群的步骤如下:
      1. 在“现有集群”列表中,单击已创建的集群名称。

        记录集群的“可用分区”、“虚拟私有云”、“集群控制台地址”,以及Master节点的“默认安全组”。

      2. 在弹性云服务管理控制台,创建一个新的弹性云服务器。

        弹性云服务器的“可用分区”、“虚拟私有云”、“安全组”,需要和待访问集群的配置相同。

        选择一个Windows系统的公共镜像。

        其他配置参数详细信息,请参见“弹性云服务器 > 快速入门 > 购买并登录Windows弹性云服务器”

    • 使用本机访问MRS集群操作HBase。为MRS集群中HBase服务的所有节点绑定弹性公网IP,在本机(即Windows机器)上配置集群的IP与主机名映射关系时,把IP替换为主机名对应的弹性公网IP,并修改导入样例的krb5.conf文件中"kdc","admin_server",“kpasswd_server”,“kdc_listen”,“kadmind_listen”和“kpasswd_listen”六个参数的ip(单master的集群没有后面三个参数则不必修改),使其对应于KrbServer中对应的弹性公网IP(由于普通集群未启用kerberos功能,可跳过此修改krb5.conf文件的步骤。),然后运行样例代码。绑定弹性公网IP步骤如下:
      1. 在虚拟私有云管理控制台,申请一个弹性IP地址,并与弹性云服务器绑定。

        具体请参见“虚拟私有云 > 用户指南 > 弹性公网IP > 为弹性云服务器申请和绑定弹性公网IP”。

      2. 为MRS集群开放安全组规则。

        在集群Master节点和Core节点的安全组添加安全组规则使弹性云服务器可以访问集群,若集群为安全集群则需要同时将UDP的21731、21732端口,TCP的21730、21731、21732及HBase的HMaster、RegionServer实例的RPC端口和ZooKeeper服务的端口添加在安全组的入方向规则中。请参见“虚拟私有云 > 用户指南 > 安全性 > 安全组 > 添加安全组规则”。

  3. 修改运行时环境配置。

    修改样例代码中自带hbase-site.xml文件的配置,与实际环境中保持一致,配置列表如下:
    • hbase.zookeeper.quorum: zookeeper实例的主机名,多个实例时以逗号分隔,必选。
    • hbase.regionserver.kerberos.principal: regionserver的principal,与master的principal保持一致,仅开启kerberos功能集群需要配置该参数。
    • hbase.master.kerberos.principal: hmaster的principal,与regionserver的principal保持一致,仅开启kerberos功能集群需要配置该参数。
    • hadoop.security.authentication:hadoop鉴权模式,开启kerberos功能的集群需要配置该参数值为kerberos,否则不用配置。
    • hbase.security.authentication:hbase鉴权模式,开启kerberos功能的集群需要配置该参数值为kerberos,否则不用配置。

    上述参数可通过登录任一Master节点,从hbase客户端配置(“/opt/client/HBase/hbase/conf”)中获取。以获取 "hbase.zookeeper.quorum"的值为例,可登录任一Master节点执行如下命令获取:

    grep "hbase.zookeeper.quorum" /opt/client/HBase/hbase/conf/* -R -A1

  4. 修改样例代码。

    1. 当前样例代码中操作HBase的接口有三种,分别是普通接口,HFS接口(MRS 1.9.x版本不再支持该接口),REST接口。调试不同API接口操作HBase时可以注释其他接口调用。这里以使用普通接口操作HBase为例,main方法中只包含如下代码段。
      public static void main(String[] args) {
        try {
          init();
          login();
        } catch (IOException e) {
            LOG.error("Failed to login because ", e);
            return;
        }
        // getDefaultConfiguration();
        conf = HBaseConfiguration.create();
        // test hbase API
        HBaseExample oneSample;
        try {
          oneSample = new HBaseExample(conf);
          oneSample.test();
        } catch (Exception e) {
          LOG.error("Failed to test HBase because ", e);
        }
        LOG.info("-----------finish HBase-------------------");
      }
    2. 修改样例工程com.huawei.bigdata.hbase.examples.TestMain类中ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL的参数值。(未开启Kerberos认证集群可跳过此步)。
      private static final String ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL = "zookeeper/hadoop.4a049bf4_e74e_4545_9291_6fc6098d3723.com";
      • 安全集群在Zookeeper认证时是通过四字命令获取Zookeeper服务端的principal,在Zookeeper实例高负载或者实例不稳定时,会由于无法使用四字命令获取服务端的principal导致认证失败,需要通过客户端把该值传入环境中使用,避免认证失败的问题。
      • 可通过登录任一Master节点执行如下命令获取该值。

        grep "CLIENT_ZOOKEEPER_PRINCIPAL" /opt/client/HBase/hbase/conf/*

    3. 修改样例工程“src/main/resources”下的hbaseclient.properties文件。userKeytab.path,krb5.conf.path对应于从准备HBase应用开发用户获取的文件的地址。(未开启Kerberos认证集群可跳过此步)。
      user.name=hbaseuser
      userKeytabName=userKeytab.path
      krb5ConfName=krb5.conf.path
    4. 若使用REST接口时需修改hbaseclient.properties中的rest.server.info,使其对应于rest server的ip:port(port默认为21309)。
      rest.server.info=10.10.10.10:21309
      1. 从集群的master节点获取core-site.xml, hdfs-site.xml, hbase-site.xml文件,并放置到样例工程的“resources”下,即“src/main/resources”,文件获取路径为“/opt/client/HBase/hbase/conf”。MRS 1.9.2及其之后版本仅需修改自带的hbase-site.xml中的相应配置即可。
      2. 若使用申请的ECS访问HBase,可直接使用RESTServer的ip;若使用本机访问HBase则需使用该RESTServer绑定的弹性公网IP作为RESTServer的ip。
      3. HIndexExample样例工程仅在MRS 1.9.2及其以后版本中支持,需注意当前集群版本。
      4. HFSSample样例工程在MRS 1.9.x版本已移除,需注意当前集群版本。

  5. 运行样例。

    在开发环境中(例如Eclipse中),右击“TestMain.java”,单击“Run as > Java Application”运行对应的应用程序工程。