1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.giraph.job;
20
21 import org.apache.giraph.conf.GiraphConfiguration;
22 import org.apache.giraph.conf.GiraphConstants;
23 import org.apache.giraph.utils.CounterUtils;
24 import org.apache.hadoop.mapreduce.Job;
25 import org.apache.log4j.Logger;
26
27
28
29
30 public class HaltApplicationUtils {
31
32 private HaltApplicationUtils() { }
33
34
35
36
37
38
39
40
41 public static void printHaltInfo(Job submittedJob,
42 GiraphConfiguration conf) {
43 String zkServer = CounterUtils.waitAndGetCounterNameFromGroup(
44 submittedJob, GiraphConstants.ZOOKEEPER_SERVER_PORT_COUNTER_GROUP);
45 String haltNode = CounterUtils.waitAndGetCounterNameFromGroup(
46 submittedJob, GiraphConstants.ZOOKEEPER_HALT_NODE_COUNTER_GROUP);
47 if (zkServer != null && haltNode != null) {
48 GiraphConstants.HALT_INSTRUCTIONS_WRITER_CLASS.newInstance(
49 conf).writeHaltInstructions(zkServer, haltNode);
50 }
51 }
52
53
54
55
56 public interface HaltInstructionsWriter {
57
58
59
60
61
62
63 void writeHaltInstructions(String zkServer, String haltNode);
64 }
65
66
67
68
69
70 public static class DefaultHaltInstructionsWriter implements
71 HaltInstructionsWriter {
72
73 private static final Logger LOG = Logger.getLogger(
74 DefaultHaltInstructionsWriter.class);
75
76 @Override
77 public void writeHaltInstructions(String zkServer, String haltNode) {
78 if (LOG.isInfoEnabled()) {
79 LOG.info("writeHaltInstructions: " +
80 "To halt after next superstep execute: " +
81 "'bin/halt-application --zkServer " + zkServer +
82 " --zkNode " + haltNode + "'");
83 }
84 }
85 }
86 }