"运行Hadoop"是什么意思?服务器
这意味着在网络分布的不一样服务器上运行一组守护进程(daemons)。这些守护进程有特殊的角色,一些仅存在于单个服务器上,一些则运行在多个服务器上。网络
这些角色都有谁?架构
NameNode(名称节点)分布式
DataNode(数据节点)oop
Secondary NameNode(次名称节点)spa
JobTracker(做业跟踪节点)进程
TaskTracker(任务跟踪节点)内存
分布式存储采用了神马结构?资源
分布式存储系统被称为Hadoop文件系统,或简称为HDFS。虚拟机
Hadoop Distribution File System
Hadoop在分布式计算与分布式存储中都采用了主/从(master/slave)结构。
NameNode是什么,干啥的?
Hadoop守护进程中最重要的一个。
NameNode位于HDFS的主端,它指导从端的DataNode执行底层的I/O任务。
NamNode跟踪文件如何被分割成文件块,而这些块又被哪些节点存储,以及分布式文件系统的总体运行状态是否正常。
运行NameNode消耗大量的内存和I/O资源。所以,为了减轻机器的负债,驻留NameNode的服务器一般不会存储用户数据或者执行MapReduce程序的计算任务。这意味着NameNode服务器不会同时是DataNode或者TaskTracker
不过NameNode的重要性也带来了一个负面影响-Hadoop集群的单点失效。对于任何其余的守护进程,若是它们所驻留的节点发生软件或硬件失效,Hadoop集群极可能还会继续平稳运行,否则你还能够快速重启这个节点。但这样的方法并不适用于NameNode。
DataNode是什么,干啥的?
每一个从节点会驻留一个DataNode守护进程,来执行分布式文件系统的繁重工做-将HDFS数据块读取或者写入到本地文件系统的实际文件中。
当对HDFS文件进行读写时,文件被分割为多个块,由NameNode告知客户端每一个数据块驻留在哪一个DataNode。客户端直接与DataNode守护进程通讯,来处理与数据块相对应的本地文件。然后,DataNode会与其余DataNode进行通讯,复制这些数据块以实现冗余。
NameNode和DataNode交互?
在HDFS中交互,NameNode跟踪文件的元数据。
NameNode持有的文件的元数据是?
描述系统中所包含的文件以及每一个文件如何被分割为数据块。DataNode提供数据块的备份存储,并持续不断地向NameNode报告,以保持元数据为最新状态。
DataNode上的文件存储是怎么存的?
在HDFS上文件是被分红数据块存储的,默认大小(64MB),由NameNode指定这些文件块存储在哪些DataNode中,每一个文件块默认有3个副本,确保若是一个DataNode垮掉,数据不会丢失。初始化时,每一个DataNode将当前存储的数据块告知NameNode,初始化完成以后,DataNode也会不断的更新本地信息给NameNode,并接收指令。
Secondary NameNode是干什么的?
Secondary NameNode (SNN)是一个用于监测HDFS集群状态的辅助守护进程。就像NameNode同样,每一个集群有一个SNN,它一般也独占一台服务器,该服务器不会运行其余的DataNode或TaskTacker守护进程。SNN与NameNode的不一样在于它不接收或记录HDFS的任何实时变化。相反,它与NameNode通讯,根据集群所配置的时间间隔获取HDFS元数据快照。
如前所述,NameNode是Hadoop集群的单一故障点,而SNN的快照能够有助于减小停机的时间并下降数据丢失的风险。然而,NameNode的失效处理须要人工干预,即手动地从新配置集群,将SNN用做主要得NameNode。
JobTracker是什么?
JobTracker守护进程是应用程序和Hadoop之间的纽带。
JobTracker作了些什么?
一旦提交代码到集群上,JobTracker就会肯定执行计划,包括决定处理哪些文件、为不一样的任务分配节点以及监控全部任务的运行。若是任务失败,JobTacker将自动重启任务,但所分配的节点可能会不一样,同时受到预约义的重试次数限制。
一个Hadoop集群有几个JobTracker的守护进程?
每一个Hadoop集群只有一个JobTracker守护进程,它一般运行在服务器集群的主节点上。
TaskTracker是什么?
与存储的守护进程同样,计算的守护进程也遵循主/从架构:JobTracker做为主节点,检测MapReduce做业的整个执行过程,同时,TaskTracker管理各个任务在每一个从节点上的执行状况。
每一个TaskTracker负责执行由JobTracker分配的单项任务。虽然每一个从节点上仅有一个TaskTracker,但每一个TaskTracker能够生产多个JVM(Java虚拟机)来并行地处理许多map或reduce任务。
TaskTracker的一个职责是持续不断地与JobTracker通讯。若是JobTracker在指定得时间内没有收到来自TaskTracker的"心跳",它会假定TaskTracker已经崩溃了,进而从新提交相应的任务到集群中的其余节点。
JobTracker是如何调用TaskTracker的?
JobTracker和TaskTracker的交互,当客户端调用JobTracker来启动一个数据处理做业时,JobTacker会将工做切分,并分配不一样的map和reduce任务到集群中的每一个TaskTracker上。
一个典型的Hadoop拓扑结构特色是?
在主节点上运行NameNode和JobTracker的守护进程,并使用独立的节点运行SNN以防主节点失效。在小型集群中,SNN也能够驻留在某一个从节点上,而在大型集群中,连NameNode和JobTracker都会分别驻留在两台机器上。每一个从节点均驻留一个DataNode和TaskTracker,从而在存储数据的同一节点上执行任务。