YARN学习
1.YARN是什么?
yarn 分配运行资源 mapReduce的运行平台
2.YARN运行过程:
- 客户端与ResourceManager交互,生成临时配置文件(Application)
- ResourceManager根据Application信息生成Task然后生成MapReduceApplicationMaster(简称AM)
- AM通过和App交互申请MapTask资源,并运行MapTask任务
- MapTask资源完毕,申请资源处理ReduceTask,收回Maptask资源 ,ReduceTask完毕,同样收回
为什么是6个??
图中不是四个就够用么
3.YARN任务调度
1.调度器
1.先进先出 先到先服务
资源排队,
2.容量调度器
单队列变为了多队列
这里,不同队列的资源是可以相互借调的,但是如果银行需要用钱的时候,需要将债直接收回来,而债主的任务直接失败,进行重试.
多租户策略,就是,一个队列起码2个job在占用资源.
3.公平调度器
如果资源满足不了job,job就先等着
4.问题
1. 什么是缺额: 距离运行条件所差的资源就叫缺额
2.DRF
百分比的比较,谁大就是谁控制
3.什么是虚拟核数?
虚拟核数就是我们自己设定的CPU核数大小,但是当物理核数时,会按照机器的实际核数进行运载,甚至
超载
5.YARN队列如何配置
如何在YARN创建队列
capacity-scheduler
当前调度器能支持的最大应用数(job)
applicationMaster
集群资源的判断标准`
acl 与权限有关
job的最大存活时间
默认的超时时间
架构模型
调度策略
生产环境通过修改参数调控资源
Zookeeper
1.概念(是什么)?
- Zookeeper 文件系统+通知机制
- Zookeeper相当于管理系统,类似于HDFS的NN,而他的DN是服务器和客户端。
- 注意,创建的都是临时节点,应该是超时删除把或者结束删除。
- 观察者模式: 当ZK的节点列表发生变化,会通知其他节点。监听实现
- 数据同步,每个Service上的数据都能保证一定时间内是相同的.
2.模拟
问题
-
为什么半数以上存活?
如果一半都不存活了,就显得Zookeeper不正常 -
为什么奇数台服务器好?
6台错3台 无法运行 5台错3台无法运行,奇数台可以多一个机器。 -
实时性
因为Zookeeper不存大量业务数据,所以数据量显得比较少,这样数据更新就很快,保证了实时性。
3.Zookeeper 结构
路径和数据在一起.
zkServer.sh 开启关闭ZK
zkCli 开启客户端
4.配置修改zoo.cfg
1.配置文件名去掉simple
2.修改配置文件内容 修改数据存储路径 添加zookeeper服务器列表
参数1 : tickTime 默认2000ms 通信心跳时间,Zookeeper服务器与客户端心跳时间
参数2 : initLimit 默认10 LF初始通信时限
参数3 : syncLimit 默认5 LF同步通信时限
这三个参数,就表示,默认2秒,Zookeeper客户端和服务器交互一次,
而Zookeeper中,Leader和Follower初始连接时允许的最多心跳数为initLimit,也就是说,Leader和Follower如果在tickTime * initLimit不能完成初次交互,则Follower直接失败.
同步通信时限: 同步,就是日常交互时的通信时限,最多syncLimit次不进行回应,就结束
dataDir: 存储Zookeeper的数据的地址 注意tmp是存储临时文件的,会被Linux定期删除
server.1=hadoop201:2888:3888
server.2=hadoop202:2888:3888
server.3=hadoop203:2888:3888
server.服务器序号 = 服务器地址: Follower与Leader交换信息的端口:选举时互相通信的端口
3.创建数据存储文件夹 创建id文件 ,输入自身服务器序号
5.选举机制(面试)
1.第一次启动
我的理解,先投自己,如果没Leader,交换信息后,投大的。如果已经有Leader就无法改变。
2.再次选举
选最强者,数据最全者,
1.保存数据时,有时间戳,进行时间戳比对,(事务ID)
2. 数据同步时,比myid
Zookeeper 默认创造永久节点
create -e 创建临时节点
create -s 带序列永久节点
递归删除 deleteall
zookeeper的修改只能整体覆盖
set
反向通知
默认不做反向通知
ls -w 开启监控
zk通知 但是并不帮忙直接取数据
查看文件信息 stat 文件路径
ls -s /文件路径 也显示子文件
监听(感觉也可以叫触发器)
zk存储监听器列表,
ZK写数据,先发给Leader,Leader再分发出去,然后写入