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

Chris Nauroth commented on HADOOP-12878:
----------------------------------------

>From reviewing the description, there might be a misunderstanding about the 
>implementation in hadoop-azure.

bq. We should mimic Azures implementation: a config setting 
fs.s3a.block.location.impersonatedhost where the user can enter the list of 
hostnames in the cluster to return to getFileBlockLocations.

The hadoop-azure implementation currently reports the same host for every block 
location.  That host is configurable and defaults to "localhost".  I'm not 
aware of a way to get it to use a mix of different hostnames.

What WASB does differently from S3A right now is that it overrides 
{{getFileBlockLocations}} to mimic the concept of block size and use that block 
size to divide a file and report that it has multiple block locations.  For 
something like MapReduce, that translates to multiple input splits, more map 
tasks and a greater opportunity for I/O parallelism on jobs that consume a 
small number of very large files.  S3A is different in that it inherits the 
{{getFileBlockLocations}} implementation from the superclass, which always 
reports that the file has exactly 1 block location.  That could mean that for 
example, S3A would experience a bottleneck on a job whose input is a single 
very large file, because it would get only 1 input split.

If use of the same host name in every block location can cause scheduling 
bottlenecks at the ResourceManager, then I have to assume that WASB is prone to 
that same problem today.  Echoing Steve's comment, if any code changes done 
here are self-contained and reusable, then S3A, WASB and any other file system 
could call it to get the benefits.

> Impersonate hosts in s3a for better data locality handling
> ----------------------------------------------------------
>
>                 Key: HADOOP-12878
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12878
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>    Affects Versions: 2.8.0
>            Reporter: Thomas Demoor
>            Assignee: Thomas Demoor
>
> Currently, {{localhost}} is passed as locality for each block, causing all 
> blocks involved in job to initially target the same node (RM), before being 
> moved by the scheduler (to a rack-local node). This reduces parallelism for 
> jobs (with short-lived mappers). 
> We should mimic Azures implementation: a config setting 
> {{fs.s3a.block.location.impersonatedhost}} where the user can enter the list 
> of hostnames in the cluster to return to {{getFileBlockLocations}}. 
> Possible optimization: for larger systems, it might be better to return N 
> (5?) random hostnames to prevent passing a huge array (the downstream code 
> assumes size = O(3)).



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

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

Reply via email to