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

Xuefu Zhang edited comment on SPARK-22765 at 12/20/17 5:45 AM:
---------------------------------------------------------------

Alright, I tested upfront allocation and its combinations with other 
improvement ideas and here is what I found:

1. the query: just one query, fairly complicated and represented by main spark 
job like this:
{code}
Status: Running (Hive on Spark job[4])
--------------------------------------------------------------------------------------
          STAGES   ATTEMPT        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  
FAILED  
--------------------------------------------------------------------------------------
Stage-10 .......         0      FINISHED    339        339        0        0    
   0  
Stage-11 .......         0      FINISHED    201        201        0        0    
   0  
Stage-12 .......         0      FINISHED    191        191        0        0    
   0  
Stage-13 .......         0      FINISHED    178        178        0        0    
   0  
Stage-14 .......         0      FINISHED    115        115        0        0    
   0  
Stage-15 .......         0      FINISHED    105        105        0        0    
   0  
Stage-16 .......         0      FINISHED    592        592        0        0    
   0  
Stage-17 .......         0      FINISHED    191        191        0        0    
   0  
Stage-4 ........         0      FINISHED    178        178        0        0    
   0  
Stage-5 ........         0      FINISHED    115        115        0        0    
   0  
Stage-6 ........         0      FINISHED    105        105        0        0    
   0  
Stage-7 ........         0      FINISHED    339        339        0        0    
   0  
Stage-8 ........         0      FINISHED    201        201        0        0    
   0  
Stage-9 ........         0      FINISHED    191        191        0        0    
   0  
--------------------------------------------------------------------------------------
{code}
2. Without any improvement, default 60s idleTime, Spark uses more than 3X 
resources compared to MR.
3. With idleTime=5s and the improvement in SPARK-21656, Spark uses about 2X 
resources.
4. Same as #3, but with idleTime=1s, Spark uses 1.4X resoures
5. Same as #3, but with additional upfront allocation Spark also uses 1.4X 
resource
6. Same as #5, but with additional improvement in SPARK-22683 (factor = 2), 
Spark uses 1.2X resource
7. Same as #6 but with factor=3, Spark uses 0.8X resources.

While this is just for one query, far from being conclusive, we can really see 
that how much those considerations might impact efficiency. I'm sure the 
mileage varies, but this at least shows there is a lot of room for Spark to 
improve resource utilization efficiency wrt scheduling.


was (Author: xuefuz):
Alright, I tested upfront allocation and its combinations with other 
improvement ideas and here is what I found:

1. the query: just one query, fairly complicated, represented by one of the 
main spark jobs:
{code}
Status: Running (Hive on Spark job[4])
--------------------------------------------------------------------------------------
          STAGES   ATTEMPT        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  
FAILED  
--------------------------------------------------------------------------------------
Stage-10 .......         0      FINISHED    339        339        0        0    
   0  
Stage-11 .......         0      FINISHED    201        201        0        0    
   0  
Stage-12 .......         0      FINISHED    191        191        0        0    
   0  
Stage-13 .......         0      FINISHED    178        178        0        0    
   0  
Stage-14 .......         0      FINISHED    115        115        0        0    
   0  
Stage-15 .......         0      FINISHED    105        105        0        0    
   0  
Stage-16 .......         0      FINISHED    592        592        0        0    
   0  
Stage-17 .......         0      FINISHED    191        191        0        0    
   0  
Stage-4 ........         0      FINISHED    178        178        0        0    
   0  
Stage-5 ........         0      FINISHED    115        115        0        0    
   0  
Stage-6 ........         0      FINISHED    105        105        0        0    
   0  
Stage-7 ........         0      FINISHED    339        339        0        0    
   0  
Stage-8 ........         0      FINISHED    201        201        0        0    
   0  
Stage-9 ........         0      FINISHED    191        191        0        0    
   0  
--------------------------------------------------------------------------------------
{code}
2. Without any improvement, default 60s idleTime, Spark uses more than 3X 
resources compared to MR.
3. With idleTime=5s and the improvement in SPARK-21656, Spark uses about 2X 
resources.
4. Same as #3, but with idleTime=1s, Spark uses 1.4X resoures
5. Same as #3, but with additional upfront allocation Spark also uses 1.4X 
resource
6. Same as #4, but with additional improvement in SPARK-22683 (factor = 2), 
Spark uses 1.2X resource
7. Same as #6 but with factor=3, Spark uses 0.8X resources.

While this is just for one query, far from being conclusive, we can really see 
that how much those considerations might impact efficiency. I'm sure the 
mileage varies, but this at least shows there is a lot of room for Spark to 
improve resource utilization efficiency wrt scheduling.

> Create a new executor allocation scheme based on that of MR
> -----------------------------------------------------------
>
>                 Key: SPARK-22765
>                 URL: https://issues.apache.org/jira/browse/SPARK-22765
>             Project: Spark
>          Issue Type: Improvement
>          Components: Scheduler
>    Affects Versions: 1.6.0
>            Reporter: Xuefu Zhang
>
> Many users migrating their workload from MR to Spark find a significant 
> resource consumption hike (i.e, SPARK-22683). While this might not be a 
> concern for users that are more performance centric, for others conscious 
> about cost, such hike creates a migration obstacle. This situation can get 
> worse as more users are moving to cloud.
> Dynamic allocation make it possible for Spark to be deployed in multi-tenant 
> environment. With its performance-centric design, its inefficiency has also 
> unfortunately shown up, especially when compared with MR. Thus, it's believed 
> that MR-styled scheduler still has its merit. Based on our research, the 
> inefficiency associated with dynamic allocation comes in many aspects such as 
> executor idling out, bigger executors, many stages (rather than 2 stages only 
> in MR) in a spark job, etc.
> Rather than fine tuning dynamic allocation for efficiency, the proposal here 
> is to add a new, efficiency-centric  scheduling scheme based on that of MR. 
> Such a MR-based scheme can be further enhanced and be more adapted to Spark 
> execution model. This alternative is expected to offer good performance 
> improvement (compared to MR) still with similar to or even better efficiency 
> than MR.
> Inputs are greatly welcome!



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to