MR编程模型和任务运行过程

MR编程模型

MR编程模型主要分为五个步骤:输入、映射、分组、规约、输出。

  1. 输入(InputFormat):
    主要包含两个步骤—数据分片、迭代输入
    数据分片(getSplits):数据分为多少个splits,就有多少个map task;
    单个split的大小,由设置的split.minsize和split.maxsize决定;
    公式为 max{minsize, min{maxsize, blocksize}};
    hadoop2.7.3之前blocksize默认64M,之后默认128M。

    决定了单个split大小之后,就是hosts选择,一个split可能包含多个block(将minsize设置大于128M);
    而多个block可能分布在多个hosts节点上(一个block默认3备份,如果4个block就可能在12个节点),getsplits会选择包含数据最多的一部分hosts。
    由此可见,为了让数据本地话更合理,最好是一个block一个task,也就是说split大小跟block大小一致。
    
    getSplits会产生两个文件
    job.split:
    
    迭代输入:
  2. 映射(map)
  3. 分组(partition)
  4. 规约(reduce)
  5. 输出(OutputFormat)

猜你喜欢

转载自blog.51cto.com/4876017/2377434