This is an automated email from the ASF dual-hosted git repository.
ayushsaxena pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tez.git
The following commit(s) were added to refs/heads/master by this push:
new 38c5aaccd TEZ-4564: TezClient to expose Tez AM host:port (#356).
(Laszlo Bodor, reviewed by Ayush Saxena)
38c5aaccd is described below
commit 38c5aaccdf8e4f7db210975021c78b6db556c87f
Author: Bodor Laszlo <[email protected]>
AuthorDate: Tue May 28 07:45:54 2024 +0200
TEZ-4564: TezClient to expose Tez AM host:port (#356). (Laszlo Bodor,
reviewed by Ayush Saxena)
---
.../java/org/apache/tez/client/FrameworkClient.java | 3 +++
.../main/java/org/apache/tez/client/TezClient.java | 8 ++++++++
.../java/org/apache/tez/client/TezYarnClient.java | 15 +++++++++++++++
.../java/org/apache/tez/client/TestTezClient.java | 19 +++++++++++++++++++
.../main/java/org/apache/tez/client/LocalClient.java | 15 +++++++++++++++
5 files changed, 60 insertions(+)
diff --git a/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
b/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
index 26c11fd08..a1a0b8a5e 100644
--- a/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
@@ -94,6 +94,9 @@ public abstract class FrameworkClient {
public abstract ApplicationReport getApplicationReport(ApplicationId appId)
throws YarnException, IOException;
+ public abstract String getAmHost();
+ public abstract int getAmPort();
+
public abstract boolean isRunning() throws IOException;
public TezAppMasterStatus getAMStatus(Configuration conf, ApplicationId
appId,
diff --git a/tez-api/src/main/java/org/apache/tez/client/TezClient.java
b/tez-api/src/main/java/org/apache/tez/client/TezClient.java
index c63270085..937346cac 100644
--- a/tez-api/src/main/java/org/apache/tez/client/TezClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/TezClient.java
@@ -1286,4 +1286,12 @@ public class TezClient {
+ appIdStr, n);
}
}
+
+ public String getAmHost() {
+ return frameworkClient == null ? null : frameworkClient.getAmHost();
+ }
+
+ public int getAmPort() {
+ return frameworkClient == null ? -1 : frameworkClient.getAmPort();
+ }
}
diff --git a/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
b/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
index f89664d86..d10964807 100644
--- a/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
@@ -40,6 +40,9 @@ public class TezYarnClient extends FrameworkClient {
private volatile boolean isRunning;
+ private String amHost;
+ private int amPort;
+
protected TezYarnClient(YarnClient yarnClient) {
this.yarnClient = yarnClient;
}
@@ -100,6 +103,8 @@ public class TezYarnClient extends FrameworkClient {
throw new ApplicationNotFoundException("YARN reports no state for
application "
+ appId);
}
+ this.amHost = report.getHost();
+ this.amPort = report.getRpcPort();
return report;
}
@@ -107,4 +112,14 @@ public class TezYarnClient extends FrameworkClient {
public boolean isRunning() throws IOException {
return isRunning;
}
+
+ @Override
+ public String getAmHost() {
+ return amHost;
+ }
+
+ @Override
+ public int getAmPort() {
+ return amPort;
+ }
}
diff --git a/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
b/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
index e4d03cc60..1b93f924a 100644
--- a/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
+++ b/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
@@ -161,6 +161,16 @@ public class TestTezClient {
}
return super.getProxy(conf, sessionAppId, ugi);
}
+
+ @Override
+ public String getAmHost() {
+ return "testhost";
+ }
+
+ @Override
+ public int getAmPort() {
+ return 1234;
+ }
}
TezClientForTest configureAndCreateTezClient() throws YarnException,
IOException, ServiceException {
@@ -1005,4 +1015,13 @@ public class TestTezClient {
//Test that Exception is not thrown by createFinalConfProtoForApp
TezClientUtils.createFinalConfProtoForApp(conf, null);
}
+
+ @Test
+ public void testGetAmHostAndPort() throws Exception {
+ final TezClientForTest client = configureAndCreateTezClient(new
TezConfiguration());
+
+ // TezClient exposes AM host and port from the FrameworkClient (now it's a
TezYarnClientForTest)
+ assertEquals("testhost", client.getAmHost());
+ assertEquals(1234, client.getAmPort());
+ }
}
diff --git a/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
b/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
index bf1cef4c4..73f60bdcc 100644
--- a/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
+++ b/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
@@ -88,6 +88,8 @@ public class LocalClient extends FrameworkClient {
private TezApiVersionInfo versionInfo = new TezApiVersionInfo();
private volatile Throwable amFailException = null;
private boolean isLocalWithoutNetwork;
+ private String amHost;
+ private int amPort;
private static final String localModeDAGSchedulerClassName =
"org.apache.tez.dag.app.dag.impl.DAGSchedulerNaturalOrderControlled";
@@ -204,6 +206,9 @@ public class LocalClient extends FrameworkClient {
report.setProgress(dagAppMaster.getProgress());
report.setAMRMToken(null);
+ this.amHost = dagAppMaster.getAppNMHost();
+ this.amPort = dagAppMaster.getRpcPort();
+
return report;
}
@@ -475,4 +480,14 @@ public class LocalClient extends FrameworkClient {
}
return super.shutdownSession(configuration, sessionAppId, ugi);
}
+
+ @Override
+ public String getAmHost() {
+ return amHost;
+ }
+
+ @Override
+ public int getAmPort() {
+ return amPort;
+ }
}