diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationAttemptId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationAttemptId.java
index 0a83bc0..ee0ce16 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationAttemptId.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationAttemptId.java
@@ -19,6 +19,8 @@
package org.apache.hadoop.yarn.api.records;
import java.text.NumberFormat;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
@@ -26,6 +28,8 @@
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.util.Records;
+import com.google.common.base.Splitter;
+
/**
*
ApplicationAttemptId denotes the particular attempt
* of an ApplicationMaster for a given {@link ApplicationId}.
@@ -38,6 +42,7 @@
@Stable
public abstract class ApplicationAttemptId implements
Comparable {
+ private static Splitter _spliter = Splitter.on('_').trimResults();
@Private
@Unstable
@@ -139,4 +144,32 @@ public String toString() {
}
protected abstract void build();
+
+ @Public
+ @Stable
+ public static ApplicationAttemptId fromString(String applicationAttemptIdStr) {
+ Iterator it = _spliter.split(applicationAttemptIdStr).iterator();
+ if (!it.next().equals(appAttemptIdStrPrefix)) {
+ throw new IllegalArgumentException("Invalid AppAttemptId prefix: "
+ + applicationAttemptIdStr);
+ }
+ try {
+ return toApplicationAttemptId(it);
+ } catch (NumberFormatException n) {
+ throw new IllegalArgumentException("Invalid AppAttemptId: "
+ + applicationAttemptIdStr, n);
+ } catch (NoSuchElementException e) {
+ throw new IllegalArgumentException("Invalid AppAttemptId: "
+ + applicationAttemptIdStr, e);
+ }
+ }
+
+ private static ApplicationAttemptId toApplicationAttemptId(
+ Iterator it) throws NumberFormatException {
+ ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()),
+ Integer.parseInt(it.next()));
+ ApplicationAttemptId appAttemptId =
+ ApplicationAttemptId.newInstance(appId, Integer.parseInt(it.next()));
+ return appAttemptId;
+ }
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationId.java
index 90214cd..5c22901 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationId.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationId.java
@@ -19,6 +19,8 @@
package org.apache.hadoop.yarn.api.records;
import java.text.NumberFormat;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
@@ -26,6 +28,8 @@
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.util.Records;
+import com.google.common.base.Splitter;
+
/**
* ApplicationId represents the globally unique
* identifier for an application.
@@ -38,6 +42,7 @@
@Public
@Stable
public abstract class ApplicationId implements Comparable {
+ private static Splitter _spliter = Splitter.on('_').trimResults();
@Private
@Unstable
@@ -108,6 +113,33 @@ public String toString() {
return appIdStrPrefix + this.getClusterTimestamp() + "_"
+ appIdFormat.get().format(getId());
}
+
+ private static ApplicationId toApplicationId(
+ Iterator it) throws NumberFormatException {
+ ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()),
+ Integer.parseInt(it.next()));
+ return appId;
+ }
+
+ @Public
+ @Stable
+ public static ApplicationId fromString(String appIdStr) {
+ Iterator it = _spliter.split((appIdStr)).iterator();
+ if (!it.next().equals(appIdStrPrefix)) {
+ throw new IllegalArgumentException("Invalid ApplicationId prefix: "
+ + appIdStr + ". The valid ApplicationId should start with prefix "
+ + appIdStrPrefix);
+ }
+ try {
+ return toApplicationId(it);
+ } catch (NumberFormatException n) {
+ throw new IllegalArgumentException("Invalid ApplicationId: "
+ + appIdStr, n);
+ } catch (NoSuchElementException e) {
+ throw new IllegalArgumentException("Invalid ApplicationId: "
+ + appIdStr, e);
+ }
+ }
@Override
public int hashCode() {
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java
index f332651..feddeca 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java
@@ -42,7 +42,7 @@
private static final String CONTAINER_PREFIX = "container";
private static final String EPOCH_PREFIX = "e";
- @Private
+ @Public
@Unstable
public static ContainerId newContainerId(ApplicationAttemptId appAttemptId,
long containerId) {
@@ -97,7 +97,7 @@ public static ContainerId newInstance(ApplicationAttemptId appAttemptId,
*/
@Public
@Deprecated
- @Stable
+ @Unstable
public abstract int getId();
/**
@@ -205,7 +205,7 @@ public String toString() {
}
@Public
- @Unstable
+ @Stable
public static ContainerId fromString(String containerIdStr) {
Iterator it = _SPLITTER.split(containerIdStr).iterator();
if (!it.next().equals(CONTAINER_PREFIX)) {
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeId.java
index c3f8595..a0b87a7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeId.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeId.java
@@ -20,8 +20,8 @@
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
-import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.yarn.util.Records;
/**
@@ -35,8 +35,8 @@
@Stable
public abstract class NodeId implements Comparable {
- @Private
- @Unstable
+ @Public
+ @Stable
public static NodeId newInstance(String host, int port) {
NodeId nodeId = Records.newRecord(NodeId.class);
nodeId.setHost(host);
@@ -112,6 +112,23 @@ public int compareTo(NodeId other) {
}
return hostCompare;
}
+
+ @Public
+ @Stable
+ public static NodeId fromString(String nodeIdStr) {
+ String[] parts = nodeIdStr.split(":");
+ if (parts.length != 2) {
+ throw new IllegalArgumentException("Invalid NodeId [" + nodeIdStr
+ + "]. Expected host:port");
+ }
+ try {
+ NodeId nodeId =
+ NodeId.newInstance(parts[0].trim(), Integer.parseInt(parts[1]));
+ return nodeId;
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Invalid port: " + parts[1], e);
+ }
+ }
protected abstract void build();
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
index 4261117..aa28585 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
@@ -18,8 +18,13 @@
package org.apache.hadoop.yarn.api.records;
+import java.net.URI;
+import java.net.URISyntaxException;
+
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.util.Records;
/**
@@ -119,4 +124,48 @@ public static URL newInstance(String scheme, String host, int port, String file)
@Public
@Stable
public abstract void setFile(String file);
+
+ @Public
+ @Stable
+ public Path toPath() throws URISyntaxException {
+ String scheme = getScheme() == null ? "" : getScheme();
+
+ String authority = "";
+ if (getHost() != null) {
+ authority = getHost();
+ if (getUserInfo() != null) {
+ authority = getUserInfo() + "@" + authority;
+ }
+ if (getPort() > 0) {
+ authority += ":" + getPort();
+ }
+ }
+
+ return new Path(
+ (new URI(scheme, authority, getFile(), null, null)).normalize());
+ }
+
+ @Public
+ @Stable
+ public static URL fromURI(URI uri) {
+ URL url =
+ RecordFactoryProvider.getRecordFactory(null).newRecordInstance(
+ URL.class);
+ if (uri.getHost() != null) {
+ url.setHost(uri.getHost());
+ }
+ if (uri.getUserInfo() != null) {
+ url.setUserInfo(uri.getUserInfo());
+ }
+ url.setPort(uri.getPort());
+ url.setScheme(uri.getScheme());
+ url.setFile(uri.getPath());
+ return url;
+ }
+
+ @Public
+ @Stable
+ public static URL fromPath(Path path) {
+ return fromURI(path.toUri());
+ }
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java
index acd29fb..f1116bd 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java
@@ -18,18 +18,13 @@
package org.apache.hadoop.yarn.util;
-import static org.apache.hadoop.yarn.util.StringHelper._split;
-
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.NoSuchElementException;
import org.apache.hadoop.classification.InterfaceAudience.Private;
+import org.apache.hadoop.classification.InterfaceAudience.Public;
+import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.security.SecurityUtil;
@@ -41,7 +36,6 @@
import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.factories.RecordFactory;
-import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
/**
@@ -49,7 +43,7 @@
* from/to 'serializableFormat' to/from hadoop/nativejava data structures.
*
*/
-@Private
+@Public
public class ConverterUtils {
public static final String APPLICATION_PREFIX = "application";
@@ -58,113 +52,68 @@
/**
* return a hadoop path from a given url
+ * This method is deprecated, use {@link URL#toPath()} instead.
*
* @param url
* url to convert
* @return path from {@link URL}
* @throws URISyntaxException
*/
+ @Public
+ @Deprecated
public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
- String scheme = url.getScheme() == null ? "" : url.getScheme();
-
- String authority = "";
- if (url.getHost() != null) {
- authority = url.getHost();
- if (url.getUserInfo() != null) {
- authority = url.getUserInfo() + "@" + authority;
- }
- if (url.getPort() > 0) {
- authority += ":" + url.getPort();
- }
- }
-
- return new Path(
- (new URI(scheme, authority, url.getFile(), null, null)).normalize());
+ return url.toPath();
}
-
+
/**
- * change from CharSequence to string for map key and value
- * @param env map for converting
- * @return string,string map
+ * This method is deprecated, use {@link URL#fromPath(Path)} instead.
*/
- public static Map convertToString(
- Map env) {
-
- Map stringMap = new HashMap();
- for (Entry entry: env.entrySet()) {
- stringMap.put(entry.getKey().toString(), entry.getValue().toString());
- }
- return stringMap;
- }
-
+ @Public
+ @Deprecated
public static URL getYarnUrlFromPath(Path path) {
- return getYarnUrlFromURI(path.toUri());
+ return URL.fromPath(path);
}
+ /**
+ * This method is deprecated, use {@link URL#fromURI(URI)} instead.
+ */
+ @Public
+ @Deprecated
public static URL getYarnUrlFromURI(URI uri) {
- URL url = RecordFactoryProvider.getRecordFactory(null).newRecordInstance(URL.class);
- if (uri.getHost() != null) {
- url.setHost(uri.getHost());
- }
- if (uri.getUserInfo() != null) {
- url.setUserInfo(uri.getUserInfo());
- }
- url.setPort(uri.getPort());
- url.setScheme(uri.getScheme());
- url.setFile(uri.getPath());
- return url;
+ return URL.fromURI(uri);
}
+ /**
+ * This method is deprecated, use {@link ApplicationId#toString()} instead.
+ */
+ @Public
+ @Deprecated
public static String toString(ApplicationId appId) {
return appId.toString();
}
+ /**
+ * This method is deprecated, use {@link ApplicationId#fromString(String)}
+ * instead.
+ */
+ @Public
+ @Deprecated
public static ApplicationId toApplicationId(RecordFactory recordFactory,
- String appIdStr) {
- Iterator it = _split(appIdStr).iterator();
- if (!it.next().equals(APPLICATION_PREFIX)) {
- throw new IllegalArgumentException("Invalid ApplicationId prefix: "
- + appIdStr + ". The valid ApplicationId should start with prefix "
- + APPLICATION_PREFIX);
- }
- try {
- return toApplicationId(recordFactory, it);
- } catch (NumberFormatException n) {
- throw new IllegalArgumentException("Invalid ApplicationId: " + appIdStr,
- n);
- } catch (NoSuchElementException e) {
- throw new IllegalArgumentException("Invalid ApplicationId: " + appIdStr,
- e);
- }
- }
-
- private static ApplicationId toApplicationId(RecordFactory recordFactory,
- Iterator it) {
- ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()),
- Integer.parseInt(it.next()));
- return appId;
- }
-
- private static ApplicationAttemptId toApplicationAttemptId(
- Iterator it) throws NumberFormatException {
- ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()),
- Integer.parseInt(it.next()));
- ApplicationAttemptId appAttemptId =
- ApplicationAttemptId.newInstance(appId, Integer.parseInt(it.next()));
- return appAttemptId;
- }
-
- private static ApplicationId toApplicationId(
- Iterator it) throws NumberFormatException {
- ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()),
- Integer.parseInt(it.next()));
- return appId;
+ String applicationIdStr) {
+ return ApplicationId.fromString(applicationIdStr);
}
+ /**
+ * This method is deprecated, use {@link ContainerId#toString()} instead.
+ */
+ @Public
+ @Deprecated
public static String toString(ContainerId cId) {
return cId == null ? null : cId.toString();
}
-
+
+ @Private
+ @InterfaceStability.Unstable
public static NodeId toNodeIdWithDefaultPort(String nodeIdStr) {
if (nodeIdStr.indexOf(":") < 0) {
return toNodeId(nodeIdStr + ":0");
@@ -172,60 +121,44 @@ public static NodeId toNodeIdWithDefaultPort(String nodeIdStr) {
return toNodeId(nodeIdStr);
}
+ /**
+ * This method is deprecated, use {@link NodeId#fromString(String)} instead.
+ */
+ @Public
+ @Deprecated
public static NodeId toNodeId(String nodeIdStr) {
- String[] parts = nodeIdStr.split(":");
- if (parts.length != 2) {
- throw new IllegalArgumentException("Invalid NodeId [" + nodeIdStr
- + "]. Expected host:port");
- }
- try {
- NodeId nodeId =
- NodeId.newInstance(parts[0].trim(), Integer.parseInt(parts[1]));
- return nodeId;
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException("Invalid port: " + parts[1], e);
- }
+ return NodeId.fromString(nodeIdStr);
}
+ /**
+ * This method is deprecated, use {@link ContainerId#fromString(String)}
+ * instead.
+ */
+ @Public
+ @Deprecated
public static ContainerId toContainerId(String containerIdStr) {
return ContainerId.fromString(containerIdStr);
}
-
+
+ /**
+ * This method is deprecated, use {@link ApplicationAttemptId#toString()}
+ * instead.
+ */
+ @Public
+ @Deprecated
public static ApplicationAttemptId toApplicationAttemptId(
- String applicationAttmeptIdStr) {
- Iterator it = _split(applicationAttmeptIdStr).iterator();
- if (!it.next().equals(APPLICATION_ATTEMPT_PREFIX)) {
- throw new IllegalArgumentException("Invalid AppAttemptId prefix: "
- + applicationAttmeptIdStr);
- }
- try {
- return toApplicationAttemptId(it);
- } catch (NumberFormatException n) {
- throw new IllegalArgumentException("Invalid AppAttemptId: "
- + applicationAttmeptIdStr, n);
- } catch (NoSuchElementException e) {
- throw new IllegalArgumentException("Invalid AppAttemptId: "
- + applicationAttmeptIdStr, e);
- }
+ String applicationAttemptIdStr) {
+ return ApplicationAttemptId.fromString(applicationAttemptIdStr);
}
+ /**
+ * This method is deprecated, use {@link ApplicationId#toString()} instead.
+ */
+ @Public
+ @Deprecated
public static ApplicationId toApplicationId(
String appIdStr) {
- Iterator it = _split(appIdStr).iterator();
- if (!it.next().equals(APPLICATION_PREFIX)) {
- throw new IllegalArgumentException("Invalid ApplicationId prefix: "
- + appIdStr + ". The valid ApplicationId should start with prefix "
- + APPLICATION_PREFIX);
- }
- try {
- return toApplicationId(it);
- } catch (NumberFormatException n) {
- throw new IllegalArgumentException("Invalid ApplicationId: "
- + appIdStr, n);
- } catch (NoSuchElementException e) {
- throw new IllegalArgumentException("Invalid ApplicationId: "
- + appIdStr, e);
- }
+ return ApplicationId.fromString(appIdStr);
}
/**