1、Hadoop架构

1、Hadoop 是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元放到任何集群节点上执行。

作业(job):一个准备提交执行的应用程序;

任务(task):从一个作业划分出的、运行于各计算节点的工作单元;

HDFS:主要负责各个节点上的数据存储,并实现高吞吐率的数据读写;

2、在分布式存储和分布式计算方面,Hadoop使用主/从(Master/Slave)架构,在集群中运行一系列后台程序

(1)NameNode:HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存储到哪些数据节点上。主要功能是对内存及I/O进行集中管理;NameNode所在服务器不存储任何用户信息或执行任何计算任务,以免这些程序降低服务器性能。但NameNode是Hadoop集群中的一个单点,一旦宕机,整个系统将无法运行;(50070端口)

(2)DataNode:集群中的每个从服务器都运行一个DataNode后台程序,负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读写某个数据时,先由NameNode告诉客户端从哪个DataNode进行具体读写操作,然后直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读写操作;

(3)Secondary NameNode: 用来监控HDFS状态的辅助后台程序。每个集群都有一个Secondary NameNode,部署在一台单独的服务器上,他不接收或记录任何实时的数据变化,但会与NameNode通信,以便定期地保存HDFS的快照功能,可以将NameNode的宕机时间和数据损失降低到最小,可以作为备用NameNode使用;

(4)JobTracker: 用来连接应用程序与Hadoop。用户代码提交到集群后有JobTracker决定哪个文件将被处理,并且为不同的task分配节点,同时还监控所以运行的task,一旦某个task失败了,JobTracker就会自动重新开启这个task,大多数情况下这个task会被放在不同的节点上。具体取决于重启的预设值。每个Hadoop集群只有一个JobTracker,一般运行在Master节点上;(50030端口)

(5)TaskTracker: 与负责存储数据的DataNode相结合,其处理结构上也遵循主从架构。TaskTracker位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而JabTracker负责分配task.每个TaskTracker可以产生多个Java虚拟机(JVM),用于处理多个map及reduce任务。TaskTracker的一个重要职责就是雨JobTracker交互,如果JobTracker无法准时获取TaskTracker提交的信息,JobTracker就判定TaskTracker已经崩溃,并将任务分配给其他节点处理。

 其中NameNode、Secondary NameNode、JobTracker运行于Master节点上,而在每个Slave节点上部署DataNode、TaskTracker,以便直接处理本机的数据

原文地址:https://www.cnblogs.com/liutoutou/p/3240191.html