Hadoop分布式计算架构流程分析-Hadoop商业环境实战

版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。

1. Hadoop分布式计算架构流程分析

  • 1)在MapReduce程序读取文件的输入目录上存放相应的文件。
  • 2)客户端程序在submit()方法执行前,获取待处理的数据信息,然后根据集群中参数的配置形成一个任务分配规划。
  • 3)客户端提交job.split、jar包、job.xml等文件给yarn,yarn中的resourcemanager启动MRAppMaster。
  • 4)MRAppMaster启动后根据本次job的描述信息,计算出需要的maptask实例数量,然后向集群申请机器启动相应数量的maptask进程。
  • 5)maptask利用客户指定的inputformat来读取数据,形成输入KV对。
  • 6)maptask将输入KV对传递给客户定义的map()方法,做逻辑运算
  • 7)map()运算完毕后将KV对序列化后写到环形缓冲区,环形缓冲区默认是100M,写满80%后,会根据Hash(结合Reduce Task 的数量,不会超过Reduce Task的数量)溢写,溢写过程中使缓存中的KV对按照K分区排序后不断写到磁盘文件从而形成不同的分区,若设置了本地聚合,则会合并Combiner多个溢写文件为一个。
  • 9)MRAppMaster监控到所有maptask进程任务完成之后,会根据客户指定的参数启动相应数- 量的reducetask进程,并告知reducetask进程要处理的数据分区。
  • 10)Reducetask进程启动之后,根据MRAppMaster告知的待处理数据所在位置,从若干台maptask运行所在机器上获取到若干个maptask输出结果文件,并在本地进行重新归并排序,然后按照相同key的KV为一个组,调用客户定义的reduce()方法进行逻辑运算。
  • 11)Reducetask运算完毕后,调用客户指定的outputformat将结果数据输出到外部存储。

2. Hadoop分布式计算流程图

  • 1)分布式的运算程序往往需要分成至少2个阶段。
  • 2)第一个阶段的maptask并发实例,完全并行运行,互不相干。
  • 3)第二个阶段的reduce task并发实例互不相干,但是他们的数据依赖于上一个阶段的所有maptask并发实例的输出。
  • 4)MapReduce编程模型只能包含一个map阶段和一个reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个mapreduce程序,串行运行。
    如下图展示了这个MapReduce过程:


    image
image

3 总结

秦凯新 于深圳

你可能感兴趣的:(Hadoop分布式计算架构流程分析-Hadoop商业环境实战)