Hi, who may help

We are running a Hadoop application that needs to use phoenix JDBC connection 
from the workers. 
The connection works, but when too many connection established at the same 
time, it throws RPC timeouts

Error: java.io.IOException: org.apache.phoenix.exception.PhoenixIOException: 
Failed after attempts=36, exceptions: Wed Feb 20 20:02:43 UTC 2019, null, 
java.net.SocketTimeoutException: callTimeout=60000, callDuration=60506. ...

So we have figured we should probably set a higher  hbase.rpc.timeout value, 
but then it comes to the issue:

A little bit background on how we run the application

Here is how we get PhoenixConnection from java program
DriverManager.getConnection("jdbc:phoenix:host", props)
And we trigger the program by using 
hadoop jar $test_jar


We have tried multiple approaches to load hbase/phoenix configuration, but none 
of them get respected by PhoenixConnection, here are the methods we tried 
* Pass hbase_conf_dir through HADOOP_CLASSPATH, so run the hadoop application 
like HADOOP_CLASSPATH=/etc/hbase/conf/ hadoop jar $test_jar . However, 
PhoenixConnection doesn’t respect the parameters
* Tried passing -Dhbase.rpc.timeout=1800, which is picked up by hbase conf 
object, but not PhoniexConnection
* Explicitly set those parameters and pass them to the PhoenixConnection 
props.setProperty("hbase.rpc.timeout", "1800");
props.setProperty(“phoenix.query.timeoutMs", "1800");
Also didn’t get respected by PhoenixConnection
* also tried what is suggested by phoenix here 
https://phoenix.apache.org/#connStr , use :longRunning together with those 
properties, still didn’t seem to work


Besides all those approaches we tried, I have explicitly output those 
parameters we care from the connection, 
connection.getQueryServices().getProps() 
The default values I got are 60000 for hbase.rpc.timeout, and 600k for 
phoenix.query.timeoutMs , so I have tried to run a query lthat would run longer 
than 10 mins, Ideally it should timeout, however, it runs over 20 mins and 
didn’t timeout. So I’m wondering how PhoenixConnection respect those properties?


So with some of your help, we’d like to know if there’s any thing wrong with 
our approaches. And we’d like to get rid of those SocketTimeExceptions.
We are using phoenix-core version is 4.7.0-clabs-phoenix1.3.0 , and our 
phoenix-client version is phoenix-4.7.0-clabs-phoenix1.3.0.23  (we have tried 
phoenix-4.14.0-HBase-1.3 as well, which didn’t work either).


Thanks for your time




Reply via email to