1、
map的数量是什么决定的,
reduce的数量是什么决定的
mapreduce的中间发生了什么 http://langyu.iteye.com/blog/992916
请用实例举例
1、map的数量怎么决定:
splitSize = max (minSize, min(goalSize, dfs.block.size))
http://blog.csdn.net/strongerbit/article/details/7440111
第一种情况:
3.1 减小 Mapper数量
3.1.1 输入文件size巨大,但不是小文件
增大
mapred.min.split.size
的值
3.1.2 输入文件数量巨大,且都是小文件
CombineFileInputFormat 使用这个类3.2 增加 Mapper数量
即减小blockSize或者减小mapred.min.split.size的值。
2、reduce的数量 。
默认值是1。
3、map和reduce之间发生了什么?
shuufle的过程
map端
1、 整个流程我分了四步。简单些可以这样说,每个map task都有一个内存缓冲区,存储着map的输出结果,当缓冲区快满的时候需要将缓冲区的数据以一个临时文件的方式存放到磁盘,当整个map task结束后再对磁盘中这个map task产生的所有临时文件做合并,生成最终的正式输出文件,然后等待reduce task来拉数据。
reduce端
2、1. Copy过程
2. Merge阶段
3. Reducer的输入文件
3、说出hadoop需要改进的地方,并且提出建议
1、map reduce两个阶段都产生的临时数据都需要写入磁盘,然后在从磁盘读取数据,增加了磁盘的io性能,导致任务执行缓慢
对于可以装入内存的数据,不需要写入磁盘了,直接从内存进行处理
2、默认mapreduce是对key进行排序的, 而有些任务是不需要排序这个要求的,影响任务的速度
对于不需要排序的任务,可以进行不排序。
3、
不适合事务/单一请求处理
4、. 不能随即读取
5、以蛮力代替索引
6、 1、数据必须先存储,才能运算。