Hi Krunal,

Thanks for the explanation! I am back to work now. Could you please also
post the table definition? I have some guess here, but need more
information to confirm. And which version of Phoenix are you using?


Thanks,
Maryann

On Wed, May 27, 2015 at 4:55 PM, Krunal Varajiya <krunal.varaj...@ask.com>
wrote:

>   Hey Maryann
>
>  Thanks for your reply! I understand it is difficult to access some stuff
> in China! I can wait till you come back, meantime I will keep you posted on
> if we make any progress on this!
>
>  My comments are below in blue:
>
>  Have a fun time in China!
>  - Krunal
>
>
>   From: Maryann Xue <maryann....@gmail.com>
> Reply-To: "user@phoenix.apache.org" <user@phoenix.apache.org>
> Date: Tuesday, May 26, 2015 at 5:45 PM
> To: "user@phoenix.apache.org" <user@phoenix.apache.org>
> Subject: Re: Join create OOM with java heap space on phoenix client
>
>  Hi Krunal,
>
>  Sorry for the late reply. I have been on vacation.
>
>  1. Can you make sure that the connection/statement is closed after each
> run of your query (even with exception)?
>
>  *I think this is related to second issue mentioned below as it happens
> for join. I tried some other queries they are working fine!*
>
>  2. You might want to try switching the join tables in your query first
> by putting the larger table as LHS, and if it still does not work, you can
> force a merge join by adding hint "USE_SORT_MERGE_JOIN".
>
>   *I have tried changing lhs and rhs, but no luck. I have also tried
> "USE_SORT_MERGE_JOIN" but for some reason it crashes region server while
> scanning result to local.*
>  *I have also tried changing some tuning parameters, but none of the
> settings worked!*
>  *One thing I am curious is why it is dumping data in local heap, I see
> millions of instances for org.apache.phoenix.expression.literalexpression.
> Shouldn't it execute joins on server side? *
>  *I tried increasing memory upto 64gb and still it fails! **This is just
> one single connection and only one query running at a time, I am not sure
> what will happen with multiple connection and multiple queries!*
> *A**nd if you see in example my data size for both LHS and RHS is not
> that big. These are sample tables come with Phoenix.*
>
>  Thanks,
> Maryann
>
> On Thursday, May 21, 2015, Krunal Varajiya <krunal.varaj...@ask.com>
> wrote:
>
>>  Hi
>>
>>  I have 2 issues with phoenix client:
>>
>>    1. Heap memory is not cleanup after each query is finished. So, it
>>    keeps increasing every time when we submit new query.
>>    2. I am try to do a normal join operation on two tables but getting
>>    exception. Below is the details:
>>
>>  These are some sample queries I tried:
>>
>>    1. select p1.host, count(1) from PERFORMANCE_5000000 p1,
>>    PERFORMANCE_25000000 p2 where p1.host = p2.host group by p1.host;
>>    2. select p1.host from PERFORMANCE_5000000 p1, PERFORMANCE_25000000
>>    p2 where p1.host = p2.host group by p1.host;
>>    3. select count(1) from PERFORMANCE_5000000 p1, PERFORMANCE_25000000
>>    p2 where p1.host = p2.host group by p1.host;
>>
>>  Here is explain plan:
>>
>>  explain  select count(1) from PERFORMANCE_5000000 p1,
>> PERFORMANCE_25000000 p2 where p1.host = p2.host group by p1.host;
>>
>> +------------------------------------------+
>>
>> |                   PLAN                   |
>>
>> +------------------------------------------+
>>
>> | CLIENT 9-CHUNK PARALLEL 1-WAY FULL SCAN OVER PERFORMANCE_5000000 |
>>
>> |     SERVER FILTER BY FIRST KEY ONLY      |
>>
>> |     SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [HOST] |
>>
>> | CLIENT MERGE SORT                        |
>>
>> |     PARALLEL INNER-JOIN TABLE 0 (SKIP MERGE) |
>>
>> |         CLIENT 18-CHUNK PARALLEL 1-WAY FULL SCAN OVER
>> PERFORMANCE_25000000 |
>>
>> |             SERVER FILTER BY FIRST KEY ONLY |
>>
>> |     DYNAMIC SERVER FILTER BY HOST IN (P2.HOST) |
>>
>> +------------------------------------------+
>>
>> 8 rows selected (0.127 seconds)
>>
>>   Phoenix client heap size is 16GB. ( noticed that above queries are
>> dumping data in local heap, I see millions of instances for
>> org.apache.phoenix.expression.literalexpression)
>>
>> and my exceptions are:
>>
>> java.sql.SQLException: Encountered exception in sub plan [0] execution.
>>
>> at org.apache.phoenix.execute.HashJoinPlan.iterator(HashJoinPlan.java:156)
>>
>> at
>> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:235)
>>
>> at
>> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:226)
>>
>> at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
>>
>> at
>> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:225)
>>
>> at
>> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1066)
>>
>> at sqlline.Commands.execute(Commands.java:822)
>>
>> at sqlline.Commands.sql(Commands.java:732)
>>
>> at sqlline.SqlLine.dispatch(SqlLine.java:808)
>>
>> at sqlline.SqlLine.begin(SqlLine.java:681)
>>
>> at sqlline.SqlLine.start(SqlLine.java:398)
>>
>> at sqlline.SqlLine.main(SqlLine.java:292)
>>
>> Caused by: java.sql.SQLException:
>> java.util.concurrent.ExecutionException: java.lang.Exception:
>> java.lang.OutOfMemoryError: Java heap space
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient.addServerCache(ServerCacheClient.java:247)
>>
>> at
>> org.apache.phoenix.join.HashCacheClient.addHashCache(HashCacheClient.java:83)
>>
>> at
>> org.apache.phoenix.execute.HashJoinPlan$HashSubPlan.execute(HashJoinPlan.java:338)
>>
>> at org.apache.phoenix.execute.HashJoinPlan$1.call(HashJoinPlan.java:135)
>>
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>>
>> at java.lang.Thread.run(Thread.java:745)
>>
>> Caused by: java.util.concurrent.ExecutionException: java.lang.Exception:
>> java.lang.OutOfMemoryError: Java heap space
>>
>> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>
>> at java.util.concurrent.FutureTask.get(FutureTask.java:206)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient.addServerCache(ServerCacheClient.java:239)
>>
>> ... 7 more
>>
>> Caused by: java.lang.Exception: java.lang.OutOfMemoryError: Java heap
>> space
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:212)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:182)
>>
>> ... 4 more
>>
>> Caused by: java.lang.OutOfMemoryError: Java heap space
>>
>> May 20, 2015 4:58:01 PM ServerCommunicatorAdmin reqIncoming
>>
>> WARNING: The server has decided to close this client connection.
>>
>> 15/05/20 16:56:43 WARN client.HTable: Error calling coprocessor service
>> org.apache.phoenix.coprocessor.generated.ServerCachingProtos$ServerCachingService
>> for row CSGoogle\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
>>
>> java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java
>> heap space
>>
>> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>
>> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
>>
>> at
>> org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1620)
>>
>> at
>> org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1577)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:188)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:182)
>>
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>>
>> at java.lang.Thread.run(Thread.java:745)
>>
>> Caused by: java.lang.OutOfMemoryError: Java heap space
>>
>> at com.google.protobuf.ByteString$CodedBuilder.<init>
>> (ByteString.java:907)
>>
>> at com.google.protobuf.ByteString$CodedBuilder.<init>
>> (ByteString.java:902)
>>
>> at com.google.protobuf.ByteString.newCodedBuilder(ByteString.java:898)
>>
>> at
>> com.google.protobuf.AbstractMessageLite.toByteString(AbstractMessageLite.java:49)
>>
>> at
>> org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecService(RegionCoprocessorRpcChannel.java:81)
>>
>> at
>> org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callMethod(CoprocessorRpcChannel.java:57)
>>
>> at
>> org.apache.phoenix.coprocessor.generated.ServerCachingProtos$ServerCachingService$Stub.addServerCache(ServerCachingProtos.java:3270)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1$1.call(ServerCacheClient.java:204)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1$1.call(ServerCacheClient.java:189)
>>
>> at org.apache.hadoop.hbase.client.HTable$17.call(HTable.java:1608)
>>
>> ... 4 more
>>
>> 0: jdbc:phoenix:prbhadoop004iad.io.askjeeves.> 15/05/20 16:56:43 WARN
>> client.HTable: Error calling coprocessor service
>> org.apache.phoenix.coprocessor.generated.ServerCachingProtos$ServerCachingService
>> for row EUGoogle\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
>>
>> java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java
>> heap space
>>
>> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>
>> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
>>
>> at
>> org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1620)
>>
>> at
>> org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1577)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:188)
>>
>> at
>> org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:182)
>>
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>>
>> at java.lang.Thread.run(Thread.java:745)
>>
>> Caused by: java.lang.OutOfMemoryError: Java heap space
>>
>> 15/05/20 16:59:37 WARN
>> client.HConnectionManager$HConnectionImplementation: This client just lost
>> it's session with ZooKeeper, closing it. It will be recreated next time
>> someone needs it
>>
>> org.apache.zookeeper.KeeperException$SessionExpiredException:
>> KeeperErrorCode = Session expired
>>
>> at
>> org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:403)
>>
>> at
>> org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:321)
>>
>> at
>> org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
>>
>> at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
>>
>>
>>  Error:  (state=,code=0)
>>
>> java.sql.SQLFeatureNotSupportedException
>>
>> at
>> org.apache.phoenix.jdbc.PhoenixStatement.cancel(PhoenixStatement.java:958)
>>
>> at sqlline.DispatchCallback.forceKillSqlQuery(DispatchCallback.java:83)
>>
>> at sqlline.SqlLine.begin(SqlLine.java:695)
>>
>> at sqlline.SqlLine.start(SqlLine.java:398)
>>
>> at sqlline.SqlLine.main(SqlLine.java:292)
>>
>>
>>  Can someone please help?
>>
>>
>>  Thanks!
>>
>

Reply via email to