Hadoop 概览

2019-02-16  本文已影响0人  越过山丘xyz

Hadoop

Hadoop 是一个提供分布式存储和分布式计算的框架,为大量数据的存储和计算提供了一个可靠的平台支持。现在 Hadoop 和其它相关的衍生产品构成了大数据生态系统。

两大神兽

HDFS

HDFS 是 Hadoop 提供的一个分布式存储的文件系统,基本思想就是分而存之,让多台计算机分别存储一个大文件的一部分,这样就解决了大文件无法在单台计算机上存储和无法在单台计算机上快速计算的问题。

整体架构

与磁盘一样,HDFS 也有块的概念,将一个大文件进行拆分,每一部分就称为一个块 (block)。在 Hadoop 2.x 中,默认一个块大小为 128M。当有一个 1M 的数据存放到 HDFS 中时并不会占用一个 128M 的数据空间,而是占有 1M,这是和磁盘块不同的地方。

一个块大小为 128M 主要原因是为了让寻道时间小于传输时间的 1%,假设传输速率为 100m/s,寻道时间为 10ms,则 (10ms / 1000) / (1%) * 100m/s = 100M。

HDFS 默认情况下,会为每个数据块存储 3 份,并存储在不同的计算机上,这就是其备份机制。HDFS 的可靠性就体现在这里。

这些数据块分别由多台不同的计算机存储,而记录这些块在那台机器上存储、块大小是多少、属于哪个文件的信息称为元数据,也可以称为是描述数据的数据。

元数据由一个单独的进程来维护,这个进程称为 NameNode。一般会由一台单独的计算机作为 NameNode 节点,也就是在那台计算机上启动一个 NameNode 进程。

管理这些数据块的工作也是由一个单独的进程来完成,这个进程为 DataNode。数据块则是由多台计算机协同存储的,在每台计算机上都会启动一个 DataNode 进程,并时刻与 NameNode 进行通信。

NameNode 是 HDFS 的命门,如果 NameNode 挂掉之后 HDFS 就彻底的无法提供服务了,并且存储在内存中的元数据信息也会丢失,那样就永远无法提供服务了。所以,为防止元数据丢失问题,HDFS 有了就 SecondaryNameNode 来帮助 NameNode 进行元数据的持久化,有高可用机制来进行 NameNode 的主备切换工作。

在介绍完 HDFS 基本组成后,我们再看看 HDFS 读写操作流程:

HDFS 就简单说到这里。

MapReduce

MapReduce 是 Hadoop 提供的一个分布式计算框架,基本思想就是分而算之和移动程序不移动数据,也就是针对每个数据块进行运算 (MapTask),最后将每个节点的运算结果进行汇总 (ReduceTask)。

MapReduce 流程

MapReduce 的工作可以基本分为读取、Shuffle和输出三步:

YARN

Yarn 是一个独立的资源调度框架,由 ResourceManger 和 NodeManager 两部分构成:

任务提交流程 MR 程序提交的流程
上一篇 下一篇

猜你喜欢

热点阅读