大数据进阶相关重要原理-个人整理笔记

本文深入探讨了大数据技术的关键组件,包括HDFS的存储与读写机制,YARN的资源管理和调度,Zookeeper的协调作用,以及MapReduce、Flink和Kafka的工作原理。详细阐述了HDFS的副本策略、YARN的双层调度框架和Zookeeper的选举与监控,同时介绍了MapReduce的计算流程和Flink的流处理特性,以及Kafka的分布式消息系统和事务管理。
摘要由CSDN通过智能技术生成

HDFS

1.HDFS概念:分布式文件存储系统,可通过线性添加机器扩充存储能力,有高容错性、适合大数据处理的优点,缺点为不适合小文件存储、不适合低延迟的数据访问。
2.HDFS的原理:把数据文件切分成大小等大的BLOCK块,把BLOCK块以多副本的行式存放在多个DATANODE上,在NAMENODE上保存数据文件与BLOCK块的映射和BLOCK块和DATANODE的映射,读取时从多个DATANODE上读取使负载均衡(就近原则读取)。
3.HDFS的组件及作用:
(1)NAMENODE 作用:管理HDFS的名称空间、管理数据块映射信息、处理读写请求。
注:其有两个重要文件:
①.fsimage文件:是HDFS文件系统存于硬盘中的永久性元数据检查点(即全量),里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息。
②.edits log文件:保存了自最后一次检查点之后所有针对HDFS文件系统的操作(即增量)。
Standby namenode备份并合并两个文件,形成新的fsimage文件传输给Active namenode。
在这里插入图片描述

(2)DATANODE作用:存储实际的数据块,执行数据块的读写。
(3)Client作用:切分数据块、与NAMENODE交互,获取文件信息、与DATANODE交互,读取或写入数据。
4.HDFS最小的存储单元为BLOCK数据块,默认情况下每个BLOCK有三个副本(可配置);HADOOP1.X版本默认为64MB,2.X以上为128MB,可根据磁盘读写速度设置,一般100M/S 为128,200M/S为256MB,400M/S为512MB。
5.读写流程:

在这里插入图片描述


在这里插入图片描述

客户端通过DF类访问NN,发起写入请求,NN处理请求并给出写入地址;客户端领取地址后通过FOUTPUT类访问DN,将已经切分好的BLOCK块以更小的PACKET传输给第一个DN,DN会把已写入的PACKET传输给第二个DN,并向客户端领取切分的第二个PACKET,以此类推直到全部文件写入完成后,客户端结束与DN的交互,向NN告知写入完成,NN记录元数据。
6.HDFS副本放置策略:第一个副本放置在上传文件的DataNode服务器节点上,如果是在集群外提交,则随机放置在一个DataNode服务器节点上,第二个副本放置在不同机架的某个节点,第三个副本放置在第二个副本的机架的不同与第二个的节点,其他副本随机。
7.HDFS不适合存储小文件的原因:一个Namenode的内存是有限的,一个BLOCK元信息消耗的内存是一定的,即使不足128M。
8.hadoop2.x Federation(异构层级存储结构):多个NN共用一个集群里的存储资源,每个NN都可以单独对外提供服务每个NN都会定义一个存储池,有单独的id,每个DN都为所有存储池提供存储。DN会按照存储池id向其对应的NN汇报块信息,同时,DN会向所有NN汇报本地存储可用资源情况。如果需要在客户端方便的访问若干个NN上的资源,可以使用客户端挂载表,把不同的目录映射到不同的NN,但NN上必须存在相应的目录。
9.ACL权限管理机制:类Linux的权限管理,对于一个文件来说,该文件有自己的所属用户和所属组,控制着读写权限。
Yarn
1.YARN概念:资源管理系统,提高资源利用率,可兼容各种计算架构,将多个计算框架集成在一个集群中,并使其数据共享。
2.YARN组件及作用:
(1)ResourManager:责所有资源的监控、分配和管理(已基于ZK实现高可用,有多个),内部包含schedule(分配资源)和Applicationmanager(应用的管理与监控)。
(2)NodeManager:有多个,负责单节点资源管理和使用。
(3)ApplicationMaster:每个应用有一个,负责应用程序的管理。
(4)Container:任务的运行环境。
3.运行流程:
在这里插入图片描述

客户端向RM传输应用程序,其中包括该应用的AM的相关信息,如启动命令、所需CPU及内存资源等,RM在各个NM上查找满足其运行的环境,并启动一个container用于运行AM,AM启动时会向RM注册自己,启动成功后与RM保持心跳,其内部会将应用程序切分成小TASK,然后向RM申请对应任务数的container环境,并与NM交互调起内部的container运行TASK,AM对container进行监控,container通过RPC协议向对应的AM汇报自己的进度和状态等信息,应用运行结束后,AM向RM注销自己,并收回属于它的container。
4.YARN的双层调度框架:RM将资源分配给AM,AM将资源进一步分配给各个TASK。
5.YARN的基于资源预留的调度策略:资源不够时会为TASK预留,直到资源充足,资源包括CPU和内存。
6.任务在NM运行失败后通过心跳反馈给RM,RM会将失败的任务告诉AM,AM决定如何处理失败的任务;RM负责重启AM,AM会保存已经运行完成的任务,重启后无需重新运行。
7.Yarn有三种调度方式:
(1)先进先出:优先提交的,优先执行,后面提交的等待。
(2)容量调度:允许创建多个任务对列,每个队列使用所有资源的一部分。多个任务对列可以同时执行。但是一个队列内部还是先进先出。CDH默认的调度器。
(3)公平调度:第一个程序在启动时可以占用其他对列的资源(100%占用),当其他对列有任务提交时,占用资源的对列需要将资源还给该任务。还资源的时候,效率比较慢。

Zookeeper

1.ZOOKEEPER概念:针对大型分布式系统的可靠的协调系统,是集群的管理者,监视着集群中各个节点的状态并根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
2.Zookeeper中组件及作用:
(1)领导者(Leader):负责更新系统状态,发起投票(数据是否更新成功,大多数成功则认为成功)。
(2)跟随者(Follower):接收客户请求,反馈结果,在选主过程中参与投票。
(3)观察者(ObServer):3.3.0版本新增,接收客户端连接,将请求转发给Leader,不参加投票过程,只同步Leader的状态,目的为了扩展系统,提高读写速度。
(4)客户端(Client):请求发起方。
3.Zookeeper 下的四种工作状态:
(1)LOOKING: 寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有Leader,因此需要进入Leader选举状态。
(2)LEADING: 领导者状态。表明当前服务器角色是Leader。
(3)FOLLOWING: 跟随者状态。表明当前服务器角色是Follower。
(4)OBSERVING: 观察者状态。表明当前服务器角色是Observer。
4.Znode的四种类型:
(1)PERSISTENT-持久节点:除非手动删除,否则节点一直存在于Zookeeper上。
(2)EPHEMERAL-临时节点:临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
(3)PERSISTENT_SEQUENTIAL-持久顺序节点:基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
(4)EPHEMERAL_SEQUENTIAL-临时顺序节点:基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
5.ZAB协议:支持崩溃恢复的原子广播协议,ZAB协议包括两种基本的模式:崩溃恢复和消息广播。
当整个zookeeper集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中Follower服务器开始与新的Leader服务器进行数据同步,当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。
6.Zab和Paxos区别:
相同点:两者都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行,Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交。ZAB协议中,每个Proposal中都包含一个 epoch 值来代表当前的Leader周期,Paxos中名字为Ballot。
不同点:目标不一样,ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。
7.Zookeeper运行流程:客户端发起请求给S1,S1将请求传给领导者,领导者给各个S节点广播写请求(写入操作,包含领导者节点),各个节点反馈请求结果给领导者,多数成功则成功,领导者发布成功结果给各个S节点,S1节点反馈给客户端。
8.每个节点在Zookeeper中叫做znode,并且其有一个唯一的路径标识,节点znode可以包含数据和子节点(临时类型的节点不能有子节点),znode节点中数据可以有多个版本,比如某个路径下存多个数据版本,查询数据需要带版本号,客户端应用可以在节点上设置监视器(Watcher),某个节点发生变化时客户端可知道并做操作,节点不支持部分读写,必须一次性完整读写(要么成功要么失败)。
9.Watcher机制:Zookeeper允许客户端向服务端的某个Znode注册一个Watcher监听,当服务端的一些指定事件触发了这个Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据Watcher通知状态和事件类型做出业务上的改变,出发后监听失效(一次性),减轻服务器压力,Watcher通知非常简单,只会告诉客户端发生了事件,而不会说明事件的具体内容,客户端向服务端注册Watcher的时候,并不会把客户端真实的Watcher对象实体传递到服务端,仅仅是在客户端请求中使用boolean类型属性进行了标记。
10.Watcher分三大步骤:
(1)客户端注册Watcher:getdata() and exists()设置数据监视,getchildren()设置了子节点监视。
(2)服务端处理Watcher:setData()会触发znode上设置的数据监视(如果set成功的话)。一个成功的create() 操作会触发被创建的znode上的数据watch,以及其父节点上的child watch。而一个成功的delete()操作将会同时触发一个znode的data watch和child watch(因为这样就没有子节点了),同时也会触发其父节点的child watch。
(3)客户端回调Watcher
11.Chroot特性:3.2.0版本后,添加了 Chroot特性,该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了Chroot,那么该客户端对服务器的任何操作,都将会被限制在其自己的命名空间下,实现客户端应用隔离。
12.serverId(服务器ID 即 myid)、zxid(最新的事物ID 即 LastLoggedZxid)、epoch (逻辑时钟 即 PeerEpoch)。zxid实际上是一个64位的数字,高32位是epoch(时期; 纪元; 世; 新时代)用来标识le

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值