Qiheng He created HIVE-28423:
--------------------------------

             Summary: The doc for enabling ZooKeeper Service Discovery on 
HiveServer2 is missing the requirement statement for 
`hive.server2.support.dynamic.service.discovery`
                 Key: HIVE-28423
                 URL: https://issues.apache.org/jira/browse/HIVE-28423
             Project: Hive
          Issue Type: Improvement
            Reporter: Qiheng He


- The doc for enabling ZooKeeper Service Discovery on HiveServer2 is missing 
the requirement statement for *hive.server2.support.dynamic.service.discovery*. 
This is a documentation issue I noticed at 
[https://github.com/dbeaver/dbeaver/issues/22777] , where dbeaver contributors 
spent 6 months trying to figure out how to start ZooKeeper Service Discovery on 
HiveServer2.

- 
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-ConnectionURLWhenZooKeeperServiceDiscoveryIsEnabled
 describes ZooKeeper Service Discovery like this.

{code:bash}
ZooKeeper-based service discovery introduced in Hive 0.14.0 (HIVE-7935) enables 
high availability and rolling upgrade for HiveServer2. A JDBC URL that 
specifies <zookeeper quorum> needs to be used to make use of these features.

With further changes in Hive 2.0.0 and 1.3.0 (unreleased, HIVE-11581), none of 
the additional configuration parameters such as authentication mode, transport 
mode, or SSL parameters need to be specified, as they are retrieved from the 
ZooKeeper entries along with the hostname.

The JDBC connection URL: jdbc:hive2://<zookeeper 
quorum>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 .

The <zookeeper quorum> is the same as the value of hive.zookeeper.quorum 
configuration parameter in hive-site.xml/hivserver2-site.xml used by 
HiveServer2.
{code}

- I did a test at https://github.com/linghengqian/hivesever2-v400-sd-test to 
verify that setting *hive.zookeeper.quorum* only on HiveServer2 was not enough. 
I found the *hive.server2.support.dynamic.service.discovery* property defined 
in the *org.apache.hadoop.hive.conf.HiveConf* class in a stackoverflow 
discussion. 

- To verify this git, just execute the following shell. Related unit tests 
occupy *2181*, *10000*, *10002* ports to start Docker Container.

{code:bash}
sdk install java 22.0.2-graalce
sdk use java 22.0.2-graalce
git clone g...@github.com:linghengqian/hivesever2-v400-sd-test.git
cd ./hivesever2-v400-sd-test/
docker compose -f ./docker-compose-lingh.yml pull
docker compose -f ./docker-compose-lingh.yml up -d

# ... Wait five seconds for HiveServer2 to finish initializing.

./mvnw clean test

docker compose -f ./docker-compose-lingh.yml down
{code}

- I also searched for the keyword 
*hive.server2.support.dynamic.service.discovery* in https://cwiki.apache.org/ , 
but I could only find this property in the documentation page of the KNOX 
project 
https://cwiki.apache.org/confluence/display/KNOX/Dynamic+HA+Provider+Configuration
 , which doesn't make sense from my perspective.

- From my perspective, it is reasonable to add the description of 
*hive.server2.support.dynamic.service.discovery* properties to the 
documentation of apache/hive:4.0.0.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to