[size=medium][color=red][b]1.job的本质是什么?[/b][/color][/size]
在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”

[size=medium][b]2.任务的本质是什么?[/b][/size]
从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”

[color=red][size=medium][b]3.文件系统的Namespace由谁来管理,Namespace的作用是什么?[/b][/size][/color]
Namenode管理着文件系统的Namespace,Namenode中保存有两种信息:文件和block的映射、block和DataNode的映射。[color=blue][b]文件和block的映射,固化在磁盘上。[/b][/color]而block和DataNode的映射在DataNode启动时上报给NameNode。

[size=medium][color=red][b]4.Namespace 镜像文件(Namespace image)和操作日志文件(edit log)文件的作用是什么?[/b][/color][/size]
[color=red][b]fsimage:[/b][/color]保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。
[color=red][b]editlog:[/b][/color]主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。

[color=red][size=medium][b]5.Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,为什么?[/b][/size][/color]

[color=darkblue][b]因为这些信息会在系统启动时从数据节点重建。在DataNode启动时上报给NameNode。[/b][/color]

[size=medium][color=red][b]6.客户端读写某个数据时,是否通过NameNode?[/b][/color][/size]
当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行
具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。

[size=medium][color=red][b]8.一旦某个task失败了,JobTracker如何处理?[/b][/color][/size]
一旦某个task失败了,JobTracker就会自动重新开启这个task

9.JobClient在获取了JobTracker为Job分配的id之后,会在JobTracker的系统目录(HDFS)下为该Job创建一个单独的目录,目录的名字即是Job的id,该目录下会包含文件job.xml、job.jar等文件,这两个文件的作用是什么?

job.jar是运行的jar包文件 job.xml则存放JobClient的配置信息

[size=medium][color=red][b]10.JobTracker根据什么就能得到这个Job目录?[/b][/color][/size]
JobTracker只要根据[color=blue][b]JobId[/b][/color]就能得到这个Job目录。

11.JobTracker提交作业之前,为什么要检查内存?

客户端提交作业之前,会根据实际的应用情况配置作业任务的内存需求,同时
JobTracker为了提高作业的吞吐量会限制作业任务的内存需求,所以在Job的提交时,
JobTracker需要检查Job的内存需求是否满足JobTracker的设置。


[size=medium][color=red][b]12.每个TaskTracker产生多个java 虚拟机(JVM)的原因是什么?[/b][/color][/size]
每个TaskTracker可以产生多个java 虚拟机(JVM),用于并行处理多个map以及reduce任务