如何在Google App Engine上查找特定于单个MapReduce作业的日志?

时间:2013-05-15 17:39:44

标签: python google-app-engine

我正在处理的应用程序运行了很多mapreduce cron作业,并且有时会出现一些错误(mosty ApplicationErrors,TransientErrors,DatabaseErrors,TimeOuts等),这些错误有些零星,并且对于大部分时间都不会打扰我。

但是,在调试和测试时,我发现无法确定哪些作业导致了哪些错误。日志通常只是给我实例,但是甚至没有暗示作业的id。 url只是通用/ mapreduce / worker_callback,所以没有任何帮助。

我觉得我错过了什么,或者是否真的无法确定哪个日志属于哪个MR管道,反之亦然 - 找到特定于某个MR管道的日志?

1 个答案:

答案 0 :(得分:1)

在您的日志中,您有task_name=appengine-mrshard-158112310423699B53FC1-22-0158112310423699B53FC1部分对应于特定的作业ID。此作业的详细信息通常可以在url-to-your-app / mapreduce中找到。这样,您就可以找到您为该职位提供的名称。

查看作业的详细信息

要查看特定职位ID的详细信息(例如158112310423699B53FC1):

  

appid.appspot.com/mapreduce/detail?mapreduce_id=158112310423699B53FC1

查看整个管道

可以使用以下步骤从作业ID中查找根管道ID。

  1. 使用作业ID查询_AE_MR_MapreduceState表。使用数据存储区查看器:

    SELECT * FROM _AE_MR_MapreduceState WHERE __key__ = Key('_AE_MR_MapreduceState','158112310423699B53FC1')
    

    可以在mapreduce_spec列中找到管道ID pipeline_id

  2. 找到的Pipeline ID可能不是根管道ID。要查找根管道ID,请查询_AE_Pipeline_Record。使用数据存储区查看器:

    SELECT * FROM _AE_Pipeline_Record WHERE __key__ = Key('_AE_Pipeline_Record', '653a3bd9a90f11e28ff6a3556e435fbc')
    

    列root_pipeline的键是MapReduce作业的根管道ID。

  3. 最后,使用根管道密钥的名称,您可以在此处查看整个MapReduce管道:

      

    appid.appspot.com/mapreduce/pipeline/status?root=0607a90aa90f11e2bbfea3556e435fbc