[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2019-05-17 Thread Biju Nair (JIRA)


 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Biju Nair updated HBASE-12790:
--
Component/s: Scheduler

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>  Components: Scheduler
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>Priority: Major
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch, 
> HBASE-12790_trunk_1.patch, PHOENIX_4.5.3-HBase-0.98-2317-SNAPSHOT.zip
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2018-09-10 Thread Andrew Purtell (JIRA)


 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell updated HBASE-12790:
---
Status: Open  (was: Patch Available)

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>Priority: Major
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch, 
> HBASE-12790_trunk_1.patch, PHOENIX_4.5.3-HBase-0.98-2317-SNAPSHOT.zip
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-10-15 Thread Andrew Purtell (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell updated HBASE-12790:
---
Attachment: PHOENIX_4.5.3-HBase-0.98-2317-SNAPSHOT.zip

In the interest of moving this forward we asked the perf guys on our Phoenix 
team to test HBase 0.98.16-SNAPSHOT plus HBASE-12790 and Phoenix 4.5.3-SNAPSHOT 
with a small patch that allows it to take advantage of the new 
Scan#getGroupingId API. The server side configuration was updated to specify 
RoundRobinRPCScheduler for RPC scheduling. The comparison results are attached 
as "PHOENIX_4.5.3-HBase-0.98-2317-SNAPSHOT.zip"

It's an indirect result in that we are viewing perf through the Phoenix lens, 
but I'm happy to report there are no perf regressions found, only improvements. 
Therefore I have no concerns in that regard about getting this committed.

I put up some comments on https://reviews.apache.org/r/32447. Getting there.

/cc [~jamestaylor]

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch, 
> HBASE-12790_trunk_1.patch, PHOENIX_4.5.3-HBase-0.98-2317-SNAPSHOT.zip
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-09-11 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Status: Open  (was: Patch Available)

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-09-11 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Attachment: HBASE-12790_trunk_1.patch

Patch for trunk.

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch, 
> HBASE-12790_trunk_1.patch
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-09-11 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Status: Patch Available  (was: Open)

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch, 
> HBASE-12790_trunk_1.patch
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-09-10 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Attachment: HBASE-12790_5.patch

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-09-10 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Status: Patch Available  (was: Open)

> Support fairness across parallelized scans
> --
>
> Key: HBASE-12790
> URL: https://issues.apache.org/jira/browse/HBASE-12790
> Project: HBase
>  Issue Type: New Feature
>Reporter: James Taylor
>Assignee: ramkrishna.s.vasudevan
>  Labels: Phoenix
> Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
> HBASE-12790_1.patch, HBASE-12790_5.patch, HBASE-12790_callwrapper.patch
>
>
> Some HBase clients parallelize the execution of a scan to reduce latency in 
> getting back results. This can lead to starvation with a loaded cluster and 
> interleaved scans, since the RPC queue will be ordered and processed on a 
> FIFO basis. For example, if there are two clients, A & B that submit largish 
> scans at the same time. Say each scan is broken down into 100 scans by the 
> client (broken down into equal depth chunks along the row key), and the 100 
> scans of client A are queued first, followed immediately by the 100 scans of 
> client B. In this case, client B will be starved out of getting any results 
> back until the scans for client A complete.
> One solution to this is to use the attached AbstractRoundRobinQueue instead 
> of the standard FIFO queue. The queue to be used could be (maybe it already 
> is) configurable based on a new config parameter. Using this queue would 
> require the client to have the same identifier for all of the 100 parallel 
> scans that represent a single logical scan from the clients point of view. 
> With this information, the round robin queue would pick off a task from the 
> queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
> starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-04-16 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Status: Open  (was: Patch Available)

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
Assignee: ramkrishna.s.vasudevan
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
 HBASE-12790_1.patch


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-04-16 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Attachment: HBASE-12790_callwrapper.patch

Attaching a patch that has been tested in real cluster.  Am working on taking 
the performance numbers for scans.  Currently this patch implements the round 
robin thing only for scans.  Am not very clear on how to write a generic test 
case. Any suggestions in this area?
But pls take note of the following changes,
The RpcExecutor and the related Queue data structures will no longer work on 
CallRunner instead they will work on CallRunnerWrapper.  (better name?). This 
is because CallRunner every time depends on the 'call' object to determine its 
deadline when we use Deadline based comparator.  But since the 'call' can be 
nullified every time, the new data structure like 
AbstractPriorityRoundRobinQueue (Using TreeMap) suffers from NPE because of 
this nullification when it tries to apply the comparison. Also with this patch 
we calculate the deadline once when the 'call' starts and not every time. We 
ensure that we no longer depend on the 'call' object to know the deadline for 
comparisons.  
You could see that CallPriorityComparator has been removed.

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
Assignee: ramkrishna.s.vasudevan
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
 HBASE-12790_1.patch, HBASE-12790_callwrapper.patch


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-03-24 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Status: Patch Available  (was: Open)

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
 HBASE-12790_1.patch


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-03-24 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Attachment: HBASE-12790_1.patch

Updated patch with test case.  The round robin nature for the 
AbstractRoundRobinQueue has been corrected as in the first patch we were using 
one producer under a given priority and once it was over was moving over to the 
next producer.  Which means under Priority A if we had two groups A and B each 
with 10 task, then we were consuming all the 10 tasks under A and then moving 
on to B.  With the latest patch we ensure that we round robin between the task 
in A and B.

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch, 
 HBASE-12790_1.patch


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2015-03-19 Thread ramkrishna.s.vasudevan (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ramkrishna.s.vasudevan updated HBASE-12790:
---
Attachment: HBASE-12790.patch

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java, HBASE-12790.patch


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2014-12-31 Thread James Taylor (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

James Taylor updated HBASE-12790:
-
Issue Type: New Feature  (was: Bug)

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: New Feature
Reporter: James Taylor
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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


[jira] [Updated] (HBASE-12790) Support fairness across parallelized scans

2014-12-30 Thread James Taylor (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-12790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

James Taylor updated HBASE-12790:
-
Attachment: AbstractRoundRobinQueue.java

Alternate round-robin based-queue implementation for ThreadPoolExecutor

 Support fairness across parallelized scans
 --

 Key: HBASE-12790
 URL: https://issues.apache.org/jira/browse/HBASE-12790
 Project: HBase
  Issue Type: Bug
Reporter: James Taylor
  Labels: Phoenix
 Attachments: AbstractRoundRobinQueue.java


 Some HBase clients parallelize the execution of a scan to reduce latency in 
 getting back results. This can lead to starvation with a loaded cluster and 
 interleaved scans, since the RPC queue will be ordered and processed on a 
 FIFO basis. For example, if there are two clients, A  B that submit largish 
 scans at the same time. Say each scan is broken down into 100 scans by the 
 client (broken down into equal depth chunks along the row key), and the 100 
 scans of client A are queued first, followed immediately by the 100 scans of 
 client B. In this case, client B will be starved out of getting any results 
 back until the scans for client A complete.
 One solution to this is to use the attached AbstractRoundRobinQueue instead 
 of the standard FIFO queue. The queue to be used could be (maybe it already 
 is) configurable based on a new config parameter. Using this queue would 
 require the client to have the same identifier for all of the 100 parallel 
 scans that represent a single logical scan from the clients point of view. 
 With this information, the round robin queue would pick off a task from the 
 queue in a round robin fashion (instead of a strictly FIFO manner) to prevent 
 starvation over interleaved parallelized scans.



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