[ https://issues.apache.org/jira/browse/MAPREDUCE-5268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13671535#comment-13671535 ]
Jason Lowe commented on MAPREDUCE-5268: --------------------------------------- Thanks for updating so quickly, Karthik. Sorry, I should have been more clear on my nit with the templates. I was surprised to see such a generic type, both in name and template use, for a specific, private use-case. If the name is something so generic as ConcurrentSkipListMapWithSize then I think it is appropriate to use templates with that name since the name implies it is generic. If we think the templates are overkill then I think it's better to name it more specifically for its purpose, e.g.: JobHistoryInfoMap. I do like the AtomicInteger change. And as far as the size inconsistency concern, that's already an issue because of the very nature of concurrency whether we synchronize the methods or not. As soon as we get/compute the size, it could be wrong as someone else comes in and changes the map immediately afterwards. In this case the size is only being used to loosely cap the size of the job cache, and it's not critical if we're a few jobs over or a few jobs under that limit. So I think we're really close. I'd like to see either the ConcurrentSkipListMapWithSize name changed to be more specific to its use case or keep the name and have the templates restored. I don't care too much either way. > Improve history server startup performance > ------------------------------------------ > > Key: MAPREDUCE-5268 > URL: https://issues.apache.org/jira/browse/MAPREDUCE-5268 > Project: Hadoop Map/Reduce > Issue Type: Improvement > Components: jobhistoryserver > Affects Versions: 0.23.7, 2.0.4-alpha > Reporter: Jason Lowe > Assignee: Karthik Kambatla > Attachments: mr-5268.patch, mr-5268.patch, mr-5268.patch, > mr-5268-prelim.patch > > > The history server can easily take many minutes to startup when there are a > significant number of jobs to scan in the done directory. However the > scanning of files is not the bottleneck, rather it's the heavy use of > ConcurrentSkipListMap.size in HistoryFileManager. > ConcurrentSkipListMap.size is a very expensive operation, especially on maps > with many entries, as it has to scan every entry to compute the size. We > should avoid calling this method or at least minimize its use. -- 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