Hadoop 是一个分布式计算和存储框架,为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持,并且支持在单台计算机到几千台计算机之间进行扩展,其中核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce,HDFS 负责分布储存数据,MapReduce 负责对数据进行映射、规约处理,并汇总处理结果。

在某种程度上,Hadoop 将多台计算机组织成了一台计算机,那么 HDFS 就相当于这台计算机的硬盘,而 MapReduce 就是这台计算机的 CPU 控制器。

Hadoop的优势:

1、高可靠性: Hadoop 底层维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失。
2、高扩展性: 在集群间分配任务数据,可方便的扩展数以千计的节点。
3、高效性: 在 MapReduce 的思想下,Hadoop是并行工作的,以加快任务处理速度。
4、高容错性: 能够自动将失败的任务重新分配。

Hadoop 的运行模式包括:本地模式、伪分布式模式、完全分布式模式。

一、HDFS

HDFS 核心思想是 Google 的 GFS 思想。

HDFS 的节点
HDFS 运行在许多不同的计算机上,有的计算机专门用于存储数据,有的计算机专门用于指挥其它计算机储存数据。这里所提到的"计算机"我们可以称之为集群中的节点。

命名节点 (NameNode)
命名节点 (NameNode) 是用于指挥其它节点存储的节点。任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,命名节点就是用于储存这些映射信息并提供映射服务的计算机,在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点。

数据节点 (DataNode)
数据节点 (DataNode) 使用来储存数据块的节点。当一个文件被命名节点承认并分块之后将会被储存到被分配的数据节点中去。数据节点具有储存数据、读写数据的功能,其中存储的数据块比较类似于硬盘中的"扇区"概念,是 HDFS 存储的基本单位。

命名节点对数据节点的远程控制是通过 SSH 来实现的,因此关键的配置项应该在命名节点被配置,非关键的节点配置要在各个数据节点配置。也就是说,数据节点与命名节点的配置可以不同,不同数据节点之间的配置也可以有所不同。

副命名节点 (Secondary NameNode)
副命名节点 (Secondary NameNode) 别名"次命名节点",是命名节点的"秘书"。这个形容很贴切,因为它并不能代替命名节点的工作,无论命名节点是否有能力继续工作。它主要负责分摊命名节点的压力、备份命名节点的状态并执行一些管理工作,如果命名节点要求它这样做的话。如果命名节点坏掉了,它也可以提供备份数据以恢复命名节点。副命名节点可以有多个。

二、MapReduce

MapReduce 是基于Map 和 Reduce (映射和规约)的一种思想和算法 。

1、Map 负责将数据拆分成很多份,例如我们有100T的数据,在里面找一个数据,Map 就是先将这 100T数据拆分成一千份,每份100G,分发给各个节点,这样就将100T的数据转换成100G了,一千个节点同时查找提高效率。

2、Reduce 就是将上面拆分给一千个节点的查询结果汇总起来,把大家的结果收集起来,成为最终的结果。