• 大数据之yarn


    Yarn概述

    是一个资源调度平台,相当于一个分布式的操作系统平台,而MR相当于操作系统中运行的软件,比如QQ、微信。目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.3.4默认的资源调度器是Capacity Scheduler。

    基础架构架构

    1. ResourceManager
      • 处理客户端请求
      • 监控NodeManager
      • 启动或监控ApplicationMaster
      • 资源的分配与调度
    2. NodeManager
      • 管理单个节点的资源
      • 处理来自RM的命令
      • 处理来自AM的命令
    3. ApplicationMaster
      • 为应用程序申请资源并分配给内部的任务
      • 任务的监控与容错
    4. Container(容器):container是yarn中的资源抽象
      • 独立:各个容器之间是独立运行的
      • 回收:不使用时会自动回收资源

    YARN工作机制

    1. 客户端申请一个Application,RM返回资源提交路径和任务ID
    2. 客户端按照路径提交任务
    3. 客户端资源提交完毕,申请运行mrAppMaster
    4. 将用户请求初始化为一个Task
    5. AM领取任务,创建一个容器
    6. 容器从HDFS文件系统下载job资源到本地
    7. 在容器中进行MapRedcue操作

    Yarn调度器和调度算法

    1. FIFO
      • 单队列
      • 先进先执行,无法区分任务的轻重缓急
      • 资源利用率取决于当前正在运行的程序
    2. 容量(Capacity Scheduler):优先选择资源利用率低的队列
      • 多队列,允许多个队列并发运行
      • 容量保证:可以设定资源最低保障和资源使用上限
      • 灵活性:如果队列资源有剩余,可以暂借,当该队列有新应用程序提交,其他队列借调的资源要返还。
      • 多租户:会限制同一用户提交的作业所占用的资源量,以防止一个用户独占队列资源。
    3. 公平(Fair Scheduler):同队列所有任务共享资源,在时间尺度上获得公平的资源。
      • 队列资源 / 该队列job个数 - 实际获得资源个数 = 缺额
      • 策略:优先选择对资源的缺额比例大的
      • 每个队列可以单独设置资源分配方式
      • 参数
        • 实际最小资源份额 = min(资源需求量,配置的最小资源)
        • 是否饥饿:给的资源是否小于最小资源份额
        • 资源分配比:饥饿的程度
        • 资源使用权重比:资源使用量/权重

    总结:公平调度器由于每个队列可以并发运行,队列之间的各个任务也可以并发运行,对集群的性能要求较高。

    hadoop优化和新特性

    集群磁盘数据均衡

    加入一块磁盘

    1. 新建一块磁盘
    2. lsblk:查看分区情况
    3. sudo mkfs.ext4 /dev/sdb1: 格式化刚刚建立的分区
    4. sudo mkdir -p /data/disk1 + sudo mount /dev/sdb1 /data/disk1新建一个目录挂载这个磁盘
    5. lsblk : 查看磁盘情况
    6. sudo chown -R atguigu:atguigu /data/disk1:修改访问权限
    7. 可以在hadoop102:9864查看磁盘信息,目前HDFS并不认识这块磁盘
    8. 在hdfs-site.xml文件中添加如下内容:
    <property>
         <name>dfs.datanode.data.dirname>
         <value>file://${hadoop.tmp.dir}/dfs/data,file:///data/disk1 value>
    property>
    
    • 1
    • 2
    • 3
    • 4
    1. 完成后重启datanode节点

    新磁盘加入后负载均衡

    1. 生成均衡计划: hdfs diskbalancer -plan hadoop102 --thresholdPercentage 1 -v
    2. 执行均衡计划: hdfs diskbalancer -execute 计划路径
    3. 查看当前均衡任务的执行情况:hdfs diskbalancer -query hadoop102
    4. 任务完成后到hadoop102:9866查看均衡结果

    HDFS集群扩容及缩容

    黑白名单

    1. 白名单 touch whiteList
    2. 黑名单 touch blackList
    3. vim hdfs-site.xml
    
    <property>
         <name>dfs.hostsname>
         <value>/opt/module/hadoop-3.3.4/etc/hadoop/whitelistvalue>
    property>
    
    
    <property>
         <name>dfs.hosts.excludename>
         <value>/opt/module/hadoop-3.3.4/etc/hadoop/blacklistvalue>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 修改白名单或黑名单后,hdfs dfsadmin -refreshNodes 刷新即可

    服役新服务器

    1. 克隆后需要删除data/ logs/文件夹,然后刷新hdfs dfsadmin -refreshNodes
    2. sbin/start-balancer.sh -threshold 10 ,开启服务器内存均衡,内存之间差距小于10%

    黑名单退役服务器

    1. 在黑名单中添加要退役的服务器
    2. 刷新节点hdfs dfsadmin -refreshNodes
    3. 退役成功后网页服务Logo会变成黄色,如果副本数量大于剩余机器数量会退役失败。

    HDFS安全模式(故障排除)

    安全模式触发

    1. 集群刚开机的时候,会有一段检查时间,当检查无误后30s自动退出安全模式
    2. 集群丢失数据,某个块的所有副本全丢了。默认情况允许丢失一个块,当丢失两个块及以上时,安全模式就不会退出。

    安全模式特征

    1. 无法上传,修改,删除文件
    2. 可以查看,下载文件

    安全模式操作

    1. hdfs dfsadmin -safemode leave 离开安全模式,会打印到底丢了什么。之后立刻进入安全模式,防止继续出现数据丢失。
    2. 数据的重要性:
      • 不是很重要:删除对应块的元数据,回到正常模式。
      • 数据很重要:机械硬盘还未被覆盖时仍然有可能恢复。直接断电,磁盘拿下来,找专业人士修复。
  • 相关阅读:
    Transformer模型
    刷题用到的非常有用的函数c++(持续更新)
    经典算法题 -- 水仙花数
    【黑马程序员】Python文件、异常、模块、包
    HDLBits: 在线学习 SystemVerilog(五)-Problem 19-23
    宗老师教学-小程序渗透测试检测类目
    候选公示!高工智能汽车金球奖第二批入围年度产品/方案亮相
    一文了解Spark引擎的优势及应用场景
    JavaEE之HTTP协议(1)_HTTP基础知识,HTTP 请求、响应格式,方法,状态码
    Spring Cloud面试题及答案(2022最新版)
  • 原文地址:https://blog.csdn.net/qq_44273739/article/details/132799775