[ 
https://issues.apache.org/jira/browse/PHOENIX-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14236536#comment-14236536
 ] 

Nick Dimiduk commented on PHOENIX-971:
--------------------------------------

I've been thinking a bit about this lately. I think we cannot get away from a 
"gateway" style of deployment model for such a server, same as we have in HBase 
for REST and Thrift. I looked in on our friends over at Cassandra and I see 
that they're doing the same; clients are "thin", unaware of cluster topology... 
they send request to any participating cluster member, which acts as a gateway 
for the requests on their behalf.

I also poked around the [MySQL wire 
protocol|http://dev.mysql.com/doc/internals/en/overview.html]. It's not too 
complex, but I think we would have to implemented from scratch.

I also had a look at HiveServer2. It defines a simple Thrift service interface 
(quite similar endpoints to MySQL's, actually). The implementation of HS2 isn't 
extensible at the moment, though there's an oldish [design 
doc|https://cwiki.apache.org/confluence/display/Hive/AccessServer+Design+Proposal]
 that talks about making it extensible. After getting a feel for it's 
implementation, I had a go at [hacking 
up|https://github.com/ndimiduk/hive/tree/HS2-Phoenix-hack] HS2 to expose 
Phoenix queries. See the commit message for instructions; it basically works. I 
thought I could prove end-to-end from Python (not Jython) with this, but 
apparently the [python 
connector|https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2#SettingUpHiveServer2-PythonClientDriver]
 doesn't support authMechanism='NONE' and I haven't worked out how to enable 
some kind of authentication from my sandbox deploy.

In theory, we can implement the HS2 thrift interface and open Phoenix up to the 
world of Hive connectivity, which includes an ODBC driver. This appears to be 
what the [Spark folks 
did|https://github.com/apache/spark/tree/master/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver]
 with Spark-SQL. I think it'll give us a nice bang-for-the-buck, considering 
the implementation complexity. None of this is wiring Phoenix into Hive 
metastore or HCat or any of that stuff. For such connectivity we'll still need 
[~nicomaillard]'s work on PHOENIX-92.

> Query server
> ------------
>
>                 Key: PHOENIX-971
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-971
>             Project: Phoenix
>          Issue Type: New Feature
>            Reporter: Andrew Purtell
>
> Host the JDBC driver in a query server process that can be deployed as a 
> middle tier between lighter weight clients and Phoenix+HBase. This would 
> serve a similar optional role in Phoenix deployments as the 
> [HiveServer2|https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2]
>  does in Hive deploys.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to