2

我完成了 Slider Memcached 教程,并且能够成功打包/部署/启动 memcached 容器;但是,当我打包一个自定义应用程序时,基本上是一个 Java jar 加上依赖项,容器永远不会成功启动。

应用程序页面显示应用程序处于 FINISHED/FAILED 状态并带有此诊断: http://quickstart.cloudera:8088/cluster/app/application_1439926335194_0001

诊断:不稳定的应用程序实例:-失败,组件 MYAPP 最近失败了 6 次(启动时 4 次);阈值为 5 - 最后一次失败:主机 quickstart.cloudera (0) 上的失败 container_1439926335194_0001_01_000008: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 - Role instance RoleInstance{role='SIMHASH', id='container_1439926335194_0002_01_000003', container=ContainerID=container_1439926335194_0002_01_000003 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 --label container_1439926335194_0002_01_000003___SIMHASH --zk-quorum localhost:2181 --zk-reg-路径 /registry/users/c4/services/org-apache-slider/simhash1 > /slider-agent.out 2>&1 ; ', 诊断='', 输出=null, 环境=[LANGUAGE="en_US.UTF-8", AGENT_WORK_ROOT="$PWD", HADOOP_USER_NAME="C4", AGENT_LOG_ROOT="", PYTHONPATH="./infra/agent /slider-agent/", LC_ALL="en_US.UTF-8", SLIDER_PASSPHRASE="8R9ZPw3aZ20GFydi3OqvEtwYhh1qzfQBmWv6BjXepg3PCcyS8m", LANG="en_US.UTF-8"]} 失败

4

1 回答 1

1

简短的回答

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

细节:

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

我的应用程序有 2 个容器,第一个只显示我之前查看的日志,指示容器是成功还是失败;第二个有许多带有有用信息的日志(命令/错误/滑块代理/状态命令)。

它们是暂时的,但我能够在应用程序终止之前查看它们。

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': True, 'role': u'MYAPP', 'roleCommand': u'START', '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}]}

于 2015-09-21T17:35:48.630 回答