hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Owen O'Malley (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-2429) The lowest level map-reduce APIs should be byte oriented
Date Sun, 02 Mar 2008 08:16:50 GMT

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

Owen O'Malley commented on HADOOP-2429:


The object-based interfaces are far easier for Java programmers to use than byte-oriented
ones would be, therefore you aren't simplifying the design, but significantly complicating
it by adding another layer.

Other than trivial cases like IdentityMapper and IdentityReducer, I can't think of any Mapper
or Reducer that doesn't need to construct the object anyways. You can see in Google's map/reduce
paper that even their C++ word count example is serializing and deserializing the values.
Granted, they do it in the mapper and reducer, but I don't see that as more efficient. Looking
more deeply at the word count example, because they are doing the serialization in mapper
and reducer, they do a *bad* job of it. Their published example is converting the numbers
to ascii strings, while our example is uses raw bytes and is therefore more efficient.

It should also be noted that the object-based API can be treated as a byte-oriented as long
as the InputFormat and OutputFormat read and write a chunk of bytes, they will flow as bytes
through the rest of the system. Such an InputFormat was added in HADOOP-2603 and it would
be easy to write the corresponding OutputFormat, if there is a need.

Also note that when I wrote the C++ API, I did choose to use bytes rather than objects, partially
because dealing with objects in C++ is a pain. But for Java the pain points are different...

> The lowest level map-reduce APIs should be byte oriented
> --------------------------------------------------------
>                 Key: HADOOP-2429
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2429
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: mapred
>            Reporter: eric baldeschwieler
> As discussed here:
> https://issues.apache.org/jira/browse/HADOOP-1986#action_12551237
> The templates, serializers and other complexities that allow map-reduce to use arbitrary
types complicate the design and lead to lots of object creates and other overhead that a byte
oriented design would not suffer.  I believe the lowest level implementation of hadoop map-reduce
should have byte string oriented APIs (for keys and values).  This API would be more performant,
simpler and more easily cross language.
> The existing API could be maintained as a thin layer on top of the leaner API.

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

View raw message