【自记】hadoop资源管理分配与队列的作用

在 Hadoop YARN(Yet Another Resource Negotiator)中,“管理和分配资源”是一个核心概念,它涉及到如何高效地利用集群中的计算资源(如 CPU、内存、磁盘等),以支持多个应用程序的运行。以下是“管理和分配资源”在 YARN 中的具体含义和实现方式:

1. 管理资源

“管理资源”指的是对集群中所有节点的资源进行监控、跟踪和维护,确保资源的合理使用和高效分配。YARN 的 ResourceManager 负责这一部分的工作,具体包括:

  • 资源监控

    • ResourceManager 通过与各个节点上的 NodeManager 通信,实时监控每个节点的资源使用情况(如 CPU 使用率、内存使用量等)。

    • NodeManager 会定期向 ResourceManager 汇报其节点的资源状态。

  • 资源维护

    • ResourceManager 维护一个全局的资源视图,记录集群中可用的总资源以及已分配的资源。

    • 它会根据节点的资源状态动态调整资源分配策略,确保资源的高效利用。

2. 分配资源

“分配资源”指的是根据预定义的策略和队列配置,将集群中的资源分配给提交到 YARN 的应用程序。具体步骤如下:

  • 资源请求

    • 应用程序(如 MapReduce 作业或 Spark 应用程序)通过 ApplicationMaster 向 ResourceManager 提交资源请求。这些请求指定了需要的资源类型和数量(如 CPU 核心数、内存大小等)。

  • 调度策略

    • ResourceManager 根据配置的调度策略(如容量调度器或公平调度器)来决定如何分配资源。

    • 容量调度器:根据队列的容量(Capacity)和最大容量(Maximum Capacity)分配资源。

    • 公平调度器:根据队列的公平性策略,确保每个队列都能获得合理的资源份额。

  • 资源分配

    • ResourceManager 根据调度策略和资源请求,将资源分配给应用程序。分配的资源以容器(Container)的形式存在。

    • 每个容器包含一定量的 CPU 和内存资源,应用程序的任务(如 MapReduce 的 Map 和 Reduce 任务)在这些容器中运行。

3. 队列的作用

队列在资源管理和分配中起着关键作用:

  • 资源隔离

    • 队列将集群资源划分为多个逻辑单元,每个队列可以独立管理其资源。这有助于防止某个应用程序或用户占用过多资源,影响其他应用程序的运行。

  • 资源分配

    • 队列的配置(如 CapacityMaximum Capacity)定义了队列可以使用的资源比例。ResourceManager 根据这些配置将资源分配给不同的队列。

  • 多租户支持

    • 队列支持多租户环境,允许不同的用户或团队共享集群资源。通过队列的配置,可以为不同的用户或团队分配不同的资源份额。

4. 资源分配的动态性

YARN 的资源分配是动态的,可以根据集群的负载和资源使用情况进行调整:

  • 弹性伸缩

    • 如果某个队列的资源使用率较低,而其他队列需要更多资源,ResourceManager 可以动态调整资源分配,将空闲资源分配给需要的队列。

    • 这种弹性伸缩机制确保了资源的高效利用,特别是在多租户环境中。

  • 抢占机制

    • 在某些情况下,ResourceManager 可以启用抢占机制(Preemption),强制终止某些低优先级任务的容器,以释放资源给高优先级任务。

5.容量

Capacity(容量)

  • 定义

    • Capacity 是队列在正常情况下可以使用的资源比例。它定义了队列在集群总资源中所占的固定份额。

    • 这是一个静态配置,通常在 capacity-scheduler.xml 文件中设置。

  • 作用

    • 保证资源:确保队列在正常情况下能够获得一定比例的资源。

    • 资源分配:ResourceManager 根据队列的 Capacity 分配资源,确保每个队列都能获得其配置的资源份额。

  • 示例

    xml复制

    <queue name="default">
        <capacity>50</capacity>
    </queue>
    • 在这个配置中,default 队列可以使用集群总资源的 50%。

Maximum Capacity(最大容量)

  • 定义

    • Maximum Capacity 是队列在资源紧张时可以使用的最大资源比例。它定义了队列在资源竞争时可以占用的最大资源份额。

    • 这是一个动态限制,通常在 capacity-scheduler.xml 文件中设置。

  • 作用

    • 防止资源滥用:防止某个队列占用过多资源,从而影响其他队列的运行。

    • 弹性伸缩:在资源紧张时,队列可以使用超出其 Capacity 的资源,但不会超过 Maximum Capacity

  • 示例

    xml复制

    <queue name="default">
        <capacity>50</capacity>
        <maximum-capacity>70</maximum-capacity>
    </queue>
    • 在这个配置中,default 队列的 Capacity 是 50%,但 Maximum Capacity 是 70%。这意味着在资源紧张时,该队列最多可以使用集群总资源的 70%。

资源抢占(Preemption)

  • 定义

    • 资源抢占是指在资源紧张时,ResourceManager 可以强制终止某些低优先级任务的容器,以释放资源给高优先级任务。

    • 这是一个可选功能,需要在 capacity-scheduler.xml 文件中启用。

  • 作用

    • 资源公平性:确保资源在不同队列之间公平分配,防止某个队列长时间占用过多资源。

    • 动态调整:在资源紧张时,ResourceManager 可以根据队列的 Maximum Capacity 和资源使用情况,动态调整资源分配。

  • 示例

    xml复制

    <queue name="default">
        <capacity>50</capacity>
        <maximum-capacity>70</maximum-capacity>
        <preemption>true</preemption>
    </queue>
    • 在这个配置中,default 队列启用了资源抢占功能。

  • 管理和分配资源

    • 管理资源:ResourceManager 监控和维护集群中的资源状态,确保资源的合理使用。

    • 分配资源:ResourceManager 根据调度策略和队列配置,将资源分配给提交到 YARN 的应用程序。

Hadoop_hbase 1.处理hadoop的datanode宕机 cd path/to/hadoop 走到hadoop的bin目录 ./hadoop-daemon.sh start datanode ./hadoop-daemon.sh start tasktracker 2.处理hadoop的namenode宕机 ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start tasktracker 3.如果是新添加一个节点,需要执行以下步骤: 首先,把新节点的 IP或主机名 加入主节点(master)的 conf/slaves 文件。 然后登录新的从节点,执行以下命令: $ cd path/to/hadoop $ bin/hadoop-daemon.sh start datanode $ bin/hadoop-daemon.sh start tasktracker 然后就可以在master机器上运行balancer,执行负载均衡 $bin/hadoop balancer 4.处理hbase的regionserver宕机的办法 ./hbase-daemon.sh start regionserver ./hbase-deamon.sh start zookeeper//只针对有zookeeper的regionserver而且是机子需要重启的情况 5.处理hbase的master宕机的办法 ./hbase-daemon.sh start master ./hbase-daemon.sh start zookeeper//可选 6.完全重启整个集群的过程 首先是用root权限关闭所有节点的防火墙,/etc/init.d/iptables stop 然后启动hadoop集群 来到hadoop的安装路径执行: ./start-all.sh 待到集群全部成功启动之后两分钟之后执行关闭hadoop文件系统的安全模式, ./hadoop dfsadmin -safemode leave 对于hadoop文件系统安全模式的解释,如下 NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1- dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。 dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了 元数据录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。 有两个方法离开这种安全模式 (1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。 (2)hadoop dfsadmin -safemode leave命令强制离开 用户可以通过dfsadmin -safemode $value来操作安全模式,参数$value的说明如下: enter – 进入安全模式 leave – 强制NameNode离开安全模式 get – 返回安全模式是否开启的信息 wait – 等待,一直到安全模式结束。 //因为我们后面要用到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值