looks very good in general.
HIVEHISTORTFILELOC - spell error
HiveHistory.java: why a separate init() call - why not put this in a constructor? Also - the init() call and HiveHistory.get() both call setHistory on sessionstate. i am actually unsure of why there is a HiveHistory.get() call in the first place. seems like all u have to do is initialize the history object and store it in the sessionstate - both of which can be done by SessionState.getHiveHistory(). probably u don't need a setHiveHistory() function in SessionState as well.
Driver.java: should move up the TASK_NAME setting up into the startTask code since it seems to me that having the task name would be good for building any kind of UI stuff on top of this query log.
Driver.java: setJobProperty(command, Keys.TASK_NUM_REDUCE_TASKS, String.valueOf(hasReduce)); - confused by this - this is a task property - right? (ExecDriver sets it as well). HAS_REDUCE_TASKS is questionable from point of view of history (not sure why it's relevant). I also see that JOB_ERROR_MSG is defined but not implemented - just wanted to make sure that this is what u wanted.
we need test cases. I would definitely like to verify some end to end tests - like making sure that for both positive and negative test queries - that history files are properly generated and contain some data. doing diffs on such files may be hard - but we should be able to assert that we see a start and end for job and the expected number of tasks etc.