Yarn概述
是一个资源调度平台,相当于一个分布式的操作系统平台,而MR相当于操作系统中运行的软件,比如QQ、微信。
基础架构
- ResourceManager
- 处理客户端请求
- 监控NodeManager
- 启动或监控ApplicationMaster
- 资源的分配与调度
- NodeManager
- 管理单个节点的资源
- 处理来自RM的命令
- 处理来自AM的命令
- ApplicationMaster
- 为应用程序申请资源并分配给内部的任务
- 任务的监控与容错
- Container(容器):container是yarn中的资源抽象
- 独立:各个容器之间是独立运行的
- 回收:不使用时会自动回收资源
YARN工作机制
- 客户端申请一个Application,RM返回资源提交路径和任务ID
- 客户端按照路径提交任务
- 客户端资源提交完毕,申请运行mrAppMaster
- 将用户请求初始化为一个Task
- AM领取任务,创建一个容器
- 容器从HDFS文件系统下载job资源到本地
- 在容器中进行MapRedcue操作
Yarn调度器和调度算法
- FIFO
- 单队列
- 先进先执行,无法区分任务的轻重缓急
- 资源利用率取决于当前正在运行的程序
- 容量(Capacity Scheduler):优先选择资源利用率低的队列
- 多队列,允许多个队列并发运行
- 容量保证:可以设定资源最低保障和资源使用上限
- 灵活性:如果队列资源有剩余,可以暂借,当该队列有新应用程序提交,其他队列借调的资源要返还。
- 多租户:会限制同一用户提交的作业所占用的资源量,以防止一个用户独占队列资源。
- 公平(Fair Scheduler):同队列所有任务共享资源,在时间尺度上获得公平的资源。
- 队列资源 / 该队列job个数 - 实际获得资源个数 = 缺额
策略
:优先选择对资源的缺额比例大的- 每个队列可以单独设置资源分配方式
- 参数
- 实际最小资源份额 = min(资源需求量,配置的最小资源)
- 是否饥饿:给的资源是否小于最小资源份额
- 资源分配比:饥饿的程度
- 资源使用权重比:资源使用量/权重
总结:公平调度器由于每个队列可以并发运行,队列之间的各个任务也可以并发运行,对集群的性能要求较高。
yarn优化和新特性
HDFS集群扩容及缩容
黑白名单
- 白名单 touch whiteList
- 黑名单 touch blackList
- vim hdfs-site.xml
<!-- 白名单 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.3.4/etc/hadoop/whitelist</value>
</property>
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.3.4/etc/hadoop/blacklist</value>
</property>
- 修改白名单或黑名单后,
hdfs dfsadmin -refreshNodes
刷新即可
服役新服务器
- 克隆后需要删除data/ logs/文件夹,然后刷新
hdfs dfsadmin -refreshNodes
。 - sbin/start-balancer.sh -threshold 10 ,开启服务器内存均衡,内存之间差距小于10%
黑名单退役服务器
- 在黑名单中添加要退役的服务器
- 刷新节点
hdfs dfsadmin -refreshNodes
- 退役成功后网页服务Logo会变成黄色,如果副本数量大于剩余机器数量会退役失败。
HDFS安全模式(故障排除)
安全模式触发
- 集群刚开机的时候,会有一段检查时间,当检查无误后30s自动退出安全模式
- 集群丢失数据,某个块的所有副本全丢了。默认情况允许丢失一个块,当丢失两个块及以上时,安全模式就不会退出。
安全模式特征
- 无法上传,修改,删除文件
- 可以查看,下载文件
安全模式操作
- hdfs dfsadmin -safemode leave 离开安全模式,会打印到底丢了什么。之后立刻进入安全模式,防止继续出现数据丢失。
- 数据的重要性:
- 不是很重要:删除对应块的元数据,回到正常模式。
- 数据很重要:机械硬盘还未被覆盖时仍然有可能恢复。直接断电,磁盘拿下来,找专业人士修复。