A bit more information, I feel the classpath didn't get passed in correctly
by doing

conf = HBaseConfiguration.addHbaseResources(super.getConf());

and this conf also didn't pick up the expected properties


On Wed, Feb 20, 2019 at 3:56 PM Xiaoxiao Wang <xxw...@23andme.com> wrote:

> Pedro
>
> thanks for your info, yes, I have tried both
> HADOOP_CLASSPATH=/etc/hbase/conf/hbase-site.xml and
> HADOOP_CLASSPATH=/etc/hbase/conf/ (without file), and yes checked
> hadoop-env.sh as well to make sure it did
> HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/others
>
> And also for your second question, it is indeed a map reduce job, and it
> is trying to query phoenix from map function! (and we make sure all the
> nodes have hbase-site.xml installed properly )
>
> thanks
>
> On Wed, Feb 20, 2019 at 3:53 PM Pedro Boado <pedro.bo...@gmail.com> wrote:
>
>> Your classpath variable should be pointing to the folder containing your
>> hbase-site.xml and not directly to the file.
>>
>> But certain distributions tend to override that envvar inside
>> hadoop-env.sh
>> or hadoop.sh .
>>
>> Out of curiosity, have you written a map-reduce application and are you
>> querying phoenix from map functions?
>>
>> On Wed, 20 Feb 2019, 23:34 Xiaoxiao Wang, <xxw...@23andme.com.invalid>
>> wrote:
>>
>> > HI Pedro
>> >
>> > thanks for your help, I think we know that we need to set the classpath
>> to
>> > the hadoop program, and what we tried was
>> > HADOOP_CLASSPATH=/etc/hbase/conf/hbase-site.xml hadoop jar $test_jar
>> but it
>> > didn't work
>> > So we are wondering if anything we did wrong?
>> >
>> > On Wed, Feb 20, 2019 at 3:24 PM Pedro Boado <pbo...@apache.org> wrote:
>> >
>> > > Hi,
>> > >
>> > > How many concurrent client connections are we talking about? You
>> might be
>> > > opening more connections than the RS can handle ( under these
>> > circumstances
>> > > most of the client threads would end exhausting their retry count ) .
>> I
>> > > would bet that you've get a bottleneck in the RS keeping
>> SYSTEM.CATALOG
>> > > table (this was an issue in 4.7 ) as every new connection would be
>> > querying
>> > > this table first.
>> > >
>> > > Try to update to our cloudera-compatible parcels instead of using
>> clabs -
>> > > which are discontinued by Cloudera and not supported by the Apache
>> > Phoenix
>> > > project - .
>> > >
>> > > Once updated to phoenix 4.14 you should be able to use
>> > > UPDATE_CACHE_FREQUENCY
>> > > property in order to reduce pressure on system tables.
>> > >
>> > > Adding an hbase-site.xml with the required properties to the client
>> > > application classpath should just work.
>> > >
>> > > I hope it helps.
>> > >
>> > > On Wed, 20 Feb 2019, 22:50 Xiaoxiao Wang, <xxw...@23andme.com.invalid
>> >
>> > > wrote:
>> > >
>> > > > 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