[ 
https://issues.apache.org/jira/browse/PHOENIX-5963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Istvan Toth updated PHOENIX-5963:
---------------------------------
    Description: 
The load-balancer does not work with the current PQS assembly, due to 
dependency (and script problems)

The proposal below would - hopefully - make it feasible to re-introduce and 
support it as an optional dependecy for PQS:

 

As for the load-balancer, you are right that this setup doesn't allow for a 
working load-balancer. However, it wouldn't work even if the load-balancer jar 
was included in the classpath. The load-balancer depends on (unshaded) 
zookeeper, and unshaded zookeeper is generally not available on the PQS 
classpath anyway (it may have been available in some old phoenix-client 
version, but currently both master and 4.x shades it).

Loading the load-balancer as an external service is nice in theory, but since 
it's compiled separately from phoenix-client, the dependency conflicts that it 
introduces are hard to solve.

If I were to do it, I'd:
 * Refactor/Simplify loadbalancer, so that doesn't need Hadoop and Hbase deps
 ** Pass the Hbase Config object as in Iterable to registerServer
 ** Ditch the config singleton/cache, it is not useful in this context
 ** Preferably ditch Curator as well
 * create a shaded loadbalancer jar with ZK (and curator) shaded into it
 * Then prepare the PQS startup script for it, and document how to add this to 
PQS as an optional dependency

  was:
The load-balancer does not work with the current PQS assembly, due to 
dependency (and script problems)

The proposal below would -hopefully- make it feasible to re-introduce and 
support it as an optional dependecy for PQS:

 

As for the load-balancer, you are right that this setup doesn't allow for a 
working load-balancer. However, it wouldn't work even if the load-balancer jar 
was included in the classpath. The load-balancer depends on (unshaded) 
zookeeper, and unshaded zookeeper is generally not available on the PQS 
classpath anyway (it may have been available in some old phoenix-client 
version, but currently both master and 4.x shades it).

Loading the load-balancer as an external service is nice in theory, but since 
it's compiled separately from phoenix-client, the dependency conflicts that it 
introduces are hard to solve.

If I were to do it, I'd:
 * Refactor/Simplify loadbalancer, so that doesn't need Hadoop and Hbase deps
 ** Pass the Hbase Config object as in Iterable to registerServer
 ** Ditch the config singleton/cache, it is not useful in this context
 ** Preferably ditch Curator as well
 * create a shaded loadbalancer jar with ZK (and curator) shaded into it
 * Then prepare the PQS startup script for it, and document how to add this to 
PQS as an optional dependency


> Enable loadbalancer for standalone PQS assembly
> -----------------------------------------------
>
>                 Key: PHOENIX-5963
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5963
>             Project: Phoenix
>          Issue Type: Bug
>          Components: queryserver
>    Affects Versions: queryserver-1.0.0
>            Reporter: Istvan Toth
>            Priority: Major
>
> The load-balancer does not work with the current PQS assembly, due to 
> dependency (and script problems)
> The proposal below would - hopefully - make it feasible to re-introduce and 
> support it as an optional dependecy for PQS:
>  
> As for the load-balancer, you are right that this setup doesn't allow for a 
> working load-balancer. However, it wouldn't work even if the load-balancer 
> jar was included in the classpath. The load-balancer depends on (unshaded) 
> zookeeper, and unshaded zookeeper is generally not available on the PQS 
> classpath anyway (it may have been available in some old phoenix-client 
> version, but currently both master and 4.x shades it).
> Loading the load-balancer as an external service is nice in theory, but since 
> it's compiled separately from phoenix-client, the dependency conflicts that 
> it introduces are hard to solve.
> If I were to do it, I'd:
>  * Refactor/Simplify loadbalancer, so that doesn't need Hadoop and Hbase deps
>  ** Pass the Hbase Config object as in Iterable to registerServer
>  ** Ditch the config singleton/cache, it is not useful in this context
>  ** Preferably ditch Curator as well
>  * create a shaded loadbalancer jar with ZK (and curator) shaded into it
>  * Then prepare the PQS startup script for it, and document how to add this 
> to PQS as an optional dependency



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to