海量数据处理-大数据离线批处理技术篇

x33g5p2x  于2021-12-13 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(496)

一、Hadoop
Hadoop的组成:

分布式计算框架MapReduce

HDFS

YARN框架

Common工具

HDFS是一个分布式文件系统,具有低成本、高可靠性、高吞吐量。

MapReduce由两个阶段组成:

Map阶段

Reduce阶段

map函数以key/value对作为输入参数,产生另外一系列key/value对作为中间输出写入本地磁盘,MapReduce框架会自动将这些中间数据按照key值进行聚集,且key值相同的数据被统一交给reduce()函数处理。

reduce()函数以key及对应的value列表作为输入,经合并key相同的value值后,产生另外一系列key/value对作为最终输出写入HDFS。

在Hadoop中将资源管理和作业控制(包括作业监控、容错、重试机制等)拆分为两个独立的进程:

资源管理进程

作业控制进程

二、HDFS原理

1、定义:HDFS是一个高度容错的系统,能够提供高吞吐量的数据访问。在实现上,一个HDFS由一台运行了NameNode的服务器和N台运行了DataNode的服务器组成,如下所示:

2、HDFS存储文件的模型

(1)HDFS客户端与服务器进行交互,将文件存储在HDFS集群中

(2)HDFS服务器将客户端传来的文件根据参数进行切换、复制并将这些存储在HDFS的DATaNode中。

(3)HDFS的NameNode记录某个文件的元数据信息(元数据信息包含文件大小、文件路径、文件存储块的位置、副本信息等)。

注意:对于客户端来说访问的文件为/data/ces.log。在这里客户端并不关心底层文件被切分为多少块,每个存储块的具体位置在哪里,也不需要关心ces.log文件在服务器中有多少个副本。对于客户端来说,只要能访问到/data/ces.log文件就可以了。

3、HDFS读取数据的流程

(1)HDFS客户端请求读取数据get /data/ces.log

(2)NameNode收到消息,返回应对文件的元数据信息

(3)根据对应的元数据信息,向指定的DataNode请求读取文件块

(4)DataNode向客户端相应文件块数据流,客户端接受到文件块数据流,然后通过本地文本输出流将数据写入ces.log文件块。

(5)重复步骤(3)和步骤(4),最终得到完整的文件

(6)重复步骤(3)和步骤(4),最终得到完整的文件

(7)重复步骤(3)和步骤(4),最终得到完整的文件

(8)重复步骤(3)和步骤(4),最终得到完整的文件

4、HDFS写文件

(1)HDFS客户端向NameNode发送写文件请求

(2)NameNode向客户端相应可以写文件的信息

(3)HDFS客户端向NameNode请求要写入的DataNode

(4)NameNode返回可以写DataNode的节点主机列表,主机列表中主机的数量由配置的文件副本数决定。

(5)客户端选择HDFS集群中的某个DataNode,请求建立数据连接,准备写入数据。

(6)DataNode向HDFS客户端相应可以写数据

(7)客户端向DataNode写数据

(8)DataNode向客户端相应写数据的结果信息

(9)DataNode之间复制数据

(10)DataNode之间复制数据

(11)重复(3)到步骤(10),进行剩余文件块的写入

(12)写完成数据后通知NameNode,由NameNode确认并记录元数据

三、MapReduce

特点:

开发简单

拓展性强

容错性强

四、YARN

(1)YARN框架主要由ResourceManager、AppMaster、NodeManager组成。

(2)ResourceManager同AppMaster一起实现资源的协调功能

(3)AppMaster和NodeManager一起实现任务的运行并监控任务的运行状态

(4)ResourceManager和NodeManager一起管理用户在机器上的进程并对计算进行组织

YARN实际上是一个弹性计算平台,它的目标已经不在局限于支持MapReduce一种计算框架,而是支持多种计算框架并存。

优势:

资源利用率高

运维成本低

数据共享

相关文章