您的位置:首页 > 运维架构

从零开始学习Hadoop--第7章 Hadoop MapReduce的运行机制

2013-10-29 09:55 363 查看
    这一章不会有源代码,主要是分析Hadoop的运行机制。

1.一个Hadoop集群,有5种节点。
1.1NameNode,有且仅有一个,负责管理HDFS文件系统。
1.2DataNode,至少有一个,通常有很多个。具体地说,每台负责做集群计算的的计算机都是一个DataNode。
1.3SecondaryNameNode,有且仅有一个,只辅助处理NameNode,不做其他任务。
1.4JobTracker,有且仅有一个,负责Hadoop的作业管理,所有的MapReduce的执行由它处理。
1.5TaskTracker,至少有一个,通常有很多个。具体地说,每台负责做集群计算的的计算机都是一个TaskTracker。

2.伪分布式Hadoop集群,这个集群只有一台计算机,这台计算机上5种节点都有,启动Hadoop之后,用”jps”命令可以看到这5个节点进程。

3.分布式Hadoop集群,如果集群内计算机足够多,会有一台机器做NameNode,一台机器做SecondaryNameNode,一台机器做JobTracker。其他机器负责做集群计算,这些机器每台上面各有一个DataNode和TaskNode进程。

4.Hadoop配置好之后,第一个命令是执行”./bin/hadoopnamenode -format”。这个命令会对NameNode进行格式化,然后再关闭NameNode。

5.执行完第4步之后,用”./bin/start-all.sh”启动Hadoop集群。

6.前处理
6.1写MapReduce代码,编译,将代码打成tar包。
6.2在Linux命令终端,运行HDFS的命令,将待处理的数据文件放到HDFS上。这时候,NameNode节点会负责将文件分割成块,分散存储在各个DataNode节点上。
6.3在Hadoop集群运行的时候,每隔一定时间,SecondaryNameNode会将NameNode上的数据进行合并处理。

7.在一个Linux终端执行Hadoop命令,如"./bin/hadoopjar
hadoop-examples-1.2.1.jar wordcount readme.txtoutput"。在Hadoop运行这个命令的时候,这个Linux终端就是一个”客户端”,它发的这个命令就是在“提交MapReduce作业”。

8.客户端在做什么
8.1客户端向JobTracker节点申请一个作业ID。
8.2检查作业的输出目录。如果目录没指定或者已存在,客户端会打印错误信息,然后退出。
8.3根据InputFormat,将输入的数据格式进行分割,也就是分割成若干个InputSplit。如果出错会退出。
8.4将Mapreduce程序的jar包,配置文件,InputSplit信息都复制到HDFS的一个目录,这个目录名是作业ID。
8.5通知JobTracker执行作业。至此,提交作业完毕。
8.6客户端提交了作业之后,每秒会查询一次作业执行到了什么状态,如果有变化,就在冲端上打印出来,以便大家看到进度。

9.JobTracker在做什么
9.1客户端告诉JobTracker去执行作业。
9.2JobTracker将作业放到一个队列。
9.3作业调度器对作业进行初始化,它取出InputSplit信息,为每个InputSplit创建一个Map任务,根据map.reduce.reduce参数创建若干个Reduce任务。
9.4Hadoop集群启动后,JobTracker从始至终一直接收所有TaskTracker发送过来的心跳。如果某个心跳附带的信息说这个TaskTracker是空闲的,就发一个新任务给这个TaskTracker去做。
9.5JobTracker根据心跳,将作业和各种任务的执行进度计算出来。如果客户端查询,就将这些信息返回给它。
9.6JobTracker根据心跳,处理各种执行失败问题。

10.TaskTracker在做什么
10.1在Hadoop集群启动后,TaskTracker定期向JobTracker发送“心跳”。心跳附带的信息会告诉JobTracer,现在TaskTracker的状态是什么,是否可以运行新任务,是否在忙碌状态。
10.2如果TaskTracker可以运行新任务,那么,JobTracer会在心跳的返回值里给TaskTracker分配一个新任务。
10.3TaskTracker接到新任务,将这个任务所在的作业的jar文件以及所有需要处理的数据文件从JobTracker和HDFS复制到本地磁盘上。
10.4TaskTracker创建一个TasckRunner实例运行这个任务。每隔一段是时间,将任务执行的进度通过心跳发送给JobTracker。
10.5任务运行的时候,处理各种失败问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop 大数据