JIRA-1138

closes #27
diff --git a/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java b/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
index ca7226f..ac787cc 100644
--- a/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
+++ b/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
@@ -260,6 +260,9 @@
     context
         .setStatus("setup: Connected to Zookeeper service " + serverPortList);
     this.graphFunctions = determineGraphFunctions(conf, zkManager);
+    if (this.graphFunctions.isMaster()) {
+      zkManager.cleanupOnExit();
+    }
     try {
       instantiateBspService();
     } catch (IOException e) {
diff --git a/giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java b/giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
index b843882..c398140 100644
--- a/giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
+++ b/giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
@@ -725,6 +725,18 @@
   }
 
   /**
+   * Mark files zookeeper creates in hdfs to be deleted on exit.
+   * To be called on master, since it's the last one who finishes.
+   */
+  public void cleanupOnExit() {
+    try {
+      fs.deleteOnExit(baseDirectory);
+    } catch (IOException e) {
+      LOG.error("cleanupOnExit: Failed to delete on exit " + baseDirectory);
+    }
+  }
+
+  /**
    * Do necessary cleanup in zookeeper wrapper.
    */
   public void cleanup() {