hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "zhihai xu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-3850) NM fails to read files from full disks which can lead to container logs being lost and other issues
Date Wed, 15 Jul 2015 00:05:06 GMT

    [ https://issues.apache.org/jira/browse/YARN-3850?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14627311#comment-14627311

zhihai xu commented on YARN-3850:

Hi [~jlowe] and [~varun_saxena], I find {{ContainerLogsUtils#getContainerLogFile}} may also
have this problem, because {{getContainerLogFile}} calls {{dirsHandler.getLogPathToRead}},
which uses configuration {{YarnConfiguration.NM_LOG_DIRS}} in {{LocalDirAllocator}}. {{YarnConfiguration.NM_LOG_DIRS}}
will only include good disks after {{LocalDirsHandlerService#updateDirsAfterTest}} is called.
I created YARN-3925 to fix this issue.
It looks like ShuffleHandler doesn't have this problem because ShuffleHandler and LocalDirsHandlerService
use different Configuration.
{{LocalDirsHandlerService.serviceInit}} will create a copy of original Configuration:
    // Clone the configuration as we may do modifications to dirs-list
    Configuration conf = new Configuration(config);
So ShuffleHandler will always use the original local dirs-list.

> NM fails to read files from full disks which can lead to container logs being lost and
other issues
> ---------------------------------------------------------------------------------------------------
>                 Key: YARN-3850
>                 URL: https://issues.apache.org/jira/browse/YARN-3850
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: log-aggregation, nodemanager
>    Affects Versions: 2.7.0
>            Reporter: Varun Saxena
>            Assignee: Varun Saxena
>            Priority: Blocker
>             Fix For: 2.7.1
>         Attachments: YARN-3850.01.patch, YARN-3850.02.patch
> *Container logs* can be lost if disk has become full(~90% full).
> When application finishes, we upload logs after aggregation by calling {{AppLogAggregatorImpl#uploadLogsForContainers}}.
But this call in turns checks the eligible directories on call to {{LocalDirsHandlerService#getLogDirs}}
which in case of disk full would return nothing. So none of the container logs are aggregated
and uploaded.
> But on application finish, we also call {{AppLogAggregatorImpl#doAppLogAggregationPostCleanUp()}}.
This deletes the application directory which contains container logs. This is because it calls
{{LocalDirsHandlerService#getLogDirsForCleanup}} which returns the full disks as well.
> So we are left with neither aggregated logs for the app nor the individual container
logs for the app.
> In addition to this, there are 2 more issues :
> # {{ContainerLogsUtil#getContainerLogDirs}} does not consider full disks so NM will fail
to serve up logs from full disks from its web interfaces.
> # {{RecoveredContainerLaunch#locatePidFile}} also does not consider full disks so it
is possible that on container recovery, PID file is not found.

This message was sent by Atlassian JIRA

View raw message