Tuple mapreduce:这篇文章:Tuple MapReduce: beyond classic MapReduce 介绍了Pangool的主体思想,利用tuple,在经典mapreduce上提供更易用的API。
特性:
- 支持三元组而不是key-value(直观上三元组的确能对group、sort、join等操作有更好的支持)
- 简单的二次排序方式
- 内建的reduce端连接
- 保持性能的同时提高灵活性(保持性能是相对pig、hive等来说的,灵活性是相对hadoop的mapreduce API来说的)。
- 对thrift和ProtoStuff的内建支持 #这个比较有兴趣
- 支持multipleInputs和multipleOutputs #这个好像也不算什么特性
- 100%兼容hadoop, 1.0, 0.20.X and CDH3.
总体来说,我觉得主要的特点就是,提供了方便易用的join、sort、group等操作的接口,同时内建了thrift和protocol,在保持性能的同时,提供灵活的api。
由于某些原因,自己用java写mapreduce比用pig之类的更多些,有些东西用pig还真不知道怎么实现,但天天写join、group等操作还是很恶心的,所以觉得这个工具不错。
pig和hive的执行速度不怎么样,如果要快可能还需要自己去优化,偶尔会听到有人抱怨pig的速度太慢,但他们又不愿意写mapreduce,pangool算是在灵活性和性能上做一个平衡吧。
内建thrift和protoStuff对我很吸引,深受其苦就是。
说一下编译Pangool源码:
环境:
1、hadoop,执行test的时候就需要
2、git
3、maven (我使用的是maven3)
首先获取源码:
git clone git@github.com:datasalt/pangool.git
install:
mvn clean install
注:test case需要hadoop 环境,否则无法通过执行。