一步一步学习hadoop(四)

来源:互联网 发布:测量员软件隧道教程 编辑:程序博客网 时间:2024/04/26 02:49
hadoop作业执行的概念介绍
hadoop框架将作业分成若干小任务(task),包括map任务和reduce任务,其中reduce任务由作业提交者明确指定,框架默认为只有一个reduce任务
hadoop框架通过两类节点控制作业的执行过程,这两类节点是jobtracker和tasktracker节点。
  1'jobtracker通过调度tasktracker上运行的任务来协调运行在系统上的作业
  2'tasktracker在协调本身map任务或者reduce任务的同时,向jobtracker报告其下的map任务和reduce任务的进度
  3'如果tasktracker中的某个任务失败了,jobtracker在另外的tasktracker上重新执行失败的任务


一个mapreduce作业的一生历程。

1.客户端运行一个作业(job),一个作业是一个执行单元,作业的三要素是,输入数据,mapreduce程序和配置信息。
2.框架先检查输入的文件是否合法,输出目录是否存在,存在则作业退出运行。
3.向jobtracker申请一个新的jobid
4.客户端将作业代码,配置信息以及其它一些相关信息拷贝到HDFS文件系统中,这样作业的所有任务都可以快速获取和该作业相关的所有资料。
5.客户端提交作业(submit),jobtracker初始化该作业
6.jobtracker获取该作业的输入分片消息,这里并不实际获取块数据,只是获取块的大小,和每一块的位置信息。jobtracker根据这些信息,生成map任务和reduce任务,使map任务尽可能的实现本地化运行,获取最快的执行速度。
7.tasktracker初始化执行环境,包括获取mapreduce程序,分片数据和配置信息,同时生成map任务或者reduce任务的JVM运行环境
8.map任务在tasktracker生成的JVM下运行,读取分片数据,执行map函数指定的计算,将输出结果保存在本地文件系统中
9.reduce任务将执行完成map任务的结果拷贝到reduce执行机器上,这需要网络流量,所以一般对map输出结果进行压缩都可以提高作业的效率。同时reduce运算不具有本地化优势,reduce任务将运算结果存入HDFS中。
10.jobtracker告诉客户端该作业完成