[ 
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:
---------------------------------------

-1

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.

Reply via email to