JobTracker 对应于 NameNode
TaskTracker 对应于 DataNode
DataNode 和NameNode 是针对数据存放来而言的
JobTracker和TaskTracker是对于MapReduce执行而言的
mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:
jobclient,JobTracker与TaskTracker。
1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,
并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)
并将它们分发到各个TaskTracker服务中去执行
2、JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,
并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。
3、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。
TaskTracker都需要运行在HDFS的DataNode上 这样利于本地化计算 。
Hadoop在存储有输入数据(HDFS中的数据)的节点运行map任务,可以获得最佳性能。这就使所谓的数据本地化优化。
jobtracker 利用 split的 location 数组 来决定 这个task 运行在哪个tasktracker上 。而 这个task的输入数据最好存在location数组中 这样 task就可以读本地的数据 。
map任务将其输入写入本地硬盘,而非HDFS。因为map的输出是中间结果:该中间结果由reduce任务处理后才产生最终输出结果。
6.Hadoop0.20.0包含新的Java MapReduce API,与旧的API的区别:
6.1新的API倾向于使用虚类,而不是接口,因为这更容易扩展。mapper和reducer都是虚类
6.2 新的API放在org.apache.hadoop.mapreduce包中
6.3 新的API使用MapContext上下文对象,使用户代码能与MapReduce系统通信。MapContext基本具备了JobConf,OutputCollector和Reporter功能
6.4 新的API支持“推”和“拉”式的迭代。
6.5 新的API实现了配置的统一。所有作业的配置均通过Configuration来完成。
6.6 新的API中作业控制由Job类实现,删除了JobClient类
6.7 输出文件的命名方式稍有不同,map的输出文件名为part-m-nnnnn,而reduce的输出为part-r-nnnnn(其中,nnnnn表示分块序号,为整数,且从0开始)
MapReduce作业是客户端需要执行的一个工作单元,包括:输入数据、MapReduce程序和配置信息。
有2类节点控制着作业执行过程:一个jobtracker和一系列tasktracker。
jobtracker通过调度tasktracker上运行的任务,来协调所有运行在系统上的作业;tasktracker在运行任务的同时,将运行进度报告发送给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另一个tasktracker节点上重新调度该任务。