[ https://issues.apache.org/jira/browse/HDFS-6982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14207528#comment-14207528 ]
Andrew Wang commented on HDFS-6982: ----------------------------------- Hi Maysam, I did another round of review. Mostly usability stuff and small cleanups, core functionality as before still looks great. As always, thanks for your patience. TopConf / DFSConfigKeys / hdfs-default.xml * Can use Configuration.getInts rather than parsing yourself, also would be good to do basic validation that the intervals are >0 mins via a Precondition check. * Do you mind writing out the key strings in DFSConfigKeys? It's how we do it in the rest of the file, and more readable. * Consider renaming "windowmanager.topsize" to "num.users" * Consider renaming "window.buckets" to "window.num.buckets" and "periods.min" to "windows.minutes" * We could set the default value to {{int[] {1,5,25}}} to make the logic a little easier. I noticed that the default in hdfs-default and DFSConfigKeys is different too. * Seems like 30min would be a more human-friendly number than 25min also * hdfs-default.xml typo: "seperated" -> "separated" * I noticed that NameNodeMetrics fills in sessionId and processId, any reason we can't do the same? * Would be cool to INFO log the configuration settings at startup, this can be pretty handy * It also seems like an unnecessary step to also have to specify the TopAuditLogger in the conf, if a user already specified {{dfs.namenode.top.periods.min}}. If there are periods set, let's just also create the TopAuditLogger. TopMetrics: * Should fill out the DummyDescription to not be dummy :) * Some unused methods: initSingleton(Configuration, String, String), getReportingPeriods, isTopMetricRecord, extractPeriodFormMetricRecordName. Guessing these are used in the HTML view, could we remove these for now? * In getMetrics, would prefer the info log to be debug, and the error to be warn. Error is normally for something nigh fatal, warn is something we can ride out. * The username string parsing is a little brittle, would be good to put a little static helper method in UserGroupInformation next to toString in case someone changes the format. RollingWindowManager: * We can make the asserts in the constructor into Precondition checks, we want these even in production RollingWindow: * Is it possible to use monotonic time, i.e. Time.monotonicNow, rather than system time? We've been bitten by clocks moving around before, and I think relative time should work here. I see we make it into a Date in RollingWindow#getSum, but just for debugging. * Unused import Experiences running it: * The jmx page right now only exposes the shortest window, I see the {{smallestWindow}} hardcode. Since the goal is to use jmx to populate the HTML view, we need to somehow expose all of the configured windows. * I tried doing some operations, then waited for the window to pass. The counts never returned to zero. I think this is because in RWManager#snapshot, we have a continue if {{n == 0}}, so never push the 0 count. * It's also unfortunate that there's no way to remove a metric once we add it, so over time we'll end up with a lot of garbage {{user.operation}} strings that don't apply to the current window. Thoughts welcome here. > nntop: top-like tool for name node users > ----------------------------------------- > > Key: HDFS-6982 > URL: https://issues.apache.org/jira/browse/HDFS-6982 > Project: Hadoop HDFS > Issue Type: New Feature > Reporter: Maysam Yabandeh > Assignee: Maysam Yabandeh > Attachments: HDFS-6982.patch, HDFS-6982.v2.patch, HDFS-6982.v3.patch, > HDFS-6982.v4.patch, HDFS-6982.v5.patch, HDFS-6982.v6.patch, > nntop-design-v1.pdf > > > In this jira we motivate the need for nntop, a tool that, similarly to what > top does in Linux, gives the list of top users of the HDFS name node and > gives insight about which users are sending majority of each traffic type to > the name node. This information turns out to be the most critical when the > name node is under pressure and the HDFS admin needs to know which user is > hammering the name node and with what kind of requests. Here we present the > design of nntop which has been in production at Twitter in the past 10 > months. nntop proved to have low cpu overhead (< 2% in a cluster of 4K > nodes), low memory footprint (less than a few MB), and quite efficient for > the write path (only two hash lookup for updating a metric). -- This message was sent by Atlassian JIRA (v6.3.4#6332)