1. 概念
用于解决海量数据存储和分析计算的分布式系统架构,其优势为高可靠(多副本)、高扩展(分布式)、高效性(并行)、高容错(失败重试)
2. 组成
HDFS 文件存储
YARN 资源调度
MaoReduce 计算分析
Common 辅助工具
3. HDFS
分布式文件存储系统,用于存储文件,通过统一命名空间--目录树来定位文件,客户端通过路径访问文件,如hdfs://namenide:port/dir-a/file.data,在写入时HDFS通过分块机制实现分布式存储,block默认大小为128M,且每一个文件在存储时会复制多份,默认保存三份。第一份任意节点,第二份与第一份同节点,第三份另一节点。HDFS设计成一次写入、多次读出并不适合修改,延时、网络开销大。
a.主节点 nameNode
(1)负责接收客户端请求
(2)通过心跳机制检测节点是否宕机
(3)通过汇报机制管理数据,所有节点定期向nameNode汇报自己存储的block,nameNode根据汇报情况和自己存储的元数据信息确保数据安全。
(4)维护内存中的元数据,记录每个文件对应的block和block的位置
b.从节点 dataNode
(1)启动时向nameNode注册
(2)接受客户端读写块
(3)与文件系统交互实现读写
(4)定期向主节点汇报数据和心跳
c.读写流程
写
客户端 提交写请求,nameNode查看各级目录是否存在和是否有写权限,答复客户端可以写入, 客户端将文件拆分成block,向nameNode请求写入文件地址,NameNode根据各节点活跃程度和存储空间,向客户端发送三个节点地址,客户端选举出网络路由最近位置进行传输第一个block,第一个dataNode接收block,并发送给第二个地址,第二个地址接收发送第三个地址,第三个地址接收返回自身ack=1给第二地址,第二个地址发送两个ack=1至第一个地址,第一个地址发送三个ack=1至客户端,以此传输所有block,客户端将元数据发送给NameNode,写入结束。
读
客户端向NameNode发送读请求,NameNode检查路径和权限,返回客户端块列表,和每个块所在的DataNode,客户端选举出网络路由最近的DataNode进行读取,所有block读取完成后进行合并。返回给用户
d. HDFS如何保障数据安全
HDFS存储元数据信息,包括每一个block的位置和副本位置,在集群启动时,根据元数据生产fsimage文件,保存NameNode信息,数据更新写入edits文件中,edits文件定时或定量更新fsimage
e HDFS集群增,删节点
增
(1)修改所有节点slaves文件,添加新节点ip
(2)新增节点hdfsp-site.xml文件中添加dfs.host值为新节点地址
(3)刷新新节点 hdfs dfsadmin-refresh Node -
(4)启动DataNode
减
(1)要停节点hdfs-site.xml文件加上dfs.host.exclude 值为新节点ip
(2)刷新HDFS hdfs dfsadmin -refresh.nodes
4. Yarn
a.概念
通用(不止为MR)资源调度平台,提供统一的资源管理和调度。Yarn可以理解为,分布式操作平台,MR则可以认为运行在Yarn上的应用程序,Yarn为这些程序提供所需资源,包括(内存和CPU)
b. 优势
可扩展性 平滑扩展节点
可维护性 保障软件升级和用户程序解耦
多租户 多租户隔离
位置感知 计算转移至数据所需位置
高使用率 物力资源利用率高
多样化模型支持 支持MR,Spark等大量模型
灵活资源配置 支持各程序动态资源配置
c. 组成
(1)物理组成: Yarn是一个标准的主从结构,Resource manager是主节点,node manager是从节点
Resource manager:决定系统中所有资源分配的最终权限,接收用户作业提交通过NM分配管理各个节点资源,RM由两部分组成,调度器(suchduler)和(程序管理器)Application manager,调度器根据容量,队列等限定条件将资源分配给正在运行的程序,应用程序管理器负责整个系统所有程序,包括程序提交,与调度器协商以启动Application Master,监控Application状态等。
Node Manager: 负责本机计算资源,根据RM命令,启动Container容器,并减少Container使用情况,向RM报告。职责1.监控并报告节点Container状态,2.处理来自RM启停请求。
(2)Application Master
用户提交的每一个程序包含一个AM,负责程序内部各个阶段资源申请,监督程序运行情况。职责1.与RM协商获取资源,2.与NM通信启停认为,3.监控任务运行状态
Yarn为每个程序分配一个Container,轻量化容器隔离。
c.通讯
RPC协议,与HTTP联系和区别
相同:都是基于TCP协议
不同:RPC协议位于传输层,而HTTP协议位于应用层,相较于HTTP,RPC更加简单, 轻量化。
5.MapperReduce
a.概述
MapperReduce是一个分布式运算程序编程框架,核负责心功能是将用户编写的业务逻辑代码和默认组件整合成一个完整的分布式运算程序,并发运行在hadoop集群上。
b.核心思想
(1)第一阶段 各个节点的maptask并发实例,并发运行,彼此互不相干
(2)第二阶段 reducetask并发实例,并发运行,彼此互不相干,但数据依赖maptask并发实例输出。
(3)MR模型只能有一个map阶段和一个Reduce阶段,reduce可以有多个串行运行。
c.MR组成
(1)MrAPPMaster:负责整个程序的过程调度和状态协调。
(2)Maptask:map阶段数据处理
(3)Reducetask:reduce阶段数据处理
d.MR工作流程
(1)待处理文本
(2)提交切片信息(默认 切片个数=blocksize)
(3)计算maptask数量(Yarn根据切片规划文件的切片个数计算maptask个数,本地数据本地处理原则)
(4)TextimputFormat -> RecordReader -> k,v(行偏移量,此行数据)
(5)map逻辑运算
(6)打上分区标识符
(7)环形缓冲区(默认100M,固定内存空间避免full GC,达到80M溢出文件保存)
(8)merge 归并,排序
(9)多个文件合并成一个文件,落盘
(10)启动分区个数reducetask,处理本分区数据
(11)数据从maptask磁盘下载到reducetask本地磁盘,合并排序
(12)reducer逻辑运算
(13)TextOutputFormat输出到磁盘
注: shuffle:各maptask落盘的数据,根据不同分区读取到reducetask
环形缓冲区意义:如果每次数据都要占用内存,会导致full GC问题,程序宕机。环形缓冲区反复使用一块内存,使用率达到80%则溢出文件,解决以上问题。
shuffle:map逻辑运算和reduce逻辑运算之前的过程,叫做shuffle。