学院视频链接:https://edu.hellobi.com/course/93/play/lesson/1400
1、Hadoop集群
Master:主节点,对Hadoop来说,运行着NameNode、ResourceManager服务进程
Slave:从节点,对Hadoop来说,运行着DataNode、NodeManager服务进程
我们以HDFS的两个服务进程为例来说明:
NameNode运行于主节点之上,也就是被称为Master的节点,负责记录各个数据块的存储空间(NameSpace),与DataNode进行通信,获取其健康状态信息,并根据决策算法将数据分发到某些节点。
DataNode运行于从节点之上,也就是被称为Slave的节点,负责实际数据的存储,与NameNode进行通信,将其所在节点的存储状态汇报给NameNode,以供其决策。
一个HDFS集群包含一个单独的Master节点和多个Slave节点,我们要强调一下,这里所说的单独的Master节点并不是一个机器或服务器,而是指的逻辑意义上的一个Master组件,它具体可以是1或2台物理服务器,而Slave节点就是指的Slave服务器。可以这么说,由一台Master服务器所架设的NameNode,称之为单NameNode集群,两台Master服务器架设成的NameNode,称之为双NameNode集群,通常,所有的这些机器、或服务器都是普通的Linux机器,在这些Linux服务器上运行着用户级别(user-level)的服务进程。
接下来要介绍3中Hadoop的运行模式,分别是单机模式、伪分布模式、分布式。
首先来看最简单的单机模式,其实就是把上面讲到的这些服务进程运行在一个台机器上,并且文件系统也直接采用本地文件系统,也就是说,单机模式的Hadoop没有分布式文件系统,而是直接读写本地文件,这样一来,无论是在存储上,还是在计算时,都是由单机完成。所以严格意义上来讲,这样的Hadoop运行模式不能称之为集群,而且单机模式主要用于实验。
接下来看看伪分布式模式,之所以成为伪分布式,而不是真正的分布式,是因为伪分布式模式仍然是由一台机器实现的,它通过一个机器上不同的Java进程来模拟分布式中不同节点上的服务进程,这种情况下将文件系统设置成分布式的文件系统,这样即使是一台机器,也可以看成是逻辑上的分布式。例如,我们可以在同一台机器上运行上面讲到的NameNode、DataNode,也就是此机器既管理存储空间,也实际存储数据,同时还运行ResourceManager、NodeManager,也就是此机器既完负责资源调度,也负责作业调度。
最后是真正的分布式模式,其实很简单,就是讲上面讲到的伪分布式当中运行的一些服务进程放到另外的一些机器上去运行,例如我们把DataNode和NodeManager放到多个从节点(从服务器)上去运行。就实现了一个真正的分布式模式的Hadoop集群。
建议初学者做实验时在本机(若Windows)搭建一个Linux虚拟机(可以用VMWare Workstations)用来做伪分布式模式,或者直接在Mac上搭建伪分布式模式。