Counters are sent back to job tracker at end of job
Put jars in your code, instead of using libjars. Your jar file gets pushed to every node. Keep your mapreduce code small; don't send large libraries because you run large VMs on nodes.
Hook for logging and status. OK to use log4j or stdout/stderr and then read from jobtracker for each process.
What mappers and reducers write to
MapReduceBase, Mapper, Reducer.