Combiner
集群上的可用宽带限制了MapReduce作业数量,因此尽量避免map和reduce之间的数据传输是有利的,hadoop允许map任务指定一个combiner,combiiner的输出是reduce的输入;combiner属于优化方案,可以说是小型的reduce,就是小范围的reduce;combiner是通过Reducer类来定义的,要在job中设置combiner类;
Hadoop Stream
hadoop 提供了Mapreduce的API,允许你使用非java的其他语言来写自己的map reduce函数,hadoop stream采用unix标准流作为hadoop与应用程序之间的接口;map的输入数据通过标准输入流传递到map函数,并且是一行一行的传递,最后讲结果写到标准输出;map输出的键/值对是一一个制表符分隔的行,并且写入标准输出reduce函数的输入格式与值相同,并且通过标准输入流进行传输.reduce函数从标准输入流中读取输入行,输入行经过shuffle已排过序,最后写入结果;