我正在尝试修改现有的Azure HDInsight群集以指向现有的Hive Metastore(托管在MSSQL实例上)。我已更改hive-site.xml中的以下参数以指向现有的Metastore:
"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访问Hive CLI和Hiveserver2。奇怪的是
show databases;
根据所使用的客户端输出不同的结果。我读到从Hive 0.14开始(正在运行),使用hiveserver2-site.xml
等可以为Hive / Hiveserver2提供更精细的配置。结果。总之,如何确定Hiveserver2和Hive CLI进程指向相同(且正确)的Metastore URI?
最佳答案
发布此消息后,我在Hortonworks网站上发现了一个类似的线程:http://hortonworks.com/community/forums/topic/configuration-of-hiveserver2-to-use-a-remote-metastore-server/#post-81960
似乎startHiveserver2.sh.j2
启动脚本位于此处(在我的Hive节点上)/var/lib/ambari-agent/cache/common-services/HIVE/0.12.0.2.0/package/templates/
包含hive.metastore.uris
参数的空字符串CLI覆盖,我相信它会强制Hiveserver2以本地metastore模式启动,因此在Hive CLI之间创建不一致的 View (使用远程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
关于azure - Hive CLI和Hiveserver2元存储不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33907879/