I was referring to the JDBC (thick) client and the coprocessors inside HBase. The thin JDBC client does not talk to HBase directly, only to PQS.

PQS and the thin-client would actually be the exception to what I said in my last message. You could (with a high degree of confidence) deploy a new version of Phoenix using an old thin JDBC driver. However, this isn't really any different than just upgrading Phoenix wholesale.

Yup, in short, you're glossing over quite a bit. One example: the (thick) JDBC must construct and send RPC messages to the appropriate RegionServers to execute certain operations. The deployed coprocessors in HBase must both know how to parse those RPC messages, but also interpret them correctly (e.g. an older CP might be able to parse a newer clients message, but could miss an important field that was added to that message).

On 1/22/19 4:02 AM, Owen Rees-Hayward wrote:
Hey Josh, thanks for your thoughts.

Based on your advice we will almost certainly not pursue this direction. But just to clarify, in terms of the client version are you referring to the Query server, JDBC clients or both?

I imagine from the JDBC perspective that a client would only be accessing tables with the same Phoenix version. But it maybe that my take has a lot of erroneous assumptions in it, as I haven't looked at the internals of the JDBC driver code.

On Mon, 21 Jan 2019 at 18:09, Josh Elser <els...@apache.org <mailto:els...@apache.org>> wrote:

    Owen,

    There would be significant "unwanted side-effects". You would be
    taking on a very large burden trying to come up with a corresponding
    client version of Phoenix which would still work against the newer
    coprocessors that you are trying to deploy. Phoenix doesn't provide
    any guarantee of compatibility for more than a few versions between
    client and server.

    Would suggest that you move to HDP 3.1.0 if you want a newer version
    of Phoenix.

    On Mon, Jan 21, 2019 at 9:06 AM Owen Rees-Hayward
    <owe...@googlemail.com <mailto:owe...@googlemail.com>> wrote:
     >
     > We are on HDP 2.6.5 but would like to use a more recent version
    of Phoenix, without upgrading it cluster-wide.
     >
     > HBase coprocessors can be dynamically deployed (for instance
    picking up the coprocessor jar from HDFS) against specific tables.
    We are wondering whether this would be a route to using a newer
    version of Phoenix against a set of tables? We are unclear if there
    would be unwanted side-effects.
     >
     > I'd be really interested to know if anyone has attempted this
    with success or otherwise.
     >
     > Thanks in advance.
     >
     >
     > --
     > Owen Rees-Hayward
     > 07912 876046
     > twitter.com/owen4d <http://twitter.com/owen4d>



--
Owen Rees-Hayward
07912 876046
twitter.com/owen4d <http://twitter.com/owen4d>

Reply via email to