更新时间:2024-08-03 GMT+08:00

在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     

    导入上述环境变量前需确认当前引入的jar包是否存在,具体的版本号可从客户端Hive的lib目录下获取。

  4. 运行前准备。

    1. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。当前用户为准备Hive应用开发用户时增加的开发用户。

      人机用户:kinit MRS集群用户

      例如: kinit hiveuser

      机机用户:kinit -kt <user.keytab路径> <MRS集群用户>

      例如:kinit -kt /opt/hive_examples/conf/user.keytab hiveuser

      在连接安全集群时需要在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        | 
     +----------+----------+--+