Author: jghoman
Date: Fri Feb 10 00:13:04 2012
New Revision: 1242614
URL: http://svn.apache.org/viewvc?rev=1242614&view=rev
Log:
GIRAPH-142: _hadoopBsp should be prefixable via configuration.
Added:
incubator/giraph/trunk/src/test/java/zk/
incubator/giraph/trunk/src/test/java/zk/TestZooKeeperManager.java
Modified:
incubator/giraph/trunk/CHANGELOG
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/BspService.java
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/GiraphJob.java
incubator/giraph/trunk/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
Modified: incubator/giraph/trunk/CHANGELOG
URL:
http://svn.apache.org/viewvc/incubator/giraph/trunk/CHANGELOG?rev=1242614&r1=1242613&r2=1242614&view=diff
==============================================================================
--- incubator/giraph/trunk/CHANGELOG (original)
+++ incubator/giraph/trunk/CHANGELOG Fri Feb 10 00:13:04 2012
@@ -2,6 +2,8 @@ Giraph Change Log
Release 0.2.0 - unreleased
+ GIRAPH-142: _hadoopBsp should be prefixable via configuration. (jghoman)
+
GIRAPH-145. Change partition request log level to debug rather than info.
(jghoman)
Modified:
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/BspService.java
URL:
http://svn.apache.org/viewvc/incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/BspService.java?rev=1242614&r1=1242613&r2=1242614&view=diff
==============================================================================
---
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/BspService.java
(original)
+++
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/BspService.java
Fri Feb 10 00:13:04 2012
@@ -23,6 +23,7 @@ import org.apache.giraph.graph.partition
import org.apache.giraph.zk.BspEvent;
import org.apache.giraph.zk.PredicateLock;
import org.apache.giraph.zk.ZooKeeperExt;
+import org.apache.giraph.zk.ZooKeeperManager;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -137,7 +138,7 @@ public abstract class BspService <
/** Unset application attempt */
public static final long UNSET_APPLICATION_ATTEMPT = Long.MIN_VALUE;
- public static final String BASE_DIR = "/_hadoopBsp";
+ private static final String BASE_DIR = "/_hadoopBsp";
public static final String MASTER_JOB_STATE_NODE = "/_masterJobState";
public static final String INPUT_SPLIT_DIR = "/_inputSplitDir";
public static final String INPUT_SPLIT_DONE_DIR = "/_inputSplitDoneDir";
@@ -629,7 +630,7 @@ public abstract class BspService <
conf.getInt(GiraphJob.CHECKPOINT_FREQUENCY,
GiraphJob.CHECKPOINT_FREQUENCY_DEFAULT);
- BASE_PATH = BASE_DIR + "/" + jobId;
+ BASE_PATH = ZooKeeperManager.getBasePath(conf) + BASE_DIR + "/" +
jobId;
MASTER_JOB_STATE_PATH = BASE_PATH + MASTER_JOB_STATE_NODE;
INPUT_SPLIT_PATH = BASE_PATH + INPUT_SPLIT_DIR;
INPUT_SPLITS_ALL_READY_PATH = BASE_PATH + INPUT_SPLITS_ALL_READY_NODE;
Modified:
incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/GiraphJob.java
URL:
http://svn.apache.org/viewvc/incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/GiraphJob.java?rev=1242614&r1=1242613&r2=1242614&view=diff
==============================================================================
--- incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/GiraphJob.java
(original)
+++ incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/GiraphJob.java
Fri Feb 10 00:13:04 2012
@@ -280,6 +280,12 @@ public class GiraphJob extends Job {
public static final String RESTART_SUPERSTEP = "giraph.restartSuperstep";
/**
+ * Base ZNode for Giraph's state in the ZooKeeper cluster. Must be a root
+ * znode on the cluster beginning with "/"
+ */
+ public static final String BASE_ZNODE_KEY = "giraph.zkBaseZNode";
+
+ /**
* If ZOOKEEPER_LIST is not set, then use this directory to manage
* ZooKeeper
*/
Modified:
incubator/giraph/trunk/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
URL:
http://svn.apache.org/viewvc/incubator/giraph/trunk/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java?rev=1242614&r1=1242613&r2=1242614&view=diff
==============================================================================
---
incubator/giraph/trunk/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
(original)
+++
incubator/giraph/trunk/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
Fri Feb 10 00:13:04 2012
@@ -18,6 +18,19 @@
package org.apache.giraph.zk;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.io.Closeables;
+import org.apache.commons.io.FileUtils;
+import org.apache.giraph.graph.GiraphJob;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapreduce.Mapper;
+import org.apache.log4j.Logger;
+import org.apache.zookeeper.server.quorum.QuorumPeerMain;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
@@ -35,18 +48,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.io.Closeables;
-import org.apache.commons.io.FileUtils;
-import org.apache.giraph.graph.GiraphJob;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.apache.log4j.Logger;
-import org.apache.zookeeper.server.quorum.QuorumPeerMain;
+import static org.apache.giraph.graph.GiraphJob.BASE_ZNODE_KEY;
+
/**
* Manages the election of ZooKeeper servers, starting/stopping the services,
@@ -128,6 +131,24 @@ public class ZooKeeperManager {
return GiraphJob.ZOOKEEPER_MANAGER_DIR_DEFAULT + "/" + jobId;
}
+ /**
+ * Return the base ZooKeeper ZNode from which all other ZNodes Giraph creates
+ * should be sited, for instance in a multi-tenant ZooKeeper, the znode
+ * reserved for Giraph
+ *
+ * @param conf Necessary to access user-provided values
+ * @return String of path without trailing slash
+ */
+ public static String getBasePath(Configuration conf) {
+ String result = conf.get(BASE_ZNODE_KEY, "");
+ if(!result.equals("") && !result.startsWith("/")) {
+ throw new IllegalArgumentException("Value for " +
+ BASE_ZNODE_KEY + " must start with /: " + result);
+ }
+
+ return result;
+ }
+
/**
* Collects the output of a stream and dumps it to the log.
*/
Added: incubator/giraph/trunk/src/test/java/zk/TestZooKeeperManager.java
URL:
http://svn.apache.org/viewvc/incubator/giraph/trunk/src/test/java/zk/TestZooKeeperManager.java?rev=1242614&view=auto
==============================================================================
--- incubator/giraph/trunk/src/test/java/zk/TestZooKeeperManager.java (added)
+++ incubator/giraph/trunk/src/test/java/zk/TestZooKeeperManager.java Fri Feb
10 00:13:04 2012
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package zk;
+
+import junit.framework.TestCase;
+import org.apache.giraph.graph.GiraphJob;
+import org.apache.giraph.zk.ZooKeeperManager;
+import org.apache.hadoop.conf.Configuration;
+
+public class TestZooKeeperManager extends TestCase {
+ public void testGetBasePath() {
+ Configuration conf = new Configuration();
+
+ // Default is empty, everything goes in root znode
+ assertEquals("Default value for base path should be empty",
+ "", ZooKeeperManager.getBasePath(conf));
+
+ conf.set(GiraphJob.BASE_ZNODE_KEY, "/howdy");
+ assertEquals("Base path should reflect value of " +
GiraphJob.BASE_ZNODE_KEY,
+ "/howdy", ZooKeeperManager.getBasePath(conf));
+
+ conf.set(GiraphJob.BASE_ZNODE_KEY, "no_slash");
+ try {
+ ZooKeeperManager.getBasePath(conf);
+ fail("Should not have allowed path without starting slash");
+ } catch (IllegalArgumentException iae) {
+ assertTrue(iae.getMessage().contains(GiraphJob.BASE_ZNODE_KEY));
+ }
+ }
+}