[
https://issues.apache.org/jira/browse/HDFS-4677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13632420#comment-13632420
]
Chris Nauroth commented on HDFS-4677:
-------------------------------------
Hi, Ivan. With the current patch, we'd create a new {{Configuration}} and
therefore reload the config files for each new {{EditLogFileOutputStream}}.
This could cause confusion for users. For example, if a user edits
hdfs-site.xml while the namenode process is running, then different edit log
segments could be running under different configurations. It would be
difficult to reason about the actual runtime state of the configuration, and
perhaps this would introduce risk for bugs around configuration values not
interacting well.
I think there is a minimally invasive way to reuse the existing
{{Configuration}} from the {{NameNode}} in the trunk codebase:
# {{FSEditLog}} already has the {{Configuration}}.
# In {{FSEditLog#initJournals}}, pass conf to the new {{FileJournalManager}}.
(Requires adding new constructor or setter in {{FileJournalManager}}.)
# In {{FileJournalManager#startLogSegment}}, pass conf to the new
{{EditLogFileOutputStream}}. (Requires adding new constructor or setter in
{{EditLogFileOutputStream}}.)
> Editlog should support synchronous writes
> -----------------------------------------
>
> Key: HDFS-4677
> URL: https://issues.apache.org/jira/browse/HDFS-4677
> Project: Hadoop HDFS
> Issue Type: Bug
> Affects Versions: 3.0.0, 1-win
> Reporter: Ivan Mitic
> Assignee: Ivan Mitic
> Attachments: HDFS-4677.patch
>
>
> In the current implementation, NameNode editlog performs syncs to the
> persistent storage using the {{FileChannel#force}} Java APIs. This API is
> documented to be slower compared to an alternative where {{RandomAccessFile}}
> is opened with "rws" flags (synchronous writes).
> We instrumented {{FileChannel#force}} on Windows and it some
> software/hardware configurations it can perform significantly slower than the
> “rws” alternative.
> In terms of the Windows APIs, FileChannel#force internally calls
> [FlushFileBuffers|http://msdn.microsoft.com/en-us/library/windows/desktop/aa364439(v=vs.85).aspx]
> while RandomAccessFile (“rws”) opens the file with the
> [FILE_FLAG_WRITE_THROUGH flag|http://support.microsoft.com/kb/99794].
> With this Jira I'd like to introduce a flag that provide means to configure
> NameNode to use synchronous writes. There is a catch though, the behavior of
> the "rws" flags is platform and hardware specific and might not provide the
> same level of guarantees as {{FileChannel#force}} w.r.t. flushing the on-disk
> cache. This is an expert level setting, and it should be documented as such.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira