You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "zhuweimin (JIRA)" <ji...@apache.org> on 2009/03/03 06:46:56 UTC

[jira] Commented: (HADOOP-3227) Implement a binary input/output format for Streaming

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

zhuweimin commented on HADOOP-3227:
-----------------------------------

I created two classes for process the standard binary file.it's BinaryInputFormat and BinaryOutputFormat
It is necessary to modify the PipeMapper,PipeMapRed,PipeReducer class for that. 

Usage is:
$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar 
    -input myInputDirs 
    -output myOutputDir 
    -mapper /bin/cat 
    -reducer /bin/wc
    -inputformat org.apache.hadoop.streaming.BinaryInputFormat
    -outputformat org.apache.hadoop.streaming.BinaryOutputFormat

example:
1.the input is binary of map task,the output is text,and no reducer
$bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
    -input myInputDirs 
    -output myOutputDir
    -mapper "wc -c"
    -numReduceTasks 0
    -inputformat org.apache.hadoop.streaming.BinaryInputFormat

2.the map's input is binary file,the output is binary file too,and no reducer
$bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
    -input myInputDirs 
    -output myOutputDir
    -mapper "convert -resize 200% - -" 
    -numReduceTasks 0
    -inputformat org.apache.hadoop.streaming.BinaryInputFormat
    -outputformat org.apache.hadoop.streaming.BinaryOutputFormat

notes:the convert is from ImageMagick

3.the map's input is binary file,the output is binary file too,and the reducer's input is binary file,but the output is text
$bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
    -input myInputDirs 
    -output myOutputDir
    -mapper "convert -resize 200% - -"
    -reducer "identify -"
  -numReduceTasks 1
    -inputformat org.apache.hadoop.streaming.BinaryInputFormat
    -outputformat org.apache.hadoop.streaming.BinaryOutputFormat

4.the map's input is binary file,the output is binary file too,and the reducer's input is binary file,but the output is binary file too

It doesn't support it.

> Implement a binary input/output format for Streaming
> ----------------------------------------------------
>
>                 Key: HADOOP-3227
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3227
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: contrib/streaming
>            Reporter: Arun C Murthy
>            Assignee: Arun C Murthy
>
> Lots of streaming applications process textual data with 1 record per line and fields separated by a delimiter. It turns out that there is no point in using any of Hadoop's input/output formats since the streaming script/binary itself will parse the input and break into records and fields. In such cases we should provide users with a binary input/output format which just sends 64k (or so) blocks of data directly from HDFS to the streaming application.
> I did something very similar for Pig-Streaming (PIG-94 - BinaryStorage) which resulted in 300%+ speedup for scanning (identity mapper & map-only jobs) data... the parsing done by input/output formats in these cases were pure-overhead.

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