更新时间:2022-07-14 GMT+08:00

REST API

功能简介

通过HTTP REST API来查看更多MapReduce任务的信息。目前Mapresuce的REST接口可以查询已完成任务的状态信息。完整和详细的接口请直接参考官网上的描述以了解其使用:http://hadoop.apache.org/docs/r3.1.1/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/HistoryServerRest.html

准备运行环境

  1. 在节点上安装客户端,例如安装到“/opt/client”目录,可参考“安装客户端”。
  2. 进入客户端安装目录“/opt/client”,执行下列命令初始化环境变量。

    source bigdata_env

    kinit 组件业务用户

    kinit一次票据时效24小时。24小时后再次运行样例,需要重新kinit。

  1. 与HTTP服务访问相比,以HTTPS方式访问Mapreduce时,由于使用了SSL安全加密,需要确保Curl命令所支持的SSL协议在集群中已添加支持。若不支持,可对应修改集群中SSL协议。例如,若Curl仅支持TLSv1协议,修改方法如下:

登录FusionInsight Manager页面,单击“集群 > 待操作集群的名称 > 服务 > Yarn > 配置 >全部配置”,在“搜索”框里搜索“hadoop.ssl.enabled.protocols”,查看参数值是否包含“TLSv1”,若不包含,则在配置项“hadoop.ssl.enabled.protocols”中追加“,TLSv1”。清空“ssl.server.exclude.cipher.list”配置项的值,否则以HTTPS访问不了Yarn。单击“保存”,在“保存配置”中单击“确定”,保存完成后选择“更多>重启服务”重启该服务。

  1. MapReduce的配置项hadoop.ssl.enabled.protocols和ssl.server.exclude.cipher.list的值直接引用Yarn中对应配置项的值,因此需要修改Yarn中对应配置项的值并重启Yarn和MapReduce服务。
  2. TLSv1协议存在安全漏洞,请谨慎使用。

操作步骤

获取MapReduce上已完成任务的具体信息

  • 命令:
    curl -k -i --negotiate -u : "https://10.120.85.2:26014/ws/v1/history/mapreduce/jobs"

    其中10.120.85.2为MapReduce的“JHS_FLOAT_IP”参数的参数值,26014为JobHistoryServer的端口号。

    在RedHat 6.x以及CentOS 6.x版本,使用curl命令访问JobHistoryServer会有兼容性问题,导致无法返回正确结果。

  • 用户能看到历史任务的状态信息(任务id,开始时间,结束时间,是否执行成功等信息)
  • 运行结果
    {
        "jobs":{
            "job":[
                {
                    "submitTime":1525693184360,
                    "startTime":1525693194840,
                    "finishTime":1525693215540,
                    "id":"job_1525686535456_0001",
                    "name":"QuasiMonteCarlo",
                    "queue":"default",
                    "user":"mapred",
                    "state":"SUCCEEDED",
                    "mapsTotal":1,
                    "mapsCompleted":1,
                    "reducesTotal":1,
                    "reducesCompleted":1
                }
            ]
        }
    }
  • 结果分析:

    通过这个接口,可以查询当前集群中已完成的MapReduce任务,并且可以得到表1

    表1 常用信息

    参数

    参数描述

    submitTime

    任务提交时间

    startTime

    任务开始执行时间

    finishTime

    任务执行完成时间

    queue

    任务队列

    user

    提交这个任务的用户

    state

    任务执行成功或失败