
# 在Linux中调测Hive HCatalog应用
1. 执行mvn package生成jar包，在工程目录target目录下获取，比如: hive-examples-1.0.jar。
2. 将上一步生成的hive-examples-1.0.jar上传至运行调测环境的指定路径，例如"/opt/hive_examples"，记作$HCAT_CLIENT，并确保已经安装好客户端。 
   ```
   export HCAT_CLIENT=/opt/hive_examples/
   ```
   
   
3. 执行以下命令用于配置环境变量信息（以客户端安装路径为/opt/client为例）。 
   ```
   export HADOOP_HOME=/opt/client/HDFS/hadoop 
    export HIVE_HOME=/opt/client/Hive/Beeline 
    export HCAT_HOME=$HIVE_HOME/../HCatalog 
    export LIB_JARS=$HCAT_HOME/lib/hive-hcatalog-core-1.3.0.jar,$HCAT_HOME/lib/hive-metastore-1.3.0.jar,$HIVE_HOME/lib/hive-exec-1.3.0.jar,$HCAT_HOME/lib/libfb303-0.9.3.jar,$HCAT_HOME/lib/slf4j-api-1.7.5.jar,$HCAT_HOME/lib/antlr-2.7.7.jar,$HCAT_HOME/lib/jdo-api-3.0.1.jar,$HCAT_HOME/lib/antlr-runtime-3.4.jar,$HCAT_HOME/lib/datanucleus-api-jdo-3.2.6.jar,$HCAT_HOME/lib/datanucleus-core-3.2.10.jar,$HCAT_HOME/lib/datanucleus-rdbms-3.2.9.jar 
    export HADOOP_CLASSPATH=$HCAT_HOME/lib/hive-hcatalog-core-1.3.0.jar:$HCAT_HOME/lib/hive-metastore-1.3.0.jar:$HIVE_HOME/lib/hive-exec-1.3.0.jar:$HCAT_HOME/lib/libfb303-0.9.3.jar:$HADOOP_HOME/etc/hadoop:$HCAT_HOME/conf:$HCAT_HOME/lib/slf4j-api-1.7.5.jar:$HCAT_HOME/lib/antlr-2.7.7.jar:$HCAT_HOME/lib/jdo-api-3.0.1.jar:$HCAT_HOME/lib/antlr-runtime-3.4.jar:$HCAT_HOME/lib/datanucleus-api-jdo-3.2.6.jar:$HCAT_HOME/lib/datanucleus-core-3.2.10.jar:$HCAT_HOME/lib/datanucleus-rdbms-3.2.9.jar
   ```
   ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
   导入上述环境变量前需确认当前引入的jar包是否存在，具体的版本号可从客户端Hive的lib目录下获取。
   
   
4. 运行前准备。 
   1. 如果当前集群已启用Kerberos认证，执行以下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。当前用户为[准备Hive应用开发用户](https://support.huaweicloud.com/devg-mrs/mrs_06_0059.html)时增加的开发用户。
      **人机用户：kinit** ***MRS*** ***集群用户***
      例如: **kinit hiveuser**
      **机机用户：kinit -kt \<user.keytab路径\> \<MRS集群用户\>**
      例如：**kinit -kt /opt/hive_examples/conf/user.keytab hiveuser**
      ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
      在连接安全集群时需要在hive客户端的HCatalog的配置文件（例如：/opt/client/Hive/HCatalog/conf/hive-site.xml）中添加如下配置：
      ```
      <property>
      <name>hive.metastore.sasl.enabled</name>
      <value>true</value>
      </property>
      ```
      
   
   2. 使用Hive客户端，在beeline中创建源表t1：**create table t1(col1 int);**
      执行**insert into t1(col1) values(X);**命令向t1中分别插入如下数据，X表示待插入数据的值。
      ```
      +----------+--+ 
          | t1.col1  | 
          +----------+--+ 
          | 1        | 
          | 1        | 
          | 1        | 
          | 2        | 
          | 2        | 
          | 3        |
      ```
      
   
   3. 创建目的表t2：**create table t2(col1 int,col2 int);**
   
   
   
   
5. 使用YARN客户端提交任务。 
   **yarn --config $HADOOP_HOME/etc/hadoop jar $HCAT_CLIENT/hive-examples-1.0.jar com.huawei.bigdata.hive.example.HCatalogExample -libjars $LIB_JARS t1 t2**
   
   
6. 运行结果查看，运行后t2表数据如下所示。 
   ```
   0: jdbc:hive2://192.168.1.18:24002,192.168.1.> select * from t2; 
    +----------+----------+--+ 
    | t2.col1  | t2.col2  | 
    +----------+----------+--+ 
    | 1        | 3        | 
    | 2        | 2        | 
    | 3        | 1        | 
    +----------+----------+--+
   ```
   
   
 
