我通过了slidermemcached教程,成功地打包/部署/启动了memcached容器;然而,当我打包一个定制应用程序(基本上是一个javajar加上依赖项)时,容器永远不会成功启动。
应用程序页显示应用程序处于已完成/失败状态,诊断为:http://quickstart.cloudera:8088/群集/应用程序/应用程序\u 1439926335194 \u 0001
诊断:不稳定的应用程序示例:-失败,组件myapp“最近”失败6次(启动时4次);阈值为5-上次失败:主机quickstart.cloudera上的失败容器\u 1439926335194 \u 0001 \u 01 \u000008(0):http://quickstart.cloudera:19888/jobhistory/logs//quickstart。cloudera:8041/container_1439926335194_0001_01_000008/ctx/myuser
诊断容器问题的部分挑战在于,日志在应用程序完成后会消失。http://quickstart.cloudera:8042/节点/容器日志/容器\u 1439926335194 \u 0001 \u 01 \u000001/myuser
slider有一个疑难解答页面,指示您可以在应用程序完成之后保留日志:http://slider.incubator.apache.org/docs/troubleshooting.html
为了更好地调试而配置yarn一种帮助调试的配置是告诉节点管理者在容器完成后保留数据一小段时间
<!-- 10 minutes after a failure to see what is left in the directory-->
<property>
<name>yarn.nodemanager.delete.debug-delay-sec</name>
<value>600</value>
</property>
我在yarn-configuration-nodemanager base group-advanced-localized dir delection delay中找到了这个设置,并将其从默认值0改为1200;但是,即使在我部署了client config,重新启动nodemanager+yarn,甚至重新启动vm之后,日志仍然会在容器完成时被删除。
我正在处理cdh5.3.0vitrualboxvm映像,启动包时,cluster+服务似乎工作正常。
编辑:
日志中唯一的错误是:
角色示例roleinstance失败
2015-08-19 10:59:21819[amrm回调处理程序线程]错误appmaster.sliderappmaster-角色示例roleinstance{role='simhash',id='container\u 1439926335194\u 0002\u 01\u000003',container=containerid=container\u 1439926335194\u 0002\u 01\u000003 nodeid=quickstart。cloudera:8041 http=quickstart.cloudera:8042优先级=1073741825资源=,createtime=1440007115649,starttime=1440007115674,released=false,roleid=1,host=quickstart.cloudera,hosturl=http://quickstart.cloudera:8042,state=5,placement=null,exitcode=0,command='python./infra/agent/slider agent/agent/main.py--标签容器\u 1439926335194 \u 0002 \u 01 \u000003 \uuuuuu simhash--zk quorumlocalhost:2181 --zk-reg-path /registry/users/c4/services/org apache slider/simhash1>/slider-agent.out 2>&1;',diagnostics='',output=null,environment=[language=“en\u us.utf-8”,agent\u work\u root=“$pwd”,hadoop\u user\u name=“c4”,agent\u log\u root=“”,pythonpath=“./infra/agent/slider agent/”,lc\u all=“en\u us.utf-8”,slider\u passphrase=“8r9zpw3az20gfydi3oqvetwyh1qzfqbmw6bjxepg3pccys8m”,lang=“en\u us.utf-8”]}失败
1条答案
按热度按时间ippsafx71#
简短的回答
查看容器日志以获取正在运行的应用程序的输出。
细节:
我通过containers web ui(在cloudera虚拟机上)找到了容器日志http://quickstart.cloudera:8042/节点/所有容器)
我的应用程序有两个容器,第一个只是显示我之前查看的日志,指示容器是成功还是失败;second有许多日志,其中包含有用的信息(command/errors/slider agent/status\u command)。
它们是暂时的,但我能够在应用程序终止之前查看它们。
slider-agent.out只包含以下行:
找不到记录器“root”的处理程序
但是slider-agent.log给了我想要的信息,基本上是执行java命令行的stderr/stdout,所以这非常有用。
info 2015-08-19 14:07:28422 agenttogglelogger.py:40-队列结果:{'componentstatus':[],'reports':[{'actionid':u'4-1','clustername':u'myapp1','exitcode':1,'reportresult':true,'role':u'myapp','rolecommand':u'start','servicename':u'myapp1','status':'failed','stderr':'2015-08-19 14:07:28268-执行命令时出错。。。,'stdout':'2015-08-19 14:07:23261-execute['/usr/java/latest/bin/java-xmx256m-classpath…,'structuredout':'{}','taskid':4}]}