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