hive cli和hiveserver2元存储不一致

iqxoj9l9  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

我正在尝试修改现有的azurehdinsight集群,以指向现有的配置单元元存储(托管在mssql示例上)。我已更改hive-site.xml中的以下参数,以指向现有的元存储:

"javax.jdo.option.ConnectionDriverName" : "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
"javax.jdo.option.ConnectionUserName" : "<<user>>",     
"javax.jdo.option.ConnectionPassword" : "<<password>>",   
"javax.jdo.option.ConnectionURL" : "jdbc:sqlserver://<<server>>.database.windows.net:1433;database=HiveMetaStoreEast;user=<<user>>;password=<<password>>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"

这似乎有些奏效,因为我可以通过beeline访问hivecli和hiveserver2。奇怪的是 show databases; 根据所使用的客户端,输出不同的结果。我了解到,在启动hive0.14(我正在运行)时,hive/hiveserver2可以使用更细粒度的配置 hiveserver2-site.xml 等等。我试过设置 hive.metastore.uris 中的参数 hiveserver2-site.xml 以匹配 hive-site.xml 但仍然得到同样奇怪的结果。
总之,如何确定hiveserver2和hivecli进程指向相同(正确)的元存储uri?

a0x5cqrl

a0x5cqrl1#

发布后,我在hortonworks网站上发现了一个类似的帖子:http://hortonworks.com/community/forums/topic/configuration-of-hiveserver2-to-use-a-remote-metastore-server/#post-81960
看来 startHiveserver2.sh.j2 开始脚本,位于此处(在我的配置单元节点上) /var/lib/ambari-agent/cache/common-services/HIVE/0.12.0.2.0/package/templates/ 包含对的空字符串cli重写 hive.metastore.uris 参数强制hiveserver2以本地元存储模式启动,从而在hivecli(使用远程uri)和beeline(使用本地uri)之间创建不一致的视图。
有关解决不一致的修补程序,请参见下面的内容:

--- startHiveserver2.sh.j2  2015-11-25 04:06:15.357996439 +0000
+++ /var/lib/ambari-server/resources/common-services/HIVE/0.12.0.2.0/package/templates/startHiveserver2.sh.j2   2015-11-25 03:43:29.837452851 +0000
@@ -20,5 +20,6 @@

# 

HIVE_SERVER2_OPTS=" -hiveconf hive.log.file=hiveserver2.log -hiveconf hive.log.dir=$5"
-HIVE_CONF_DIR=$4 {{hive_bin}}/hiveserver2 -hiveconf hive.metastore.uris=" " ${HIVE_SERVER2_OPTS} > $1 2> $2 &
+#HIVE_CONF_DIR=$4 {{hive_bin}}/hiveserver2 -hiveconf hive.metastore.uris=" " ${HIVE_SERVER2_OPTS} > $1 2> $2 &
+HIVE_CONF_DIR=$4 {{hive_bin}}/hiveserver2 ${HIVE_SERVER2_OPTS} > $1 2> $2 &
echo $!|cat>$3

相关问题