====
分区个数与reduceTask个数的关系:
如果分区的个数动态获取 HashPartitioner里(key.hashCode() & Integer.MAX_VALUE) % numReduceTask,好处:不存在谁大谁小的问题。
hashPartitioner ==》 分区个数 ==== reduceTask的个数
如果分区的个数手动指定,有><=三种情况:
分区个数 > reduceTask的个数 ==》 报错了
分区个数 = reduceTask的个数 ==》 刚刚好
分区个数 < reduceTask的个数 ==》 有闲置的reduceTask没有工作,输出空文件
====