在Linux中调测Hive HCatalog应用
- 执行mvn package生成jar包,在工程目录target目录下获取,比如: hive-examples-1.0.jar。
- 将上一步生成的hive-examples-1.0.jar上传至运行调测环境的指定路径,例如“/opt/hive_examples”,记作$HCAT_CLIENT,并确保已经安装好客户端。
export HCAT_CLIENT=/opt/hive_examples/
- 执行以下命令用于配置环境变量信息(以客户端安装路径为/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目录下获取。
- 运行前准备。
- 如果当前集群已启用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>
- 使用Hive客户端,在beeline中创建源表t1:create table t1(col1 int);
执行insert into t1(col1) values(X);命令向t1中分别插入如下数据,X表示待插入数据的值。
+----------+--+ | t1.col1 | +----------+--+ | 1 | | 1 | | 1 | | 2 | | 2 | | 3 |
- 创建目的表t2:create table t2(col1 int,col2 int);
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。当前用户为准备Hive应用开发用户时增加的开发用户。
- 使用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
- 运行结果查看,运行后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 | +----------+----------+--+