【问题标题】:Hadoop Resource managementHadoop资源管理
【发布时间】:2016-01-05 02:11:46
【问题描述】:

我有一个 12 节点的集群,我正在运行一个 yarn 架构。似乎我的节点大部分时间都很忙,而且很多时候作业都失败了。如何随时查看资源的使用情况? 还有什么方法可以为用户设置有限的资源,例如:如果用户提交作业,他应该只获得 25gb 的内存和 12 个内核。

【问题讨论】:

    标签: hadoop mapreduce hdfs hadoop-yarn cloudera


    【解决方案1】:

    有多种方法可以监控集群。

    如果您使用 Cloudera 发行版,那么您可以转到 Cloudera Manager 来监控和管理资源

    如果您使用的是 Hortonworks 发行版,那么您可以转到 Ambari Web 界面来监控和管理资源

    如果您不使用任何发行版,则将使用 Ganglia 或 Nagios Web 界面管理集群

    即使您没有这些,您也可以转到通常在 http://:8088 上运行的资源管理器 Web 界面。 8088 是默认端口号,可以自定义,你可以从 yarn-site.xml 获取该信息

    如果您的组织不提供对 Web 界面的访问权限,您可以使用 yarn application --listmapred job --list 等命令查看集群中发生的情况

    监控实际使用情况并不乏味。你应该知道监控和开发 shell 脚本的 linux 命令。

    还有什么方法可以为用户设置有限的资源,例如:如果用户提交作业,他应该只获得 25gb 的内存和 12 个内核。

    是的,您需要使用 Yarn 中嵌入的调度程序的队列和池概念。调度器 FIFO 有 3 种类型,Capacity 和 Fair。 FIFO 不应该在任何集群中使用,它主要用于开发。您需要了解容量和公平调度程序并设置限制。

    【讨论】:

    • 我可以访问 cloudera 管理器、名称节点和资源管理器 Web UI
    • 然后你可以去Cloudera Manager监控CPU、内存和I/O的使用情况。您可以从集群级别开始并深入到各个主机。通过转到资源管理器 UI,您可以监控当前正在运行的作业。
    • 谢谢杜尔加。关于问题的第二部分有什么想法吗?
    【解决方案2】:

    似乎我的节点大部分时间都很忙,而且很多时候作业都失败了

    您可以实施一些通用的性能调整指南来提高吞吐量。看看这个帖子:Tips to improve MapReduce Job performance in Hadoopcloudera articleMap reduce performance aticle

    还有什么方法可以为用户设置有限的资源,例如:如果用户提交作业,他应该只获得 25gb 的内存和 12 个内核。

    添加到杜尔加的答案,

    公平调度是一种将资源分配给应用程序的方法,以便所有应用程序平均随着时间的推移获得同等份额的资源。 Hadoop NextGen 能够调度多种资源类型。

    默认情况下,公平调度器仅基于内存调度公平决策。它可以配置为同时使用内存和 CPU 进行调度,使用 Ghodsi 开发的主导资源公平概念。

    调度程序将应用程序进一步组织成“队列”,并在这些队列之间公平地共享资源。 By default, all users share a single queue, named “default”. If an app specifically lists a queue in a container resource request, the request is submitted to that queue. It is also possible to assign queues based on the user name 通过配置包含在请求中。

    例如

    <user name="sample_user">
        <maxRunningApps>30</maxRunningApps>
      </user>
      <userMaxAppsDefault>5</userMaxAppsDefault>
    

    CapacityScheduler 旨在以操作员友好的方式将 Hadoop 应用程序作为共享的多租户集群运行,同时最大限度地提高集群的吞吐量和利用率。

    传统上,每个组织都有自己的一组私有计算资源,这些资源有足够的容量来满足组织在高峰或接近高峰条件下的 SLA。这通常会导致管理多个独立集群(每个组织一个集群)的平均利用率和开销不佳

    <property>
      <name>yarn.scheduler.capacity.queue-mappings</name>
    
      <value>u:user1:queue1,g:group1:queue2,u:%user:%user,u:user2:%primary_group</value>
      <description>
        Here, <user1> is mapped to <queue1>, <group1> is mapped to <queue2>, 
        maps users to queues with the same name as user, <user2> is mapped 
        to queue name same as <primary group> respectively. The mappings will be 
        evaluated from left to right, and the first valid mapping will be used.
      </description>
    </property>
    

    看看Fair schedulerCapacity scheduler

    【讨论】:

    • 我正在使用公平调度程序。现在我的工作由于内存或 cpu 不足而失败(我不确定)。我该如何解决这个问题
    • 您可以发布失败消息吗?如果您认为 CPU 或内存不足,请向集群中添加更多节点。如果您受到资源的限制,请查看我的答案中发布的一些提示,它们是通用指南。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2012-10-26
    相关资源
    最近更新 更多