YARN,ZOOKEERPER--学习笔记

1,YARN组件

1.1YARN简介

YARN表示分布式资源调度,简单地说,就是:以分布式技术完成资源的合理分配,让MapReduce能高效完成计算任务。
YARN是Hadoop核心组件之一,用于提供分布式资源调度服务。
而在Hadoop 1.x时,这个过程主要是通过MapReduce中的TaskTracker、JobTracker通信来完成。

这种架构方案主要缺点是:
1)服务器集群资源调度管理和MapReduce执行过程耦合在一起;
2)如果想在当前集群中运行其他计算任务,比如Spark、Storm,则无法统一使用集群中的资源。

在早期Hadoop时,大数据技术就只有Hadoop一家,这个缺点并不明显。
但随着大数据技术的发展,各种新的计算框架不断出现,我们不可能为每一种计算框架部署一个服务器集群,而且就算能部署新集群,数据还是在原来集群的HDFS上,这严重阻碍了大数据技术的发展。
由此,在Hadoop 2.x引来了最主要变化:将Yarn从MapReduce中分离出来,成为一个独立的资源调度框架。
可别小瞧了这个做法,单独分离出YARN带来的优势尤其明显:

1)解耦了MapReduce框架,专注于计算;
(2)分工更加明确、精细化;[专业的事由专业的人去做]3)正因为有了分离YARN,后期诞生了一个个优秀的专注于计算引擎的大数据框架,比如Spark、Flink等。

Yarn是"Yet Another Resource Negotiator"的缩写,字面意思就是:另一种资源调度器。主要区别于当时已有的另一些资源调度器产品,比如Mesos等。通常情况下,YARN是与MapReduce交互配合使用,并给MapReduce合理分配资
源。
比如,MapReduce程序向YARN申请资源,YARN合理分配资源。
当成功分配好资源后,MapReduce即可完成计算任务,而空闲资源也可供其它程序使用。
Hadoop架构有三大核心组件,分别是:HDFS、MapReduce、YARN。

1.2YARN架构组成

在了解YARN架构之前,先来了解一下三个名词:
(1)资源
服务器硬件资源,如CPU、内存、硬盘、网络等
(2)资源调度
管控硬件资源,提升服务器的利用率
(3)分布式资源调度
管控整个分布式服务器集群的全部资源,并整合进行统一调度
YARN架构是由四个模块组成,分别是:
a)ResourceManager(资源管理器):用于接收用户的计算请求任务,并负责集群
的资源分配;
b)NodeManager(节点管理器):单个服务器的资源调度者,负责调度单个服务
器资源并提供给程序使用;
c)ApplicationMaster(任务管理器):单个任务运行的管理者;
d)Client Application:客户端提交的应用程序。
会发现,ResourceManager与NodeManager是Yarn资源调度的核心模块。
YARN分布式资源调度,也遵循中心化模式(主从模式),有两个核心角色:

1)主(Master)角色:ResourceManager
(2)从(Slave) 角色:NodeManager 

1.3YARN提交MR的流程

了解YARN的基本执行流程?

1)我们向Yarn提交应用程序,包括ApplicationMaster、我们的MapReduce程序,以及MapReduce程序启动命令;
2)ResourceManager进程和NodeManager进程通信,根据集群资源,为用户程序分配第一个容器,并将ApplicationMaster分发到这个容器上面,并在容器里面启ApplicationMaster;
3)ApplicationMaster启动后,立即向ResourceManager进程注册,并为自己的应用程序申请容器资源;
4)ApplicationMaster申请到需要的容器后,立即和相应的NodeManager进程通信,将用户MapReduce程序分发到NodeManager进程所在服务器,并在容器中运行,运行的就是Map或者Reduce任务;
5)Map或者Reduce任务在运行时,和ApplicationMaster通信,汇报自己的运行状态。
如果运行结束,ApplicationMaster向ResourceManager进程注销并释放所有的容器资源。到这里,MapReduce程序已执行完成!

1.4 YARN的三大调度器

1,先进先出调度器
FIFO Scheduler表示先进先出调度器。
先进先出调度器指的是:把应用按提交的顺序排成一个队列,在进行资源分配时,先给队列中【队头】的应用进行分配资源,待【队头】的应用需求满足后,再给下一个
应用分配,以此类推。

1)优点
能够保证每一个任务都能拿到充足的资源, 对于大任务的运行非常有好处。
(2)缺点
如果先有大任务后有小任务, 会导致后续小任务无资源可用, 长期处于等待状态。

一般地,在普通数据量提交计算时,几乎不会涉及调度器的设定,但海量数据处理时,要多考虑下调度器的设定。
2,公平调度器
Fair Scheduler表示公平调度器。
Fair Scheduler不需要保留集群的资源,因为它会动态在所有正在运行的作业之间平衡资源。
Fair Scheduler 当一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当后面有小任务提交后,公平调度器会分配一半资源给这个小任务,让这两个
任务公平的共享集群资源。通常情况下,各分享50%资源!
公平调度器执行效果:
(1)优点
能够保证每个任务都有资源可用, 不会有大量的任务等待在资源分配中。
(2)缺点
如果大任务非常的多, 就会导致每个任务获取资源都非常的有限, 也会导致执行时间会拉长。
相比较而言,公平调度器相对来说,分配资源时较为公平公正。
3,容量调度器
Capacity Scheduler表示容量调度器。
Capacity Scheduler为每个组织分配专门的队列和一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。
在每个队列内部,资源的调度是采用的是先进先出(FIFO)策略。

1)优点
可以保证多个任务都可以使用一定的资源, 提升资源的利用率。
(2)缺点
如果遇到非常大的任务, 此任务不管运行在哪个队列中, 都无法使用到集群中所有的资源, 导致大任务执行效率比较低, 当任务比较繁忙时, 依然会出现等待状态。

(1)调度器的使用,是通过/export/server/hadoop-3.3.0/etc/hadoop/yarnsite.xml配置文件中的。

yarn.resourcemanager.scheduler.class参数进行配置的,默认采用
Capacity Scheduler调度器。
1)在这个配置中,在root队列下面定义了两个子队列prod和dev,分别占40%60%的容量;
(2)prod由于没有设置maximum-capacity属性,它有可能会占用集群全部资源;
(3)dev的maximum-capacity属性被设置成了75%,所以即使prod队列完全空闲
dev也不会占用全部集群资源,也就是说,prod队列仍有25%的可用资源用来应急。

2, ZooKeeper概述

2.1ZooKeeper简介

Zookeeper(动物管理员)是一个分布式协调服务的开源框架,简要地说,就是管理大数据生态圈的各类"动物"。
ZooKeeper本质上是一个分布式的小文件存储系统。
采用树形层次结构,ZooKeeper树中的每个节点被称为Znode,且树中的每个节点可以拥有子节点。
Zookeeper具有如下特性:

1)全局数据一致:集群中每个服务器保存一份相同的数据副本,Client客户端无论连接哪个服务器,展示的数据都是一致的;[最重要]
2)可靠性:如果消息被其中一台服务器接收,那么将被所有的服务器接受;
3)顺序性:包括全局有序和偏序两种。
全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;
偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
4)数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
5)实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

2.2集群角色

Zookeeper表示分布式协调服务。
使用Zookeeper时至少需要两个Hadoop服务,一主一备,主服务对外提供业务功能,备用等待主服务不可用时,启用备用服务器对外提供业务功能。
在Zookeeper中,可供服务的角色有三类,分别是:

1)leader:管理者,负责管理follower,处理所有的事务请求(数据的保存,修改,删除);
(2)follower:追随者,负责选举(选举leader)和数据的同步及获取;
(3)observer:观察者,负责数据的同步及获取(需要在配置文件中指定才能生效)

(1)leader管理者

leader管理者是Zookeeper集群工作的核心。负责管理follower,处理所有的事务请求(包括数据的保存,修改,删除)。

(2)follower追随者

follower追随者负责处理客户端非事务(读操作)请求,并转发事务请求给leader管理者。
同时,follower还会参与集群Leader选举投票。

(3)observer观察者
而针对访问量比较大的Zookeeper集群,还可新增observer观察者角色

负责数据的同步及获取(需要在配置文件中指定才能生效)。

Zookeeper的集群常见角色有三个,分别是:leader、follower、observer。

2.3 ZooKeeper服务

1,配置环境变量
(1)未配置环境变量 按Shell脚本方式完成执行。此时,需要依次执行命令:
leader管理者是Zookeeper集群工作的核心。负责管理follower,处理所有的事务
请求(包括数据的保存,修改,删除)。
follower追随者负责处理客户端非事务(读操作)请求,并转发事务请求给leader管理者。
同时,follower还会参与集群Leader选举投票。
负责数据的同步及获取(需要在配置文件中指定才能生效)。
(1)未配置环境变量
按Shell脚本方式完成执行
(2)先配置环境变量,再直接执行
cd /export/server/zookeeper/bin 1./zkServer.sh status 1
(2)先配置环境变量,再直接执行
此时,需要来配置zookeeper环境变量,注意:三台虚拟机都要进行配置。

echo 'export ZOOKEEPER_HOME=/export/server/zookeeper' >>
/etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
source /etc/profile

此时,可以在虚拟机的任意位置执行命令:

zkServer.sh status

我们会发现,配置环境变量的好处是能让命令在不同路径下,都能成功执行。

2.4启动ZooKeeper

对于ZooKeeper的服务,需要在虚拟机中启动后才能使用。启动ZooKeeper命令:

zkServer.sh start

对于ZooKeeper的服务,还可以查看状态与关闭服务,命令:

# 查看状态
zkServer.sh status
# 如果想关闭可以使用stop
zkServer.sh stop

一般地,当仅在一台服务器上启动了ZooKeeper服务,可能无法查看到它所对应的服务角色。
此时,可以多开启一台虚拟机的ZooKeeper服务,再查看角色信息。
当要启动Zookeeper服务时,可以执行zkServer.sh start;命令
在查看服务时,记住三个关键字:start启动、status状态、stop停止。

3,使用ZooKeeper

3.1,客户端连接

当已经成功开启了Zookeeper服务后,则可以使用客户端来连接服务并执行相应操作了。
连接Zookeeper服务时,有两种方式:

# 方式1:连接其他节点
[root@node1 ~]# zkCli.sh -server IP地址
# 方式2:直接连接本地
[root@node1 ~]# zkCli.sh

请添加图片描述
采用zkCli.sh直接连接本地的zkServer,并完成常见命令的使用。
(1)当要远程连接不同服务器的Zookeeper服务时,使用zkCli.sh -server IP地址命令;
(2)注意,当想要快速查看zookeeper客户端的操作命令,可以直接执行help命令。

3.2数据模型

ZooKeeper的数据模型称为Znode,一般有两种体现:
(1)目录:可以存储数据,也可以当做目录使用
(2)文件:可以存储数据,也可以当做目录使用
ZooKeeper的数据模型也有一些不同之处:

1)Znode兼具文件和目录两种特点:Znode没有文件和目录之分,Znode既能像文件一样存储数据,也能像目录作为路径标识的一部分;
(2)Znode具有原子性操作: 读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据;
(3)Znode存储数据大小有限制: 每个Znode的数据大小至多1M,但是在常规使用中,应该远小于此值;
(4)Znode通过路径引用: 路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。
并且,会发现:默认有/zookeeper节点用以保存关键的管理信息。

在zookeeper中的节点是目录或文件都能存储数据,这个描
述正确
(2)通常地,zookeeper数据模型分为目录、文件,但本质上区别不大。

3.3节点类型

create [-e] 节点路径名 数据值
创建数据节点。
当添加-e后,表示临时节点;当创建多层节点时,要保证
已创建最后子节点前的所有节点。
Znode节点类型有两类,分别为:

1)永久节点
该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作时,他们才能被删除;
注意: 永久节点可以拥有子节点。
(2)临时节点
该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,也可手动删除;
注意: 临时节点不允许拥有子节点。

当然了,可以通过创建节点是否添加-e选项或ls2能查看到节点类型:

# 添加了-e表示临时节点,否则为永久节点
create [-e] 节点路径名 数据值
# 查看ephemeralOwner字段为0x0时,为永久节点; 结果值较长的为临时节点
ls2 节点路径名
cZxid:Znode创建的事务id。
ctime:Znode创建时的时间戳。
mZxid:Znode被修改的事务id,即每次对当前znode的修改都会更新mZxid。
mtime:Znode最新一次更新发生时的时间戳。
pZxid:Znode的子节点列表变更的事务ID,添加子节点或删除子节点就会影响子节点列表。
cversion:子节点进行变更的版本号。添加子节点或删除子节点就会影响子节点版本号。
dataVersion:数据版本号,每次对节点进行set操作,dataVersion的值都会增
加1(即使设置的是相同的数据),可有效避免了数据更新时出现的先后顺序问题。
aclVersion:权限变化列表版本 access control list Version。
ephemeralOwner:字面翻译临时节点拥有者,持久节点值为0x0,非持久节点不为0(会话ID)。
dataLength:Znode数据长度。
numChildren:当前Znode子节点数量(不包括子子节点)。

当在使用create关键字创建节点时,添加-e表示创建临时节点
(2)当在查看节点详细信息时,可以通ephemeralOwner字段值来区分临时或永久节点

3.4Watch监听机制

通常地,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态发生变化时,会通知所有订
阅者,使他们能够做出相应的处理。
ZooKeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
watch监听机制过程有:
(1)客户端向服务端注册Watcher;
(2)服务端事件发生触发Watcher;
(3)客户端回调Watcher得到触发事件情况
仅需到某客户端中设定监听机制格式为
get /节点名 watch
Watch监听机制有如下特点:

a)先注册再触发: Zookeeper中的watch机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,并通知给客户端;
b)一次性触发: 事件发生触发监听后,一个watcher event就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发;
c)异步发送: watcher的通知事件从服务端发送到客户端是异步的;(同时进行)
d)通知内容: 通知状态(keeperState),事件类型(EventType)和节点路径(path)。

3.5选举机制

(1)数据发布/订阅
数据发布/订阅系统,就是发布者将数据发布到ZooKeeper的一个节点上,提供订阅者进行数据订阅,从而实现动态更新数据的目的,实现配置信息的集中式管理和数据的动态更新。监听机制就是[数据发布/订阅]快速实现。
(2)提供集群选举
在分布式环境下,不管是主从架构集群,还是主备架构集群,要求在服务时,有且仅有一个正常的对外提供服务的主服务器,我们称之为Master。
当master出现故障之后,需要重新选举出新的Master,用以保证服务的连续可用性。
而Zookeeper则可以提供这样的功能服务,但一般会涉及到:znode唯一性、临时节点短暂性、监听机制等知识使用。
通常情况下,选举机制要求:过半原则。
所以,我们会发现搭建集群一般都是奇数,即只要某个node节点票数过半立刻成为leader。
当然了,选举机制下,也有两个特殊情况:
(1)集群第一次启动
启动follower每次投票后,他们会相互同步投票情况,如果票数相同,谁的myid大,谁就当选leader。
一旦确定了leader,后面来的默认就是follower,即使它的myid大,leader也不会改变(除非leader宕机了)。

# 进入数据目录
cd /export/server/zookeeper/zkdatas
# 查看myid值大小
cat myid

(2)leader宕机后,再次启动
每一个leader当老大时,都会产生新纪元epoch,且每次操作完节点数据都会更新事务id(高32位_低32位) ,而当leader宕机后,剩下的follower就会综合考虑几个因素
选出最新的leader。先比较最后一次更新数据事务id(高32位_低32位),谁的事务id最大,谁就当选leader。
如果更新数据的事务id都相同的情况下,就需要再次考虑myid,谁的myid大,谁就当选leader。

(1)通常情况下,不管选举时属于哪种情况,都有考虑myid值的大小
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/164966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

公司内部网络架设悟空CRM客户管理系统 cpolar无需公网IP实现内网,映射端口外网访问

1、什么是内网穿透? 内网穿透,即内网映射,内网IP端口映射到外网的过程。是一种主动的操作,需要本人一些内网的权限。比如在公司自己电脑,将办公OA发布到互联网,然后提供外网在家或出差在外连接访问。 可以…

【信息安全】浅谈三种XSS(跨站脚本攻击)的攻击流程与防御措施

银狼美图镇楼 XSS 跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web安全漏洞,攻击者通过在Web应用中注入恶意脚本,使得浏览器在解析页面时执行该脚本,从而实现攻击目的。 类型 存储型XSS&…

Ubuntu中apt-get update显示域名解析失败

第一步 检查主机->虚拟机能否ping成功 ping 红色框中的IPv4地址 能通,表示虚拟机ip配置成功;否则,需要先配置虚拟机ip 第二步 检查是否能ping成功百度网址 ping www.baidu.com 若不成功,可能原因 虚拟机没联网,打开火狐浏览器…

leetcode刷题日记:190. Reverse Bits(颠倒二进制位)和191. Number of 1 Bits( 位1的个数)

190. Reverse Bits(颠倒二进制位) 题目要求我们将一个数的二进制位进行颠倒,画出图示如下(以8位二进制为例): 显然对于这种问题我们需要用到位操作,我们需要将原数的每一位取出来然后颠倒之后放进另一个数。 我们需要…

CHM文件阅读必备:CHM Viewer Star 免激活

CHM Viewer Star for Mac是一款针对Mac系统的CHM文件查看器,具有以下功能特点: 快速打开和加载CHM文件:采用高效的解码引擎,可以快速打开和阅读CHM文件,同时系统资源占用少,用户可以流畅地阅读大型CHM文件…

文本向量化

文本向量化表示的输出比较 import timeimport torch from transformers import AutoTokenizer, AutoModelForMaskedLM, AutoModel# simcse相似度分数 def get_model_output(model, tokenizer, text_str):"""验证文本向量化表示的输出:param model: 模型的…

分组交换技术

目录 一、新型计算机网络的基本特点 二、电路交换 1、回顾电路交换的原理 2、使用交换机连接许多部电话 3、电路交换举例 4、电路交换的三个阶段 5、电路交换的特点 三、分组交换 1、因特网有边缘部分与核心部分组成 2、分组交换的原理 3、分组交换的优点 4、存储转…

RepVgg: 网络结构重参化

CVPR2021 截至目前1004引 论文连接 代码连接 文章提出的问题 大多数的研究者追求的是设计一个好的网络结构,这种“好”体现在网络具有复杂的网络设计,这种网络虽然比简单的网络收获了更加高的准确率,但是网络结构中的大量并行分支,导致模型的难以应用和自定义,主要体现…

支付、结算、对账流程

1、支付过程概览 2、微信支付流程 以微信支付为例,用户使用北京银行,商户收款银行为工行银行,列出机构名 用户在商户处选购商品或服务,选择使用微信支付进行付款。用户打开微信支付,输入支付密码或进行指纹识别等身份验证。微信支付系统将支付请求发送给北京银行。北京银行…

【Spring】之注解存取Bean对象

在本系列的上一篇文章中,我们已经了解了Spring的一些核心概念,并且还学习了Spring存取。但是我们发现在存取的过程中还是比较复杂,接下来我们将学习更为简单的Spring存取,其中涉及到的主要内容就是注解。并且在Spring家族的学习过…

kubenetes-服务发现和负载均衡

一、服务发布 kubenetes把服务发布至集群内部或者外部,服务的三种不同类型: ClusterlPNodePortLoadBalancer ClusterIP是发布至集群内部的一个虚拟IP,通过负载均衡技术转发到不同的pod中。 NodePort解决的是集群外部访问的问题,用户可能不…

FL Studio2024免费编曲音乐制作软件

用FL Studio编曲,让音乐成为你的翅膀,飞翔在无尽的创作海洋中吧! FL Studio作为一款功能强大且备受赞誉的音乐制作软件,为你提供了一个独特的创作平台。通过FL Studio,你可以自由地创作、编曲,制作属于自己…

IDEA 搭建 SpringCloud 项目【超详细步骤】

文章目录 一、前言二、项目搭建1. 数据库准备2. 创建父工程3. 创建注册中心4. 服务注册5. 编写业务代码6. 服务拉取 一、前言 所谓微服务,就是要把整个业务模块拆分成多个各司其职的小模块,做到单一职责原则,不会重复开发相同的业务代码&…

Jenkins测完通知到人很麻烦?一个设置配置钉钉消息提醒!

Jenkins 作为最流行的开源持续集成平台,其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。但其实 Jenkins 还可以支持钉钉消息通知,其主要通过 DingTa…

【Linux】动静态库的使用与软链接的结合

文章目录 前言一、静态库1.静态库的创建2.静态库的链接3.将库进行打包4.链接方法:1.直接链接2.拷贝到系统路径里面3.采用软链接方法 二、动态库1.解决加载找不到动态库的方法1.直接拷贝2.建立软链接3.建立自己的动态路径配置文件 2.为什么动态库权限需可执行而静态库…

【WSL/WSL2-Ubuntu】突破界限:不使用服务器在一台Windows搭建Nginx+FastDFS

打造超级开发环境:Nginx和FastDFS在WSL中的完美结合 前言 随着软件开发领域的快速发展,跨平台的开发环境变得日益重要。Windows Subsystem for Linux(WSL)和WSL 2为开发者提供了在Windows操作系统上体验Linux环境的便捷途径。本…

javaspringbootmysql学生社团管理系统26281-计算机毕业设计项目选题推荐(附源码)

目录 摘要 Abstract 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生社团管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析…

用户增长模型:3A3R策略模型

一、概述 A - A - A - R - R - R 增长模型,即3A3R策略模型,由海盗模型演变而来,是目前使用最多、适用范围最广的增长策略模型。原始的海盗模型由 Acquisition (获客)、 Activation (活跃)、 Re…

【选题推荐】软件工程毕设选题可以选什么

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题,难度适中,适合作为毕业设计,大家参考。 学长整理的题目标准: 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…