我正在处理的应用程序运行了很多mapreduce cron作业,并且有时会出现一些错误(mosty ApplicationErrors,TransientErrors,DatabaseErrors,TimeOuts等),这些错误有些零星,并且对于大部分时间都不会打扰我。
但是,在调试和测试时,我发现无法确定哪些作业导致了哪些错误。日志通常只是给我实例,但是甚至没有暗示作业的id。 url只是通用/ mapreduce / worker_callback,所以没有任何帮助。
我觉得我错过了什么,或者是否真的无法确定哪个日志属于哪个MR管道,反之亦然 - 找到特定于某个MR管道的日志?
答案 0 :(得分:1)
在您的日志中,您有task_name=appengine-mrshard-158112310423699B53FC1-22-0
。 158112310423699B53FC1
部分对应于特定的作业ID。此作业的详细信息通常可以在url-to-your-app / mapreduce中找到。这样,您就可以找到您为该职位提供的名称。
要查看特定职位ID的详细信息(例如158112310423699B53FC1
):
appid.appspot.com/mapreduce/detail?mapreduce_id=158112310423699B53FC1
可以使用以下步骤从作业ID中查找根管道ID。
使用作业ID查询_AE_MR_MapreduceState
表。使用数据存储区查看器:
SELECT * FROM _AE_MR_MapreduceState WHERE __key__ = Key('_AE_MR_MapreduceState','158112310423699B53FC1')
可以在mapreduce_spec
列中找到管道ID pipeline_id
。
找到的Pipeline ID可能不是根管道ID。要查找根管道ID,请查询_AE_Pipeline_Record
。使用数据存储区查看器:
SELECT * FROM _AE_Pipeline_Record WHERE __key__ = Key('_AE_Pipeline_Record', '653a3bd9a90f11e28ff6a3556e435fbc')
列root_pipeline的键是MapReduce作业的根管道ID。
最后,使用根管道密钥的名称,您可以在此处查看整个MapReduce管道:
appid.appspot.com/mapreduce/pipeline/status?root=0607a90aa90f11e2bbfea3556e435fbc