Hadoop后台进程介绍

willfly 贡献于2011-08-28

作者 Terry  创建于2011-01-14 07:57:00   修改者Terry  修改于2011-01-26 04:41:00字数2326

文档摘要:称节点是Hadoop后台进程中最重要的部分。Hadoop以一种主/从结构来实现分布式文件系统和分布式计算。分布式文件系统被称为HadoopFileSystem或者HDFS。名称节点是HDFS中的控制部分,用来控制从属的数据节点进程执行底层的输入/输出任务。名称节点也是HDFS的记录,其记录了文件是如何被分解为各个节点块的情况以及分布式文件系统的总体情况。
关键词:

Hadoop后台进程介绍: 1.名称节点NameNode 名称节点是Hadoop后台进程中最重要的部分。Hadoop以一种主/从结构来实现分布式文件系统和分布式计算。分布式文件系统被称为Hadoop File System或者HDFS。名称节点是HDFS中的控制部分,用来控制从属的数据节点进程执行底层的输入/输出任务。名称节点也是HDFS的记录,其记录了文件是如何被分解为各个节点块的情况以及分布式文件系统的总体情况。 名称节点的功能是内存和输入/输出的加强器。因此,作为名称节点的服务器没有存储用来运行MapReduce程序的任何数据也没有承担任何MapReduce的计算任务,为的是减轻该服务器的工作量。这就意味着名称节点服务器不会同时作为数据节点和TaskTracker。 但是由于名称节点的重要性,导致在Hadoop集群中存在一些不利的致命因素——名称节点崩溃,那就意味着一个Hadoop集群的失败。而对于其他的后台进程来说,如果该节点因为软件或者硬件的问题而发生节点崩溃,Hadoop有很大可能继续顺利执行任务或者您可以在很短的时间内重新启动任务。而这对名称节点来说,是不可行的。 2.数据节点DataNode 在集群中,每一个从属的计算机将用数据节点的后台进程来执行分布式文件系统的以下任务——把HDFS块读写到本地文件系统。当你想要读或者写一个HDFS文件时,该文件会被分成块,然后名称节点就会告诉客户端存放数据节点的位置。客户端会直接和名称节点通讯来处理与这些块相关的本地文件。此外,一个数据节点可以和其他数据节点通讯来复制其数据块。 图2.1说明了名称节点和数据节点在HDFS中所扮演的角色。如图所示,我们可以看到两个数据文件,一个文件位于/user/chuck/data1,另一个位于/user/james/data2。data1文件占用了三个块,在图中我们1,2和3来表示。data2文件由块4和块5组成。文件的内容被分布在数据节点中。 图2.1 数据节点和名称节点在HDFS中相互作用。名称节点记录了存在于HDFS的文件元数据以及各个文件是如何被分为块的情况。数据节点提供了对块存储的备份和持续地向名称 节点报告目前的数据情况。 在这个图例中,每个块有三个备份。例如,用于data1的块1在右边的数据节点被重复了3次。这就保证了如果其中任何一个数据节点发生崩溃或者无法连接,我们仍然可以读到该文件。 3.第二名称节点 Secondary NameNode(SNN) 第二名称节点是用于监测HDFS集群状态的辅助进程。像名称节点一样,每个集群都有自己配置的SNN,而且其也特别依赖于其本身的计算机。不同于数据节点和TaskTracker后台进程在同一个服务器上运行,SNN区别于名称节点因为它的处理不包括接收和记录HDFS实时的变化。相反,其通过与数据节点以一段时间间隔的通讯来完成一个对HDFS元数据的某个时刻的备份,而这个时间间隔是由集群的配置来设定的。 就像上文提到的,名称节点是决定一个集群成败的关键,所以SNN使对系统的失败的损失降到最小。不仅如此,名称节点的失败情况需要人工干预通过使用SNN作为初级名称节点来重新配置集群。 4. JobTracker JobTracker后台进程介于编写的程序和Hadoop之间的联络。一旦您向集群提交了您的代码,JobTracker通过决定处理哪个文件,分配给不同的任务于哪些节点以及监测所有运行的任务来定制提交代码的执行计划。如果一个任务失败了,JobTracker会在一个不一样的节点自动重新启动任务,直到达到预定的尝试运行次数。 每个Hadoop集群只有一个JobTracker,其运行在集群中的主节点中。 5. TaskTracker 正如后台的存储进程一样,用于计算的后台进程也遵循着主/从架构:JobTracker主要用户监测MapReduce总体任务的执行情况而TaskTrackers执行着分配在每个从节点上的单独任务。 如图2.2说明了两者之间的关系 每个TaskTracker负责JobTracker分配的单个任务。尽管每个从节点只有一个单独的TaskTracker,但是每个TaskTracker可以驱动多个JVM来并行处理许多map或者reduce任务。 TaskTracker的一个任务就是实时地与JobTracker通讯。如果JobTracker无法在一个特定的时间段内从TaskTracker接收到心跳信号,那么JobTracker就会假定TaskTracker已经崩溃然后向集群中的其他节点重新发布相关任务。 图2.2 JobTracker和TaskTracker相互作用。在客户端请求JobTracker开始一个数据处理任务时,JobTracker会划分该任务然后向集群中的各个TaskTracker分配map和reduce任务。 以上的内容总体上已经简述了Hadoop中各个后台进程的工作和功能,接下来我们用图2.3来描述下一个特定的Hadoop集群。 图2.3 对于一个特定的Hadoop集群的拓扑。 这是一个主/从结构的视图,在这个视图中,名称节点和JobTracker是主,数据节点和TaskTracker是从。 图2.3的拓扑表示了一个运行着名称节点和JobTracker进程的主节点以及运行着SNN的独立节点。对于较小的集群来说,SNN可以从属于从节点中的某一个。从另一个方面来说,对大的集群来说,在不同的两台机子上可以分开NameNode和JobTracker后台进程。从节点 的机器可以每个都执行DataNode和TaskTracker因为对于正在运行的任务来说,在同一个节点上会存放着其需要的数据。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档