[ 
https://issues.apache.org/jira/browse/MAPREDUCE-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14040691#comment-14040691
 ] 

Sean Zhong commented on MAPREDUCE-2841:
---------------------------------------

Latest native task code is posted at: 
https://github.com/intel-hadoop/nativetask/tree/native_output_collector for 
easy review. Currently the code is patched againt Hadoop2.2.

Some features highlights:
1. Full performance test covered 
https://github.com/intel-hadoop/nativetask/tree/native_output_collector#what-is-the-benefit
2. Support all values types which extends Writable.
3. Support all key types in hadoop.io, and most key types in project hive, pig, 
mahout, hbase. For a list of supported key types, please check 
https://github.com/intel-hadoop/nativetask/wiki#supported-key-types
4.  Fully support java combiner. 
5. Support large key and values.
6. A full test suite for key value combination.
7. Support GZIP, LZ4, and Snappy.

Items we are still working on:
1. Extract support  for  Hive/Pig/HBase/Mahout platforms to standalone jars, 
and decouple the dependency with native task source code.
2. More documents describing the api.

For design, test, and doc, please check
https://github.com/intel-hadoop/nativetask/tree/native_output_collector
https://github.com/intel-hadoop/nativetask/wiki



> Task level native optimization
> ------------------------------
>
>                 Key: MAPREDUCE-2841
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-2841
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: task
>         Environment: x86-64 Linux/Unix
>            Reporter: Binglin Chang
>            Assignee: Binglin Chang
>         Attachments: DESIGN.html, MAPREDUCE-2841.v1.patch, 
> MAPREDUCE-2841.v2.patch, dualpivot-0.patch, dualpivotv20-0.patch, 
> fb-shuffle.patch
>
>
> I'm recently working on native optimization for MapTask based on JNI. 
> The basic idea is that, add a NativeMapOutputCollector to handle k/v pairs 
> emitted by mapper, therefore sort, spill, IFile serialization can all be done 
> in native code, preliminary test(on Xeon E5410, jdk6u24) showed promising 
> results:
> 1. Sort is about 3x-10x as fast as java(only binary string compare is 
> supported)
> 2. IFile serialization speed is about 3x of java, about 500MB/s, if hardware 
> CRC32C is used, things can get much faster(1G/
> 3. Merge code is not completed yet, so the test use enough io.sort.mb to 
> prevent mid-spill
> This leads to a total speed up of 2x~3x for the whole MapTask, if 
> IdentityMapper(mapper does nothing) is used
> There are limitations of course, currently only Text and BytesWritable is 
> supported, and I have not think through many things right now, such as how to 
> support map side combine. I had some discussion with somebody familiar with 
> hive, it seems that these limitations won't be much problem for Hive to 
> benefit from those optimizations, at least. Advices or discussions about 
> improving compatibility are most welcome:) 
> Currently NativeMapOutputCollector has a static method called canEnable(), 
> which checks if key/value type, comparator type, combiner are all compatible, 
> then MapTask can choose to enable NativeMapOutputCollector.
> This is only a preliminary test, more work need to be done. I expect better 
> final results, and I believe similar optimization can be adopt to reduce task 
> and shuffle too. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to