调试Apache Slider包?

时间:2015-08-18 20:54:45

标签: hadoop yarn cloudera-quickstart-vm

我浏览了Slider Memcached Tutorial,能够成功打包/部署/启动memcached容器;然而,当我打包一个自定义应用程序,基本上是一个Java jar和依赖项时,容器永远不会启动。

应用程序页面显示应用程序处于FINISHED / FAILED状态,并具有以下诊断功能: http://quickstart.cloudera:8088/cluster/app/application_1439926335194_0001

诊断:不稳定的应用程序实例: - 组件MYAPP失败'最近' 6次(启动时为4次);阈值为5 - 上次失败:主机上的失败container_1439926335194_0001_01_000008 quickstart.cloudera(0):http://quickstart.cloudera:19888/jobhistory/logs//quickstart.cloudera:8041/container_1439926335194_0001_01_000008/ctx/MYUSER

诊断容器问题的部分挑战是应用程序完成后日志消失。 http://quickstart.cloudera:8042/node/containerlogs/container_1439926335194_0001_01_000001/MYUSER

滑块的故障排除页面指示您可以在应用程序完成之后保留日志: 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;但是,即使在部署客户端配置并重新启动Nodemanager + Yarn之后,即使重新启动VM,日志仍会在容器完成时被删除。

我正在开发CDH 5.3.0 Vitrualbox VM映像,并且当我启动程序包时,群集+服务似乎正常工作。

编辑:

我看到的日志中只有错误是这样的:

角色实例RoleInstance失败

2015-08-19 10:59:21,819 [AMRM Callback Handler Thread] ERROR appmaster.SliderAppMaster - 角色实例RoleInstance {role =&#39; SIMHASH&#39;,id =&#39; container_1439926335194_0002_01_000003&#39;, container = ContainerID = container_1439926335194_0002_01_000003 nodeID = quickstart.cloudera:8041 http = quickstart.cloudera:8042 priority = 1073741825 resource =,createTime = 1440007115649,startTime = 1440007115674,released = false,roleId = 1,host = quickstart.cloudera,hostURL = { {3}},state = 5,placement = null,exitCode = 0,command =&#39; python ./infra/agent/slider-agent/agent/main.py --label container_1439926335194_0002_01_000003___SIMHASH --zk-quorum localhost: 2181 --zk-reg-path / registry / users / c4 / services / org-apache-slider / simhash1&gt; /slider-agent.out 2&gt;&amp; 1; &#39;,diagnostics =&#39;&#39;,output = null,environment = [LANGUAGE =&#34; en_US.UTF-8&#34;,AGENT_WORK_ROOT =&#34; $ PWD&#34;, HADOOP_USER_NAME =&#34; C4&#34;,AGENT_LOG_ROOT =&#34;&#34;,PYTHONPATH =&#34; ./ infra / agent / slider-agent /&#34;,LC_ALL =&#34; en_US .UTF-8&#34;,SLIDER_PASSPHRASE =&#34; 8R9ZPw3aZ20GFydi3OqvEtwYhh1qzfQBmWv6BjXepg3PCcyS8m&#34;,LANG =&#34; en_US.UTF-8&#34;]}失败

1 个答案:

答案 0 :(得分:0)

简答

查看容器日志以获取正在运行的应用程序的输出。

<强>详细信息:

我通过容器Web UI找到了容器日志(在Cloudera VM上是http://quickstart.cloudera:8042/node/allContainers

我的应用程序有2个容器,首先显示我之前看到的日志,指示容器是成功还是失败;第二个包含许多包含有用信息的日志(命令/ errors / slider-agent / status_command)。

它们是短暂的,但我可以在应用程序终止之前查看它们。

slider-agent.out只有这一行:

找不到记录器“root”的处理程序

但是,slider-agent.log给了我正在寻找的信息,基本上是执行Java命令行的stderr / stdout,这非常有帮助。

INFO 2015-08-19 14:07:28,422 AgentToggleLogger.py:40 - 队列结果:{'componentStatus':[],  'reports':[{'actionId':u'4-1',               'clusterName':u'myapp1',               'exitcode':1,               'reportResult':是的,               '角色':u'MYAPP',               'roleCommand':你'''',               'serviceName':u'myapp1',               'status':'FAILED',               'stderr':'2015-08-19 14:07:28,268 - 执行命令时出错...,               'stdout':'2015-08-19 14:07:23,261 - 执行[\'/ usr / java / latest / bin / java -Xmx256m -classpath ...,               'structuredOut':'{}',               'taskId':4}]}