
# 调测HBase Phoenix样例程序
HBase支持通过Phoenix调用JDBC接口来访问HBase服务。调测HBase Phoenix样例程序，默认集群已完成HBase对接Phoenix服务，具体对接步骤详情请参考[HBase配置Phoenix](https://support.huaweicloud.com/devg-mrs/mrs_06_0041.html)。
#### 在Windows中运行并调测程序
1. 搭建Windows开发环境及修改样例程序的公共配置，详情请参见[1](https://support.huaweicloud.com/devg-mrs/mrs_06_0425.html#mrs_06_0425__li19139221163015)-[3](https://support.huaweicloud.com/devg-mrs/mrs_06_0425.html#mrs_06_0425__li8624184810162)。
2. 修改样例工程。 
   1.修改样例工程"src/main/resources"目录下的"jaas.conf"文件，keyTab、principal分别对应用户认证凭据存放路径、用户名，如下所示。（未开启Kerberos认证集群可跳过此步骤）
   ```
   Client {
     com.sun.security.auth.module.Krb5LoginModule required
     useKeyTab=true
     keyTab="D:\\sample_project\\src\\hbase-examples\\hbase-java-examples\\src\\main\\resources\\user.keytab"
     principal="hbaseuser"
     useTicketCache=false
     storeKey=true
     debug=true;
   };
   ```
   2.修改样例工程"src/main/resources"下的"hbaseclient.properties"文件。user.name, userKeytabName, krb5ConfName对应于在[准备HBase应用开发用户](https://support.huaweicloud.com/devg-mrs/mrs_06_0010.html)创建的用户名，及获取的文件的名称。（未开启Kerberos认证集群可跳过此步）。
   ```
   user.name=hbaseuser
   userKeytabName=user.keytab
   krb5ConfName=krb5.conf
   #for phoenix
   #confiugration for security cluster.
   jaasConfName=jaas.conf
   ```
   
   
3. 在开发环境中（例如Eclipse中），鼠标右键单击"PhoenixExample"，然后鼠标左键单击"Run \> PhoenixExample.main()"运行对应的应用程序工程。 
   ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
   若运行报"Message stream modified (41)"的错误，这可能与JDK的版本有关系，可以尝试修改运行样例代码的JDK为8u_242以下版本或删除"krb5.conf"配置文件的"renew_lifetime = 0m"配置项。
   
   
4. HBase应用程序运行完成后，可直接通过运行结果查看应用程序运行情况。 
   运行结果出现如下信息表示程序运行成功。
   ```
   2020-03-13 14:54:13,369 INFO  [main] client.HBaseAdmin: Operation: CREATE, Table Name: default:TEST, procId: 60 completed
   2020-03-13 14:54:14,269 INFO  [main] examples.PhoenixExample: 1
   2020-03-13 14:54:14,270 INFO  [main] examples.PhoenixExample: John
   2020-03-13 14:54:14,270 INFO  [main] examples.PhoenixExample: 100000
   2020-03-13 14:54:14,271 INFO  [main] examples.PhoenixExample: 1980-01-01
   2020-03-13 14:54:14,464 INFO  [main] client.HBaseAdmin: Started disable of TEST
   2020-03-13 14:54:15,199 INFO  [main] client.HBaseAdmin: Operation: DISABLE, Table Name: default:TEST, procId: 62 completed
   2020-03-13 14:54:15,521 INFO  [main] client.HBaseAdmin: Operation: DELETE, Table Name: default:TEST, procId: 64 completed
   ```
   
   
 
#### 在Linux中调测Phoenix样例
在linux环境中调测Phoenix样例，需有与集群环境网络相通的ECS，详情请参见[准备本地应用开发环境](https://support.huaweicloud.com/devg-mrs/mrs_06_0009.html)。
1. 修改样例。将样例代码TestMain中"enablePhoenix"值改为"true"，开启调用Phoenix样例程序接口。 
   ```
   /**
    * Phoenix Example
    * if you would like to operate hbase by SQL, please enable it,
    * step:
    * 1.login
    * 2.operate hbase by phoenix.
    */
   boolean enablePhoenix = false;
   if (enablePhoenix) {
     PhoenixExample phoenixExample;
     try {
       phoenixExample = new PhoenixExample(conf);
       phoenixExample.testSQL();
     } catch (Exception e) {
       LOG.error("Failed to run Phoenix Example, because ", e);
     }
   }
   ```
   
   
2. 执行mvn package生成jar包，在工程目录target目录下获取，比如:hbase-examples-mrs-2.0.jar，将获取的包上传到/opt/client/Hbase/hbase/lib目录下。
3. 执行Jar包。 
   1. 在Linux客户端下执行Jar包的时候，需要用安装用户切换到客户端目录： cd $BIGDATA_CLIENT_HOME/HBase/hbase
      ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
      **"$BIGDATA_CLIENT_HOME"**指的是客户端安装目录。
      
   
   2. 然后执行： source $BIGDATA_CLIENT_HOME/bigdata_env
      
   
   3. 将[HBase Phoenix API接口介绍](https://support.huaweicloud.com/devg-mrs/mrs_06_0041.html)解压后获取其中的phoenix-hbase和phoenix-core包和"htrace-core-3.1.0-incubating.jar"包拷贝到"/opt/client/HBase/hbase/lib"下。
   
   4. 将[2]中生成的Jar包和从[3.2.2-准备开发用户](https://support.huaweicloud.com/devg-mrs/mrs_06_0010.html)中获取的krb5.conf和user.keytab文件拷贝上传至客户端运行环境的Hbase/hbase/conf目录下，例如"/opt/client/HBase/hbase/conf"。然后在"/opt/client/HBase/hbase/conf"目录下创建hbaseclient.properties文件，文件中user.name对应新建的用户hbaseuser，userKeytabName和krb5ConfName值对应从[3.2.2-准备开发用户](https://support.huaweicloud.com/devg-mrs/mrs_06_0010.html)中获取的认证相关文件名称，如下（未开启Kerberos认证集群可跳过此步）：
      ```
      user.name=hbaseuser
      userKeytabName=user.keytab
      krb5ConfName=krb5.conf
      ```
      
   
   
   
   
4. 执行jar包程序。 
   hbase com.huawei.bigdata.hbase.examples.TestMain /opt/client/HBase/hbase/conf
   其中，*com.huawei.bigdata.hbase.examples.TestMain*为举例，具体以实际样例代码为准。
   "/opt/client/HBase/hbase/conf"对应于上述中user.keytab、krb5.conf等文件路径。
   ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
   若运行报"Message stream modified (41)"的错误，这可能与JDK的版本有关系，可以尝试修改运行样例代码的JDK为8u_242以下版本或删除"krb5.conf"配置文件的"renew_lifetime = 0m"配置项。
   
   
5. phoenix应用程序运行完成后，可直接通过运行结果查看应用程序运行情况。 
   ```
   2020-03-14 16:20:40,192 INFO  [main] client.HBaseAdmin: Operation: CREATE, Table Name: default:TEST, procId: 923 completed
   2020-03-14 16:20:40,806 INFO  [main] examples.PhoenixExample: 1
   2020-03-14 16:20:40,807 INFO  [main] examples.PhoenixExample: John
   2020-03-14 16:20:40,807 INFO  [main] examples.PhoenixExample: 100000
   2020-03-14 16:20:40,807 INFO  [main] examples.PhoenixExample: 1980-01-01
   2020-03-14 16:20:40,830 INFO  [main] client.HBaseAdmin: Started disable of TEST
   2020-03-14 16:20:41,574 INFO  [main] client.HBaseAdmin: Operation: DISABLE, Table Name: default:TEST, procId: 925 completed
   2020-03-14 16:20:41,831 INFO  [main] client.HBaseAdmin: Operation: DELETE, Table Name: default:TEST, procId: 927 completed
   ```
   
   
 
