【问题标题】:Run a MapReduce job via rest api通过 rest api 运行 MapReduce 作业
【发布时间】:2015-10-26 08:14:38
【问题描述】:

我使用hadoop2.7.1 的rest api 在集群外运行mapreduce 作业。这个例子“http://hadoop-forum.org/forum/general-hadoop-discussion/miscellaneous/2136-how-can-i-run-mapreduce-job-by-rest-api”真的帮助了我。但是当我提交一个帖子回复时,发生了一些奇怪的事情:

  1. 我查看“http://master:8088/cluster/apps”,一个帖子回复产生了两个工作,如下图所示: strange things: a response produces two jobs

  2. 等待很长时间后,我在 http 响应正文中定义的作业因 FileAlreadyExistsException 而失败。原因是另一个作业创建了输出目录,所以输出目录 hdfs://master:9000/output/output16 已经存在。

这是我的回复正文:

{
    "application-id": "application_1445825741228_0011",
    "application-name": "wordcount-demo",
    "am-container-spec": {
        "commands": {
            "command": "{{HADOOP_HOME}}/bin/hadoop jar /home/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /data/ /output/output16"
        },
        "environment": {
            "entry": [{
                "key": "CLASSPATH",
                "value": "{{CLASSPATH}}<CPS>./*<CPS>{{HADOOP_CONF_DIR}}<CPS>{{HADOOP_COMMON_HOME}}/share/hadoop/common/*<CPS>{{HADOOP_COMMON_HOME}}/share/hadoop/common/lib/*<CPS>{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/*<CPS>{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/lib/*<CPS>{{HADOOP_YARN_HOME}}/share/hadoop/yarn/*<CPS>{{HADOOP_YARN_HOME}}/share/hadoop/yarn/lib/*<CPS>./log4j.properties"
            }]
        }
    },
    "unmanaged-AM": false,
    "max-app-attempts": 2,
    "resource": {
        "memory": 1024,
        "vCores": 1
    },
    "application-type": "MAPREDUCE",
    "keep-containers-across-application-attempts": false
}

这是我的命令:

curl -i -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' http://master:8088/ws/v1/cluster/apps?user.name=hadoop -d @post-json.txt

有人可以帮助我吗?非常感谢。

【问题讨论】:

    标签: rest hadoop mapreduce hadoop-yarn


    【解决方案1】:

    当您运行 map reduce 时,请注意您没有输出文件夹,因为如果存在,作业将不会运行。您可以编写程序,以便您可以删除存在的文件夹,或者在调用其余 api 之前手动删除它。这只是为了防止数据丢失并避免覆盖其他作业的输出。

    【讨论】:

    • 谢谢。但这不是我的答案。在我调用 rest api 来运行我的 map-reduce 作业之前,输出不存在。当我打电话时,它会产生两个相同的工作,只是工作名称不同。我不知道为什么会这样。也许我写的响应正文在某个地方是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多