Revisiting the physician - Hadoop Vaidya

Performance Management is one of the major grey areas that most teams encounter with Apache Hadoop environment. Among the earliest tools to monitor performance has been Hadoop Vaidya, available as a “contrib” project under Apache Hadoop. In a blog post published last week, Vitthal (a.k.a Suhas) Gogate shared the details of plans to re-initiate work on Hadoop Vaidya and integrate it more tightly as part Greenplum HD offering.

This comes as no surprise since a few among the initial team behind Hadoop Vaidya have gelled together again as part of Greenplum HD ‘Team of Rivals’. Suhas had been part of Yahoo team which created Hadoop Vaidya and PMC member of Apache AMBARI project. After his stints at Netflix and Hortonworks, he is now at Greenplum along with Milind Bhandarkar who has taken over the mantle as Chief Scientist, Machine Learning Platform, Greenplum.

As Suhas acknowledges in his post, Vaidya has been dusting around for quite a bit due to lack of community and his own contributions off late. Vaidya, for an introduction, means the Physician in Sanskrit language and has aimed to cure the performance ills of Hadoop environment by offering rule based diagnostics. “It runs a set of predefined tests/rules against job execution statistics to diagnose various performance problems. Each test rule detects a specific performance problem with the Map/Reduce job and provides a targeted advice to the user. This tool generates an XML report based on the evaluation results of individual test rules.”

Some of the key test rules which Vaidya runs include:
  • Balanced Reduce Partitioning
    • This rule tests as to how well the input to reduce tasks is balanced

  • Impact of Map tasks Re-Execution
    • This test rule checks percentage of map task re-execution impacting the job performance

  • Impact of Reduce tasks Re-Execution
    • This test rule checks percentage of reduce task re-execution impacting the job performance

  • Map and/or Reduce tasks reading HDFS data as a side effect
    • This test rule checks if map/reduce tasks are reading data from HDFS as a side effect. More the data read as a side effect can potentially be a bottleneck across parallel execution of map/reduce tasks.

  • Map side disk spill
    • This test rule checks if Map tasks are spilling the data on to the local disk during the map side sorting due to insufficient sort buffer size. The impact is calculated as ratio between local bytes written to map output bytes. Impact is normalized using NormalizationFactor given and any value greater than or equal to normalization factor is treated as maximum (i.e. 1).

Suhas lists integrating Hadoop Vaidya with the Job Tracker History UI as one of his immediate priorities. We know that there have been other projects which have tried to integrate performance metrics with Hadoop Job Tracker UI- so this is probably more of a catch-up step to overcome the XML output critique. Also, he aims to add more diagnostic tests/rules instead of probably just leaving it up to community to keep adding rules as part of extensible framework.
Currently like most performance tools, Vaidya also utilizes Job Configuration and Job History logs as input for analysis. However, as part of long term roadmap, Vaidya intends to integrate with Greenplum Command Center. As per the post, this will enable Vaidya to incorporate “more sources of information from the cluster such as daemon/user logs, audit logs, job queue information and system metrics into its analysis. It will also enable real-time job analysis when running MapReduce jobs.”  We do hope that these features will also eventually be part of the open source code and distribution. Also, it is hoped that subsequently the enhancements will find their way into other commercial offerings like Karmasphere Professional Edition which embrace Vaidya.
The community has long vouched for a comprehensive performance monitoring tool for Apache Hadoop but the reality is that aren’t really a lot of successful options that could be handy for Hadoop performance management. There have been a few viable options like Starfish which have come through but largely people have resorted to performance heuristics or looked to invoke inbuilt adaptive MapReduce features. Without any doubt we look for better performance monitoring tools in the future and Suhas’s team’s effort go in that direction.