一、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一种计算框架,而是支持多种计算框架并存。
优势:
资源利用率高
运维成本低
数据共享
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44432032/article/details/121881088
内容来源于网络,如有侵权,请联系作者删除!