Hadoop 常见问题分析

1.job的本质是什么?
在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”

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

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

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

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

因为这些信息会在系统启动时从数据节点重建。在DataNode启动时上报给NameNode。

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

8.一旦某个task失败了,JobTracker如何处理?
一旦某个task失败了,JobTracker就会自动重新开启这个task

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

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

10.JobTracker根据什么就能得到这个Job目录?
JobTracker只要根据 JobId就能得到这个Job目录。

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

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


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



猜你喜欢

转载自forlan.iteye.com/blog/2360721