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

Hari Sekhon updated HDFS-13720:
-------------------------------
    Description: 
Improvement Request for Anti-Affinity Block Placement across datanodes such 
that for a given data set the blocks are distributed evenly across all 
available datanodes in order to improve task scheduling while maintaining data 
locality.

Methods to be implemented:
 # dfs balancer command switch plus a target path of files / directories 
containing the blocks to be rebalanced
 # dfs client side write flag

Both options should proactively (re)distribute the given data set as evenly as 
possible across all datanodes in the cluster.

See this following Spark issue which causes massive under-utilisation across 
jobs. Only 30-50% of executor cores were being used for tasks due to data 
locality targeting. Many executors doing literally nothing, while holding 
significant cluster resources, because the data set, which in at least one job 
was large enough to have 30,000 tasks churning though slowly on only a subset 
of the available executors. The workaround in the end was to disable data local 
tasks in Spark, but if everyone did that the bottleneck would go back to being 
the network and it undermines Hadoop's first premise of don't move the data to 
compute. For performance critical jobs, returning containers to Yarn because 
they cannot find any data to execute on locally isn't a good idea either, they 
want the jobs to use all the resources available and allocated to the job, not 
just the resources on a subset of nodes that hold a given dataset or disabling 
data local task execution to pull half the blocks across the network to make 
use of the other half of the nodes.

https://issues.apache.org/jira/browse/SPARK-24474

  was:
Improvement Request for Anti-Affinity Block Placement across datanodes such 
that for a given data set the blocks are distributed evenly across all 
available datanodes in order to improve task scheduling while maintaining data 
locality.

Methods to be implemented:
 # balancer command switch plus a target path of files / directories containing 
the blocks to be rebalanced
 # client side write flag

Both options should proactively (re)distribute the given data set as evenly as 
possible across all datanodes in the cluster.

See this following Spark issue which causes massive under-utilisation across 
jobs. Only 30-50% of executor cores were being used for tasks due to data 
locality targeting. Many executors doing literally nothing, while holding 
significant cluster resources, because the data set, which in at least one job 
was large enough to have 30,000 tasks churning though slowly on only a subset 
of the available executors. The workaround in the end was to disable data local 
tasks in Spark, but if everyone did that the bottleneck would go back to being 
the network and it undermines Hadoop's first premise of don't move the data to 
compute. For performance critical jobs, returning containers to Yarn because 
they cannot find any data to execute on locally isn't a good idea either, they 
want the jobs to use all the resources available and allocated to the job, not 
just the resources on a subset of nodes that hold a given dataset or disabling 
data local task execution to pull half the blocks across the network to make 
use of the other half of the nodes.

https://issues.apache.org/jira/browse/SPARK-24474


> HDFS dataset Anti-Affinity Block Placement across all DataNodes for data 
> local task optimization (improve Spark executor utilization & performance)
> ---------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-13720
>                 URL: https://issues.apache.org/jira/browse/HDFS-13720
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: balancer & mover, block placement, performance
>    Affects Versions: 2.7.3
>         Environment: Hortonworks HDP 2.6
>            Reporter: Hari Sekhon
>            Priority: Major
>
> Improvement Request for Anti-Affinity Block Placement across datanodes such 
> that for a given data set the blocks are distributed evenly across all 
> available datanodes in order to improve task scheduling while maintaining 
> data locality.
> Methods to be implemented:
>  # dfs balancer command switch plus a target path of files / directories 
> containing the blocks to be rebalanced
>  # dfs client side write flag
> Both options should proactively (re)distribute the given data set as evenly 
> as possible across all datanodes in the cluster.
> See this following Spark issue which causes massive under-utilisation across 
> jobs. Only 30-50% of executor cores were being used for tasks due to data 
> locality targeting. Many executors doing literally nothing, while holding 
> significant cluster resources, because the data set, which in at least one 
> job was large enough to have 30,000 tasks churning though slowly on only a 
> subset of the available executors. The workaround in the end was to disable 
> data local tasks in Spark, but if everyone did that the bottleneck would go 
> back to being the network and it undermines Hadoop's first premise of don't 
> move the data to compute. For performance critical jobs, returning containers 
> to Yarn because they cannot find any data to execute on locally isn't a good 
> idea either, they want the jobs to use all the resources available and 
> allocated to the job, not just the resources on a subset of nodes that hold a 
> given dataset or disabling data local task execution to pull half the blocks 
> across the network to make use of the other half of the nodes.
> https://issues.apache.org/jira/browse/SPARK-24474



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to