使用YARN查看最近7天历史任务列表的全面指南

Apache Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一个重要组成部分,用于管理计算资源并调度应用程序。YARN的一个重要功能是能够保留任务的历史记录,以便用户能够查看和分析过去的作业。本文将详细介绍如何使用YARN查看最近7天的历史任务列表,并配有示例代码。

YARN历史服务器概述

YARN历史服务器负责存储和提供过去提交的任务的信息。它会将这些数据保存在日志中,用户可以通过REST API或命令行工具查询这些数据。任务记录包括作业的状态、提交时间、运行时间、错误信息等,为调试和资源管理提供了重要的信息。

查看YARN历史任务的基本步骤

要查看YARN历史任务列表,需遵循以下步骤:

  1. 启动YARN历史服务器。
  2. 使用命令行工具或Web UI查看历史记录。
  3. 提取最近7天的任务数据。

启动YARN历史服务器

在启动历史服务器之前,确保YARN配置文件(yarn-site.xml)中包含以下配置:

<property>
    <name>yarn.log.server.url</name>
    <value>http://<YOUR_HISTORICAL_SERVER_HOST>:<PORT>/</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

启动YARN历史服务器的命令如下:

$ start-yarn.sh
  • 1.

使用命令行获取历史任务

要通过命令行查看最近7天的任务列表,首先要使用YARN提供的CLI工具。可以通过以下命令来获取历史任务列表:

$ yarn application -list -appTypes MAPREDUCE
  • 1.

然而,此命令只返回当前活跃的应用程序。要查看更详细的历史记录,可以使用REST API。

以下是调用YARN REST API的示例:

curl -X GET http://<YOUR_HISTORICAL_SERVER_HOST>:<PORT>/ws/v1/history/mapreduce/jobs
  • 1.

返回的JSON数据中包含所有作业的详细信息。

提取并筛选最近7天的任务数据

可以通过解析返回的JSON数据来提取最近7天的任务。以下是一个Python示例代码,用于提取最近7天的任务:

import requests
import datetime

# 设置历史服务器的URL
url = 'http://<YOUR_HISTORICAL_SERVER_HOST>:<PORT>/ws/v1/history/mapreduce/jobs'

response = requests.get(url)
jobs = response.json()['jobs']['job']

# 获取今天的日期
today = datetime.datetime.now()

# 筛选最近7天内的任务
recent_jobs = []
for job in jobs:
    job_date = datetime.datetime.fromtimestamp(job['startTime'] / 1000.0)
    if (today - job_date).days <= 7:
        recent_jobs.append(job)

# 打印最近7天的任务
for job in recent_jobs:
    print(f"Job ID: {job['id']}, Name: {job['name']}, Start Time: {job['startTime']}")
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
代码解析
  1. 首先,我们导入requestsdatetime库。
  2. 然后,设置YARN历史服务器的URL并发送GET请求以获取作业数据。
  3. 接着,通过从获取的JSON中提取作业信息,以及与今天的日期进行比较来筛选出最近7天的任务。
  4. 最后,打印符合条件的任务信息。

查看结果的可视化

可以将结果可视化,以便于对数据进行分析和展示。我们可以使用Mermaid图表工具来绘制序列图和流程图。

序列图

以下是一个简单的序列图,展示了我们通过API访问YARN历史服务器的过程:

HistoryServer Terminal User HistoryServer Terminal User 发送API请求 GET /ws/v1/history/mapreduce/jobs 返回作业信息 展示最近7天的任务
流程图

我们可以使用流程图来展示整个查看历史任务的过程:

启动YARN历史服务器 使用CLI或API查询历史任务 获取所有作业信息 筛选最近7天的任务 打印任务列表 结束

结论

通过YARN历史服务器,用户可以轻松地查看和分析最近几天的任务记录。掌握YARN的使用不仅对数据分析和资源管理有很大的帮助,还能在故障排查和优化运行时环境中发挥重要作用。在使用YARN历史服务器时,记得定期检查和清理历史数据,以便保持良好的性能和存储效率。

希望这篇文章能帮助你更好地理解如何使用YARN查看历史任务列表,提升你在数据管理和分析方面的能力!