Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.6.0
-
Reviewed
-
Hadoop metrics sent to Ganglia over multicast now support optional configuration of socket TTL. The default TTL is 1, which preserves the behavior of prior Hadoop versions. Clusters that span multiple subnets/VLANs will likely want to increase this.
Description
The GangliaContext class which is used to send Hadoop metrics to Ganglia uses a DatagramSocket to send these metrics. This works fine for Ganglia multicast setups that are all on the same VLAN. However, when working with multiple VLANs, a packet sent via DatagramSocket to a multicast address will end up with a TTL of 1. Multicast TTL indicates the number of network hops for which a particular multicast packet is valid. The packets sent by GangliaContext do not make it to ganglia aggregrators on the same multicast group, but in different VLANs.
To fix, we'd need a configuration property that specifies that multicast is to be used, and another that allows setting of the multicast packet TTL. With these set, we could then use MulticastSocket setTimeToLive() instead of just plain ol' DatagramSocket.