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

Subramaniam Krishnan commented on HADOOP-3387:
----------------------------------------------


The MultiFileInputFormat has the following deficiencies:

1) Assume you have 5 small(100KB) files & the number of Maps specified is 10, 5 
Maps will still be allocated when 1 would have been sufficient. This is the 
case whenever you have small files(size less than DFS Block Size) & number of 
Maps specified is more than the number of files.
2)  The MultiFileInputFormat doesn't handle large files efficiently. Assume the 
opposite scenario - you have 5 large(~1GB) file & the number of Maps specified 
is 3, only 3 Maps will be allocated which is insufficient. This is the case 
whenever you have large files(size more than DFS Block Size) & number of Maps 
specified is less than the number of files.
3) The MultiFileInputFormat also doesn't handle a mixed bag of large & small 
files efficiently as explained above.

The Custom Splitter is a Balanced Multi File Splitter in the sense that it 
tries to align the splits closest to the DFS Block Size even if the files are 
small, large or a mixed bag.
We have an implementation for text/sequence record readers for our Balanced 
Multi File Splitter.

We also have a additional functionality that allows splitting based on user 
specified split size(defaulted to DFS Block Size, of course) rather than on 
number of splits.

> Custom Splitter for handling many small files
> ---------------------------------------------
>
>                 Key: HADOOP-3387
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3387
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: mapred
>            Reporter: Subramaniam Krishnan
>            Assignee: Subramaniam Krishnan
>             Fix For: 0.18.0
>
>
> Hadoop by default allocates a Map to a file irrespective of size. This is not 
> optimal if you have a large number of small files, for e.g:- If you 2000 
> 100KB files, 2000 Maps will be allocated for the job.
> The Custom Multi File Splitter collapses all the small files to a single 
> split till the DFS Block Size is hit. 
> It also take care of handling big files by splitting them on Block Size and 
> adding up all the reminders(if any) to a further splits of Block Size. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to