如果是用命令行的方式提交作业,可以在环境变量中获取APP IP,在作业以pre job方式提交到集群时,会执行 launch_container.sh <http://dn-rt425.jja.bigo:8042/node/containerlogs/container_e19_1597907464753_1574_01_000001/zhuangxiaoyi/launch_container.sh/?start=-4096> ,里面export了很多变量,其中就有_APP_ID
Jim Chen <[email protected]> 于2020年8月27日周四 下午6:17写道: > 能分享一下demo吗? > > Cayden chen <[email protected]> 于2020年7月15日周三 下午2:56写道: > > > 我们的获取逻辑是通过定义 > > > logback的appder,appder通过解析当前系统路径(因为flink每个taskmanager会自己定义一个带有applicationId的路径,然后里面会放各种jar包,包括我自定义的appder),获取之后通过MDC.put(),给日志加一列appId,在appder里面把日志上报到外部的日志系统 > > > > > > > > > > ------------------ 原始邮件 ------------------ > > 发件人: > > "user-zh" > > < > > [email protected]>; > > 发送时间: 2020年7月14日(星期二) 下午5:31 > > 收件人: "[email protected]"<[email protected]>; > > > > 主题: 回复: flink on yarn日志问题 > > > > > > > > > > > > 我们获取运行Yarn日志逻辑大概是这样的: > > 1. > > > 访问rm-address/ws/v1/cluster/apps/applicationId,拿到amContainerLog中的url即为jm的url. > > 2. > > > taskmanager日志url通过rm-address/proxy/applicationId/taskmanagers,拿到所有taskmanager的基本信息,替换amContainerLog中的containername和ip。 > > > > > > 日志比较大时:指定读取的字节开始和结束位置,url?start=0&end=1024 > > | | > > jianxu > > | > > | > > [email protected] > > | > > 在2020年07月14日 17:07,Cayden chen<[email protected]> 写道: > > 有个问题,如何区分日志是哪个任务的呢 > > > > > > > > > > ------------------&nbsp;原始邮件&nbsp;------------------ > > > 发件人: > > > "user-zh" > > <[email protected]&gt;; > > 发送时间:&nbsp;2020年7月14日(星期二) 下午5:05 > > 收件人:&nbsp;"user-zh"<[email protected]&gt;; > > > > 主题:&nbsp;Re: Re: Re: flink on yarn日志问题 > > > > > > > > Flink在1.11开始默认使用log4j2, log4j2已经有了很多appender[1]可以用来将日志输出到外部系统或服务。 > > > > [1] https://logging.apache.org/log4j/2.x/manual/appenders.html > > > > Best, > > Yangze Guo > > > > On Tue, Jul 14, 2020 at 4:46 PM nicygan <[email protected]&gt; wrote: > > &gt; > > &gt; 是有这个毛病,看TM日志不方便。 > > &gt; > > &gt; 而且本地日志过几小时就会被清理,时间一久就看不到了,只剩JM日志。 > > &gt; > > &gt; > > &gt; > > &gt; > > &gt; > > &gt; > > &gt; 在 2020-07-14 12:35:06,"zhisheng" <[email protected] > &gt; > > 写道: > > &gt; &gt;知道 YARN 的 applicationId,应该也可以去 HDFS 找对应的 taskmanager > > 的日志(可以拼出路径),然后复制到本地去查看 > > &gt; &gt; > > &gt; &gt;Yangze Guo <[email protected]&gt; 于2020年7月14日周二 > > 上午11:58写道: > > &gt; &gt; > > &gt; &gt;&gt; Hi, 王松 > > &gt; &gt;&gt; > > &gt; &gt;&gt; 我理解拼接url就可以了,不用实际去登陆机器然后进到对应目录。 > > &gt; &gt;&gt; > > &gt; &gt;&gt; Best, > > &gt; &gt;&gt; Yangze Guo > > &gt; &gt;&gt; > > &gt; &gt;&gt; On Tue, Jul 14, 2020 at 8:26 AM 王松 < > > [email protected]&gt; wrote: > > &gt; &gt;&gt; &gt; > > &gt; &gt;&gt; &gt; 我们也有问题 1,和 Yangze Guo > > 说的一样,每次都要去对应的tm目录中去找日志,很麻烦,不知道有没有更简单的办法。 > > &gt; &gt;&gt; &gt; > > &gt; &gt;&gt; &gt; Yangze Guo <[email protected] > &gt; > > 于2020年7月13日周一 下午5:03写道: > > &gt; &gt;&gt; &gt; > > &gt; &gt;&gt; &gt; &gt; 1. > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; > > > 我验证了一下,如果开启了日志收集,那tm的日志是会保存的,但是你整个application结束前可能看不到,有一个trick的方法,首先在jm日志中找到tm分配到了哪个NodeManager上,通过拼接url的方式来获取container的日志 > > &gt; &gt;&gt; &gt; &gt; 2. 你是否需要调整一下重启策略[1]? > > 如果开启了ck,默认情况下就会一直尝试重启job > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; [1] > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; > > > https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/task_failure_recovery.html > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; Best, > > &gt; &gt;&gt; &gt; &gt; Yangze Guo > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; On Mon, Jul 13, 2020 at 2:40 > > PM 程龙 <[email protected]&gt; wrote: > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; 不好意思&nbsp; > > 怪我灭有描述清楚 > > &gt; &gt;&gt; &gt; &gt; &gt; 1 目前开启日志收集功能 > > &gt; &gt;&gt; &gt; &gt; &gt; 2 目前已是 per-job模式 > > &gt; &gt;&gt; &gt; &gt; &gt; 3 集群使用cdh flink.1.10 > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; 在 2020-07-13 > > 11:18:46,"Yangze Guo" <[email protected]&gt; 写道: > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;Hi, > > &gt; &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt;第一个问题,您可以尝试开启Yarn的日志收集功能[1] > > &gt; &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; > > &gt;第二个问题,您可以尝试一下per-job mode [2][3] > > &gt; &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;[1] > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; > > > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/yarn_setup.html#log-files > > &gt > > < > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/yarn_setup.html#log-files&gt > >; > > &gt;&gt; &gt; &gt; &gt; &gt;[2] > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; > > > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/#per-job-mode > > &gt > > < > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/#per-job-mode&gt > >; > > &gt;&gt; &gt; &gt; &gt; &gt;[3] > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; > > > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/yarn_setup.html#run-a-single-flink-job-on-yarn > > &gt > > < > https://ci.apache.org/projects/flink/flink-docs-master/zh/ops/deployment/yarn_setup.html#run-a-single-flink-job-on-yarn&gt > >; > > &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;Best, > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;Yangze Guo > > &gt; &gt;&gt; &gt; &gt; &gt; &gt; > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;On Mon, Jul > > 13, 2020 at 10:49 AM 程龙 <[email protected]&gt; wrote: > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;&gt; > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;&gt; > > 请问一下两个问题 > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;&gt; 1 > > flink on yarn的时候 taskmanager 挂掉的时候 上面的日志会被删除掉 无法查看 > > &gt; &gt;&gt; &gt; &gt; ,除了使用es收集日志的这种方案, > > 还有没有可以使taskmanager 挂掉,相关日志仍然可以保留。 > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;&gt; 2 > > flink on yarn模式 当由于错误导致taskmanager 挂掉,但是jobmanager 却一直存在, > > &gt; &gt;&gt; &gt; &gt; 有没有好的方式或者策略 > > ,&nbsp;&nbsp; 可以是当task失败 达到重试次数之后 taskmanager挂掉,jobmanager也挂掉 > > &gt; &gt;&gt; &gt; &gt; &gt; &gt;&gt; > > &gt; &gt;&gt; &gt; &gt; > > &gt; &gt;&gt; >
