title: Updating a global variable / resource in Reducers via a socket to the Hadoop job tracker
body: <p>I need a global variable that can be read / set simultaneously in reducers (I am aware of the bottleneck and performance issues of such design). I tried to use Hadoop Configuration get()/set(), but I found that configuration properties need to be set before submitting the mapreduce job, and that using Configuration.set() within a reducer doesn't actually update the global property's value.</p>
  
  <p>Closest thing I could find is to use a global parameter than can be read/set via a socket to the Hadoop job tracker, but I failed to find any resources illustrating how this can be done.</p>
  
  <p>My question is:</p>
  
  <ol>
  <li>How to read/set a global variable via a socket to the Hadoop job
  tracker. </li>
  <li>Is there are another way to keeping a global variable
  (regardless of performance degradation)</li>
  </ol>
  
  <p>Notes:</p>
  
  <ul>
  <li>Hadoop counters cannot work for me since they don't support a set() function</li>
  <li>DistributedCache won't work since it is used for distributing read-only data, while in my case I need reducers to update the value of a global variable that can be read simultaneously by other running reduce tasks.</li>
  </ul>