hadoop git commit: HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin.
Repository: hadoop Updated Branches: refs/heads/trunk deb4743b2 -> 9ef89ede2 HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9ef89ede Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9ef89ede Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9ef89ede Branch: refs/heads/trunk Commit: 9ef89ede2f18c76c601fd585cb9d47511f5fc3ed Parents: deb4743 Author: Akira AjisakaAuthored: Thu Dec 8 13:38:02 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 13:38:02 2016 +0900 -- .../hadoop/hdfs/server/datanode/DirectoryScanner.java | 12 1 file changed, 8 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9ef89ede/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java index e2baf32..18188dd 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java @@ -37,6 +37,8 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; + +import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -61,7 +63,7 @@ public class DirectoryScanner implements Runnable { private static final int MILLIS_PER_SECOND = 1000; private static final String START_MESSAGE = "Periodic Directory Tree Verification scan" - + " starting at %dms with interval of %dms"; + + " starting at %s with interval of %dms"; private static final String START_MESSAGE_WITH_THROTTLE = START_MESSAGE + " and throttle limit of %dms/s"; @@ -268,10 +270,12 @@ public class DirectoryScanner implements Runnable { String logMsg; if (throttleLimitMsPerSec < MILLIS_PER_SECOND) { - logMsg = String.format(START_MESSAGE_WITH_THROTTLE, firstScanTime, - scanPeriodMsecs, throttleLimitMsPerSec); + logMsg = String.format(START_MESSAGE_WITH_THROTTLE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs, + throttleLimitMsPerSec); } else { - logMsg = String.format(START_MESSAGE, firstScanTime, scanPeriodMsecs); + logMsg = String.format(START_MESSAGE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs); } LOG.info(logMsg); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin.
Repository: hadoop Updated Branches: refs/heads/branch-2.8 5b44b0c9e -> 59b0857c6 HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin. (cherry picked from commit 9ef89ede2f18c76c601fd585cb9d47511f5fc3ed) (cherry picked from commit e00a124cb5c43e34674faa8b450254074b7fd3a6) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/59b0857c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/59b0857c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/59b0857c Branch: refs/heads/branch-2.8 Commit: 59b0857c6b10e5d031457e354054dfc8ea715e06 Parents: 5b44b0c Author: Akira AjisakaAuthored: Thu Dec 8 13:38:02 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 13:42:02 2016 +0900 -- .../hadoop/hdfs/server/datanode/DirectoryScanner.java| 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/59b0857c/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java index a050452..490321e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java @@ -39,6 +39,7 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -64,7 +65,7 @@ public class DirectoryScanner implements Runnable { private static final int MILLIS_PER_SECOND = 1000; private static final String START_MESSAGE = "Periodic Directory Tree Verification scan" - + " starting at %dms with interval of %dms"; + + " starting at %s with interval of %dms"; private static final String START_MESSAGE_WITH_THROTTLE = START_MESSAGE + " and throttle limit of %dms/s"; @@ -463,10 +464,12 @@ public class DirectoryScanner implements Runnable { String logMsg; if (throttleLimitMsPerSec < MILLIS_PER_SECOND) { - logMsg = String.format(START_MESSAGE_WITH_THROTTLE, firstScanTime, - scanPeriodMsecs, throttleLimitMsPerSec); + logMsg = String.format(START_MESSAGE_WITH_THROTTLE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs, + throttleLimitMsPerSec); } else { - logMsg = String.format(START_MESSAGE, firstScanTime, scanPeriodMsecs); + logMsg = String.format(START_MESSAGE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs); } LOG.info(logMsg); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin.
Repository: hadoop Updated Branches: refs/heads/branch-2 4b21b47f5 -> e00a124cb HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin. (cherry picked from commit 9ef89ede2f18c76c601fd585cb9d47511f5fc3ed) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e00a124c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e00a124c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e00a124c Branch: refs/heads/branch-2 Commit: e00a124cb5c43e34674faa8b450254074b7fd3a6 Parents: 4b21b47 Author: Akira AjisakaAuthored: Thu Dec 8 13:38:02 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 13:39:58 2016 +0900 -- .../hadoop/hdfs/server/datanode/DirectoryScanner.java | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e00a124c/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java index e44f5ed..02fbc7c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java @@ -40,11 +40,11 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileUtil; import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.protocol.Block; import org.apache.hadoop.hdfs.protocol.HdfsConstants; @@ -66,7 +66,7 @@ public class DirectoryScanner implements Runnable { private static final int MILLIS_PER_SECOND = 1000; private static final String START_MESSAGE = "Periodic Directory Tree Verification scan" - + " starting at %dms with interval of %dms"; + + " starting at %s with interval of %dms"; private static final String START_MESSAGE_WITH_THROTTLE = START_MESSAGE + " and throttle limit of %dms/s"; @@ -465,10 +465,12 @@ public class DirectoryScanner implements Runnable { String logMsg; if (throttleLimitMsPerSec < MILLIS_PER_SECOND) { - logMsg = String.format(START_MESSAGE_WITH_THROTTLE, firstScanTime, - scanPeriodMsecs, throttleLimitMsPerSec); + logMsg = String.format(START_MESSAGE_WITH_THROTTLE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs, + throttleLimitMsPerSec); } else { - logMsg = String.format(START_MESSAGE, firstScanTime, scanPeriodMsecs); + logMsg = String.format(START_MESSAGE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs); } LOG.info(logMsg); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: Revert "HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin."
Repository: hadoop Updated Branches: refs/heads/trunk 0857641f6 -> deb4743b2 Revert "HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin." This reverts commit 0857641f62778fad64e8158d78320efb0c8b417c. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/deb4743b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/deb4743b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/deb4743b Branch: refs/heads/trunk Commit: deb4743b2c3bb5c23842f0e224b89e41ef2d36d4 Parents: 0857641 Author: Akira AjisakaAuthored: Thu Dec 8 13:37:06 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 13:37:06 2016 +0900 -- .../java/org/apache/hadoop/fs/RawLocalFileSystem.java | 9 - .../hadoop/hdfs/server/datanode/DirectoryScanner.java | 12 2 files changed, 4 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/deb4743b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java -- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java index 84863a5..7bf429e 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java @@ -791,15 +791,6 @@ public class RawLocalFileSystem extends FileSystem { pathToFile(p).toPath(), BasicFileAttributeView.class); FileTime fmtime = (mtime >= 0) ? FileTime.fromMillis(mtime) : null; FileTime fatime = (atime >= 0) ? FileTime.fromMillis(atime) : null; - - // On some macOS environment, BasicFileAttributeView.setTimes - // does not set times correctly when the argument of accessTime is null. - // TODO: Remove this after the issue is fixed. - if (fatime == null && Shell.MAC) { -FileStatus f = getFileStatus(p); -fatime = FileTime.fromMillis(f.getAccessTime()); - } - view.setTimes(fmtime, fatime, null); } catch (NoSuchFileException e) { throw new FileNotFoundException("File " + p + " does not exist"); http://git-wip-us.apache.org/repos/asf/hadoop/blob/deb4743b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java index 18188dd..e2baf32 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java @@ -37,8 +37,6 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; - -import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -63,7 +61,7 @@ public class DirectoryScanner implements Runnable { private static final int MILLIS_PER_SECOND = 1000; private static final String START_MESSAGE = "Periodic Directory Tree Verification scan" - + " starting at %s with interval of %dms"; + + " starting at %dms with interval of %dms"; private static final String START_MESSAGE_WITH_THROTTLE = START_MESSAGE + " and throttle limit of %dms/s"; @@ -270,12 +268,10 @@ public class DirectoryScanner implements Runnable { String logMsg; if (throttleLimitMsPerSec < MILLIS_PER_SECOND) { - logMsg = String.format(START_MESSAGE_WITH_THROTTLE, - FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs, - throttleLimitMsPerSec); + logMsg = String.format(START_MESSAGE_WITH_THROTTLE, firstScanTime, + scanPeriodMsecs, throttleLimitMsPerSec); } else { - logMsg = String.format(START_MESSAGE, - FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs); + logMsg = String.format(START_MESSAGE, firstScanTime, scanPeriodMsecs); } LOG.info(logMsg); - To unsubscribe, e-mail:
hadoop git commit: HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin.
Repository: hadoop Updated Branches: refs/heads/trunk f54afdb83 -> 0857641f6 HDFS-11140. Directory Scanner should log startup message time correctly. Contributed by Yiqun Lin. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0857641f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0857641f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0857641f Branch: refs/heads/trunk Commit: 0857641f62778fad64e8158d78320efb0c8b417c Parents: f54afdb Author: Akira AjisakaAuthored: Thu Dec 8 13:34:45 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 13:34:45 2016 +0900 -- .../java/org/apache/hadoop/fs/RawLocalFileSystem.java | 9 + .../hadoop/hdfs/server/datanode/DirectoryScanner.java | 12 2 files changed, 17 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0857641f/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java -- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java index 7bf429e..84863a5 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java @@ -791,6 +791,15 @@ public class RawLocalFileSystem extends FileSystem { pathToFile(p).toPath(), BasicFileAttributeView.class); FileTime fmtime = (mtime >= 0) ? FileTime.fromMillis(mtime) : null; FileTime fatime = (atime >= 0) ? FileTime.fromMillis(atime) : null; + + // On some macOS environment, BasicFileAttributeView.setTimes + // does not set times correctly when the argument of accessTime is null. + // TODO: Remove this after the issue is fixed. + if (fatime == null && Shell.MAC) { +FileStatus f = getFileStatus(p); +fatime = FileTime.fromMillis(f.getAccessTime()); + } + view.setTimes(fmtime, fatime, null); } catch (NoSuchFileException e) { throw new FileNotFoundException("File " + p + " does not exist"); http://git-wip-us.apache.org/repos/asf/hadoop/blob/0857641f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java index e2baf32..18188dd 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java @@ -37,6 +37,8 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; + +import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -61,7 +63,7 @@ public class DirectoryScanner implements Runnable { private static final int MILLIS_PER_SECOND = 1000; private static final String START_MESSAGE = "Periodic Directory Tree Verification scan" - + " starting at %dms with interval of %dms"; + + " starting at %s with interval of %dms"; private static final String START_MESSAGE_WITH_THROTTLE = START_MESSAGE + " and throttle limit of %dms/s"; @@ -268,10 +270,12 @@ public class DirectoryScanner implements Runnable { String logMsg; if (throttleLimitMsPerSec < MILLIS_PER_SECOND) { - logMsg = String.format(START_MESSAGE_WITH_THROTTLE, firstScanTime, - scanPeriodMsecs, throttleLimitMsPerSec); + logMsg = String.format(START_MESSAGE_WITH_THROTTLE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs, + throttleLimitMsPerSec); } else { - logMsg = String.format(START_MESSAGE, firstScanTime, scanPeriodMsecs); + logMsg = String.format(START_MESSAGE, + FastDateFormat.getInstance().format(firstScanTime), scanPeriodMsecs); } LOG.info(logMsg); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail:
hadoop git commit: MAPREDUCE-4683. Create and distribute hadoop-mapreduce-client-core-tests.jar.
Repository: hadoop Updated Branches: refs/heads/trunk 3c774b8c9 -> f54afdb83 MAPREDUCE-4683. Create and distribute hadoop-mapreduce-client-core-tests.jar. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f54afdb8 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f54afdb8 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f54afdb8 Branch: refs/heads/trunk Commit: f54afdb83b2567f63f0dc94f5f4e26ead2eefc5e Parents: 3c774b8 Author: Akira AjisakaAuthored: Thu Dec 8 11:27:58 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 11:27:58 2016 +0900 -- .../hadoop-mapreduce-client-core/pom.xml| 16 1 file changed, 16 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f54afdb8/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pom.xml -- diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pom.xml index 38a7725..aefba7f 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pom.xml @@ -61,6 +61,22 @@ +maven-jar-plugin + + + + test-jar + + + +**/mapred-queues.xml + + +test-compile + + + + org.apache.maven.plugins maven-surefire-plugin - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: YARN-5921. Incorrect synchronization in RMContextImpl#setHAServiceState/getHAServiceState. Contributed by Varun Saxena
Repository: hadoop Updated Branches: refs/heads/branch-2.8 7dc22dbe0 -> 5b44b0c9e YARN-5921. Incorrect synchronization in RMContextImpl#setHAServiceState/getHAServiceState. Contributed by Varun Saxena (cherry picked from commit f3b8ff54ab08545d7093bf8861b44ec9912e8dc3) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5b44b0c9 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5b44b0c9 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5b44b0c9 Branch: refs/heads/branch-2.8 Commit: 5b44b0c9edb16e79c581a121806547f8346e2128 Parents: 7dc22db Author: NaganarasimhaAuthored: Tue Dec 6 06:53:38 2016 +0530 Committer: Naganarasimha Committed: Thu Dec 8 07:37:12 2016 +0530 -- .../hadoop/yarn/server/resourcemanager/RMContextImpl.java | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5b44b0c9/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java index ed9942b..a549930 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java @@ -73,6 +73,8 @@ public class RMContextImpl implements RMContext { private RMApplicationHistoryWriter rmApplicationHistoryWriter; private SystemMetricsPublisher systemMetricsPublisher; + private final Object haServiceStateLock = new Object(); + /** * Default constructor. To be used in conjunction with setter methods for * individual fields. @@ -237,9 +239,9 @@ public class RMContextImpl implements RMContext { this.isHAEnabled = isHAEnabled; } - void setHAServiceState(HAServiceState haServiceState) { -synchronized (haServiceState) { - this.haServiceState = haServiceState; + void setHAServiceState(HAServiceState serviceState) { +synchronized (haServiceStateLock) { + this.haServiceState = serviceState; } } @@ -335,7 +337,7 @@ public class RMContextImpl implements RMContext { @Override public HAServiceState getHAServiceState() { -synchronized (haServiceState) { +synchronized (haServiceStateLock) { return haServiceState; } } - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HADOOP-13842. Update jackson from 1.9.13 to 2.x in hadoop-maven-plugins.
Repository: hadoop Updated Branches: refs/heads/trunk ea2895f4e -> 3c774b8c9 HADOOP-13842. Update jackson from 1.9.13 to 2.x in hadoop-maven-plugins. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3c774b8c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3c774b8c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3c774b8c Branch: refs/heads/trunk Commit: 3c774b8c98540642eeb706065cf0275f9891d3b2 Parents: ea2895f Author: Akira AjisakaAuthored: Thu Dec 8 11:06:25 2016 +0900 Committer: Akira Ajisaka Committed: Thu Dec 8 11:06:25 2016 +0900 -- hadoop-maven-plugins/pom.xml| 12 .../apache/hadoop/maven/plugin/protoc/ProtocRunner.java | 5 +++-- 2 files changed, 7 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/3c774b8c/hadoop-maven-plugins/pom.xml -- diff --git a/hadoop-maven-plugins/pom.xml b/hadoop-maven-plugins/pom.xml index 51b8f91..eae03a1 100644 --- a/hadoop-maven-plugins/pom.xml +++ b/hadoop-maven-plugins/pom.xml @@ -47,17 +47,13 @@ provided - org.codehaus.jackson - jackson-core-asl - - - org.codehaus.jackson - jackson-mapper-asl - - commons-io commons-io + + com.fasterxml.jackson.core + jackson-databind + http://git-wip-us.apache.org/repos/asf/hadoop/blob/3c774b8c/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocRunner.java -- diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocRunner.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocRunner.java index ef15884..e83a8cd 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocRunner.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocRunner.java @@ -13,14 +13,15 @@ */ package org.apache.hadoop.maven.plugin.protoc; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + import org.apache.hadoop.maven.plugin.util.Exec; import org.apache.hadoop.maven.plugin.util.FileSetUtils; import org.apache.maven.model.FileSet; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-8630. WebHDFS : Support get/set/unset StoragePolicy. Contributed by Surendra Singh Lilhore.
Repository: hadoop Updated Branches: refs/heads/trunk 72fe54684 -> ea2895f4e HDFS-8630. WebHDFS : Support get/set/unset StoragePolicy. Contributed by Surendra Singh Lilhore. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ea2895f4 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ea2895f4 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ea2895f4 Branch: refs/heads/trunk Commit: ea2895f4ed5031809d856faa52e9de5b9501bdea Parents: 72fe546 Author: Andrew WangAuthored: Wed Dec 7 15:52:16 2016 -0800 Committer: Andrew Wang Committed: Wed Dec 7 15:52:16 2016 -0800 -- .../apache/hadoop/hdfs/web/JsonUtilClient.java | 49 .../hadoop/hdfs/web/WebHdfsFileSystem.java | 46 .../hadoop/hdfs/web/resources/GetOpParam.java | 3 + .../hadoop/hdfs/web/resources/PostOpParam.java | 2 + .../hadoop/hdfs/web/resources/PutOpParam.java | 1 + .../hdfs/web/resources/StoragePolicyParam.java | 43 +++ .../hadoop/fs/http/client/HttpFSFileSystem.java | 92 ++- .../hadoop/fs/http/server/FSOperations.java | 130 + .../http/server/HttpFSParametersProvider.java | 23 ++ .../hadoop/fs/http/server/HttpFSServer.java | 35 +++ .../fs/http/client/BaseTestHttpFSWith.java | 52 +++- .../web/resources/NamenodeWebHdfsMethods.java | 39 ++- .../org/apache/hadoop/hdfs/web/JsonUtil.java| 27 ++ .../hadoop-hdfs/src/site/markdown/WebHDFS.md| 261 +++ .../org/apache/hadoop/hdfs/web/TestWebHDFS.java | 68 + .../hadoop/hdfs/web/resources/TestParam.java| 8 + 16 files changed, 871 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ea2895f4/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/JsonUtilClient.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/JsonUtilClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/JsonUtilClient.java index a75f4f1..3690a86 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/JsonUtilClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/JsonUtilClient.java @@ -35,6 +35,7 @@ import org.apache.hadoop.fs.permission.AclEntry; import org.apache.hadoop.fs.permission.AclStatus; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.hdfs.DFSUtilClient; +import org.apache.hadoop.hdfs.protocol.BlockStoragePolicy; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import org.apache.hadoop.hdfs.protocol.DatanodeInfo.DatanodeInfoBuilder; import org.apache.hadoop.hdfs.protocol.DirectoryListing; @@ -56,6 +57,8 @@ import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -588,4 +591,50 @@ class JsonUtilClient { lastLocatedBlock, isLastBlockComplete, null, null); } + public static Collection getStoragePolicies( + Map json) { +Map policiesJson = (Map) json.get("BlockStoragePolicies"); +if (policiesJson != null) { + List objs = (List) policiesJson.get(BlockStoragePolicy.class + .getSimpleName()); + if (objs != null) { +BlockStoragePolicy[] storagePolicies = new BlockStoragePolicy[objs +.size()]; +for (int i = 0; i < objs.size(); i++) { + final Map m = (Map) objs.get(i); + BlockStoragePolicy blockStoragePolicy = toBlockStoragePolicy(m); + storagePolicies[i] = blockStoragePolicy; +} +return Arrays.asList(storagePolicies); + } +} +return new ArrayList(0); + } + + public static BlockStoragePolicy toBlockStoragePolicy(Map m) { +byte id = ((Number) m.get("id")).byteValue(); +String name = (String) m.get("name"); +StorageType[] storageTypes = toStorageTypes((List) m +.get("storageTypes")); +StorageType[] creationFallbacks = toStorageTypes((List) m +.get("creationFallbacks")); +StorageType[] replicationFallbacks = toStorageTypes((List) m +.get("replicationFallbacks")); +Boolean copyOnCreateFile = (Boolean) m.get("copyOnCreateFile"); +return new BlockStoragePolicy(id, name, storageTypes, creationFallbacks, +replicationFallbacks, copyOnCreateFile.booleanValue()); + } + + private static StorageType[] toStorageTypes(List list) { +if (list == null) { + return null; +} else { + StorageType[] storageTypes = new StorageType[list.size()]; + for
hadoop git commit: HDFS-9057. allow/disallow snapshots via webhdfs (Contributed by Brahma Reddy Battula)
Repository: hadoop Updated Branches: refs/heads/branch-2.8 879caf688 -> 7dc22dbe0 HDFS-9057. allow/disallow snapshots via webhdfs (Contributed by Brahma Reddy Battula) (cherry picked from commit 6d2332ae375e26d024358c6e75fdb3c68a781a66) (cherry picked from commit 4b21b47f5607027672403fce211165abe03b9a77) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7dc22dbe Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7dc22dbe Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7dc22dbe Branch: refs/heads/branch-2.8 Commit: 7dc22dbe0cd330403c117a7f1ae9370a76914a9f Parents: 879caf6 Author: Vinayakumar BAuthored: Sun Nov 8 16:24:27 2015 +0530 Committer: Andrew Wang Committed: Wed Dec 7 15:58:29 2016 -0800 -- .../hadoop/hdfs/web/WebHdfsFileSystem.java | 12 + .../hadoop/hdfs/web/resources/PutOpParam.java | 2 + .../web/resources/NamenodeWebHdfsMethods.java | 8 +++ .../org/apache/hadoop/hdfs/web/TestWebHDFS.java | 55 4 files changed, 77 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dc22dbe/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java index 8c6718e..d724be7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java @@ -1227,6 +1227,12 @@ public class WebHdfsFileSystem extends FileSystem new FsPathRunner(op, p, new AclPermissionParam(aclSpec)).run(); } + public void allowSnapshot(final Path p) throws IOException { +statistics.incrementWriteOps(1); +final HttpOpParam.Op op = PutOpParam.Op.ALLOWSNAPSHOT; +new FsPathRunner(op, p).run(); + } + @Override public Path createSnapshot(final Path path, final String snapshotName) throws IOException { @@ -1242,6 +1248,12 @@ public class WebHdfsFileSystem extends FileSystem }.run(); } + public void disallowSnapshot(final Path p) throws IOException { +statistics.incrementWriteOps(1); +final HttpOpParam.Op op = PutOpParam.Op.DISALLOWSNAPSHOT; +new FsPathRunner(op, p).run(); + } + @Override public void deleteSnapshot(final Path path, final String snapshotName) throws IOException { http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dc22dbe/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java index d1e08fd..f36f874 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java @@ -46,6 +46,8 @@ public class PutOpParam extends HttpOpParam { SETXATTR(false, HttpURLConnection.HTTP_OK), REMOVEXATTR(false, HttpURLConnection.HTTP_OK), +ALLOWSNAPSHOT(false, HttpURLConnection.HTTP_OK), +DISALLOWSNAPSHOT(false, HttpURLConnection.HTTP_OK), CREATESNAPSHOT(false, HttpURLConnection.HTTP_OK), RENAMESNAPSHOT(false, HttpURLConnection.HTTP_OK), http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dc22dbe/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java index 1941b77..5595691 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java @@ -633,6 +633,10 @@ public class NamenodeWebHdfsMethods { np.removeXAttr(fullpath, XAttrHelper.buildXAttr(xattrName.getXAttrName())); return
hadoop git commit: HDFS-9057. allow/disallow snapshots via webhdfs (Contributed by Brahma Reddy Battula)
Repository: hadoop Updated Branches: refs/heads/branch-2 9cba7c6d7 -> 4b21b47f5 HDFS-9057. allow/disallow snapshots via webhdfs (Contributed by Brahma Reddy Battula) (cherry picked from commit 6d2332ae375e26d024358c6e75fdb3c68a781a66) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4b21b47f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4b21b47f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4b21b47f Branch: refs/heads/branch-2 Commit: 4b21b47f5607027672403fce211165abe03b9a77 Parents: 9cba7c6 Author: Vinayakumar BAuthored: Sun Nov 8 16:24:27 2015 +0530 Committer: Andrew Wang Committed: Wed Dec 7 15:58:15 2016 -0800 -- .../hadoop/hdfs/web/WebHdfsFileSystem.java | 12 + .../hadoop/hdfs/web/resources/PutOpParam.java | 2 + .../web/resources/NamenodeWebHdfsMethods.java | 8 +++ .../org/apache/hadoop/hdfs/web/TestWebHDFS.java | 55 4 files changed, 77 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/4b21b47f/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java index c0d6de9..308e0d8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java @@ -1231,6 +1231,12 @@ public class WebHdfsFileSystem extends FileSystem new FsPathRunner(op, p, new AclPermissionParam(aclSpec)).run(); } + public void allowSnapshot(final Path p) throws IOException { +statistics.incrementWriteOps(1); +final HttpOpParam.Op op = PutOpParam.Op.ALLOWSNAPSHOT; +new FsPathRunner(op, p).run(); + } + @Override public Path createSnapshot(final Path path, final String snapshotName) throws IOException { @@ -1246,6 +1252,12 @@ public class WebHdfsFileSystem extends FileSystem }.run(); } + public void disallowSnapshot(final Path p) throws IOException { +statistics.incrementWriteOps(1); +final HttpOpParam.Op op = PutOpParam.Op.DISALLOWSNAPSHOT; +new FsPathRunner(op, p).run(); + } + @Override public void deleteSnapshot(final Path path, final String snapshotName) throws IOException { http://git-wip-us.apache.org/repos/asf/hadoop/blob/4b21b47f/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java index d1e08fd..f36f874 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/PutOpParam.java @@ -46,6 +46,8 @@ public class PutOpParam extends HttpOpParam { SETXATTR(false, HttpURLConnection.HTTP_OK), REMOVEXATTR(false, HttpURLConnection.HTTP_OK), +ALLOWSNAPSHOT(false, HttpURLConnection.HTTP_OK), +DISALLOWSNAPSHOT(false, HttpURLConnection.HTTP_OK), CREATESNAPSHOT(false, HttpURLConnection.HTTP_OK), RENAMESNAPSHOT(false, HttpURLConnection.HTTP_OK), http://git-wip-us.apache.org/repos/asf/hadoop/blob/4b21b47f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java index 80bff88..91a9d37 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java @@ -645,6 +645,10 @@ public class NamenodeWebHdfsMethods { np.removeXAttr(fullpath, XAttrHelper.buildXAttr(xattrName.getXAttrName())); return Response.ok().type(MediaType.APPLICATION_OCTET_STREAM).build(); } +case ALLOWSNAPSHOT: { +
hadoop git commit: YARN-5963. Spelling errors in logging and exceptions for node manager, client, web-proxy, common, and app history code (gsohn via rkanter)
Repository: hadoop Updated Branches: refs/heads/branch-2 0aaaeea26 -> 9cba7c6d7 YARN-5963. Spelling errors in logging and exceptions for node manager, client, web-proxy, common, and app history code (gsohn via rkanter) (cherry picked from commit 72fe54684198b7df5c5fb2114616dff6d17a4402) Conflicts: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9cba7c6d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9cba7c6d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9cba7c6d Branch: refs/heads/branch-2 Commit: 9cba7c6d718a2dc2e786d8abb77d4b6701173adc Parents: 0aaaeea Author: Robert KanterAuthored: Wed Dec 7 15:07:25 2016 -0800 Committer: Robert Kanter Committed: Wed Dec 7 15:09:37 2016 -0800 -- .../src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java | 2 +- .../main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java | 2 +- .../src/main/java/org/apache/hadoop/yarn/util/FSDownload.java| 2 +- .../apache/hadoop/registry/client/impl/zk/RegistrySecurity.java | 2 +- .../ApplicationHistoryManagerOnTimelineStore.java| 2 +- .../yarn/server/nodemanager/WindowsSecureContainerExecutor.java | 4 ++-- .../yarn/server/nodemanager/containermanager/AuxServices.java| 4 ++-- .../nodemanager/containermanager/ContainerManagerImpl.java | 2 +- .../containermanager/localizer/ResourceLocalizationService.java | 2 +- .../containermanager/logaggregation/AppLogAggregatorImpl.java| 2 +- .../org/apache/hadoop/yarn/server/webproxy/ProxyUriUtils.java| 2 +- .../java/org/apache/hadoop/yarn/server/webproxy/WebAppProxy.java | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9cba7c6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java index d2d9051..8963d34 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java @@ -240,7 +240,7 @@ public class LogsCLI extends Configured implements Tool { if (appState == YarnApplicationState.NEW || appState == YarnApplicationState.NEW_SAVING || appState == YarnApplicationState.SUBMITTED) { -System.err.println("Logs are not avaiable right now."); +System.err.println("Logs are not available right now."); return -1; } } catch (IOException | YarnException e) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/9cba7c6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java index 7779ddf..2508c3e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java @@ -379,7 +379,7 @@ public class RMAdminCLI extends HAAdmin { } if (nodesDecommissioning) { System.out.println("Graceful decommissioning not completed in " + timeout - + " seconds, issueing forceful decommissioning command."); + + " seconds, issuing forceful decommissioning command."); RefreshNodesRequest forcefulRequest = RefreshNodesRequest .newInstance(DecommissionType.FORCEFUL); adminProtocol.refreshNodes(forcefulRequest); http://git-wip-us.apache.org/repos/asf/hadoop/blob/9cba7c6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java index
hadoop git commit: YARN-5963. Spelling errors in logging and exceptions for node manager, client, web-proxy, common, and app history code (gsohn via rkanter)
Repository: hadoop Updated Branches: refs/heads/trunk a793cec2c -> 72fe54684 YARN-5963. Spelling errors in logging and exceptions for node manager, client, web-proxy, common, and app history code (gsohn via rkanter) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/72fe5468 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/72fe5468 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/72fe5468 Branch: refs/heads/trunk Commit: 72fe54684198b7df5c5fb2114616dff6d17a4402 Parents: a793cec Author: Robert KanterAuthored: Wed Dec 7 15:07:25 2016 -0800 Committer: Robert Kanter Committed: Wed Dec 7 15:07:25 2016 -0800 -- .../src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java | 2 +- .../main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java | 2 +- .../apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java | 2 +- .../src/main/java/org/apache/hadoop/yarn/util/FSDownload.java| 2 +- .../apache/hadoop/registry/client/impl/zk/RegistrySecurity.java | 2 +- .../ApplicationHistoryManagerOnTimelineStore.java| 2 +- .../yarn/server/nodemanager/WindowsSecureContainerExecutor.java | 4 ++-- .../yarn/server/nodemanager/containermanager/AuxServices.java| 4 ++-- .../nodemanager/containermanager/ContainerManagerImpl.java | 2 +- .../containermanager/localizer/ResourceLocalizationService.java | 2 +- .../containermanager/logaggregation/AppLogAggregatorImpl.java| 2 +- .../org/apache/hadoop/yarn/server/webproxy/ProxyUriUtils.java| 2 +- .../java/org/apache/hadoop/yarn/server/webproxy/WebAppProxy.java | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/72fe5468/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java index 25e3a46..9b21ff8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java @@ -240,7 +240,7 @@ public class LogsCLI extends Configured implements Tool { if (appState == YarnApplicationState.NEW || appState == YarnApplicationState.NEW_SAVING || appState == YarnApplicationState.SUBMITTED) { -System.err.println("Logs are not avaiable right now."); +System.err.println("Logs are not available right now."); return -1; } } catch (IOException | YarnException e) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/72fe5468/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java index 7779ddf..2508c3e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java @@ -379,7 +379,7 @@ public class RMAdminCLI extends HAAdmin { } if (nodesDecommissioning) { System.out.println("Graceful decommissioning not completed in " + timeout - + " seconds, issueing forceful decommissioning command."); + + " seconds, issuing forceful decommissioning command."); RefreshNodesRequest forcefulRequest = RefreshNodesRequest .newInstance(DecommissionType.FORCEFUL); adminProtocol.refreshNodes(forcefulRequest); http://git-wip-us.apache.org/repos/asf/hadoop/blob/72fe5468/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java index 4103fd6..b275a94 100644 ---
hadoop git commit: MAPREDUCE-6817. The format of job start time in JHS is different from those of submit and finish time. (Haibo Chen via kasha)
Repository: hadoop Updated Branches: refs/heads/branch-2 a636a8727 -> 0aaaeea26 MAPREDUCE-6817. The format of job start time in JHS is different from those of submit and finish time. (Haibo Chen via kasha) (cherry picked from commit a793cec2c9a7ad80aaf67be9dec2245e8ecce63c) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0aaaeea2 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0aaaeea2 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0aaaeea2 Branch: refs/heads/branch-2 Commit: 0aaaeea268a1808a41f9209186db5d441895d7db Parents: a636a87 Author: Karthik KambatlaAuthored: Wed Dec 7 13:36:49 2016 -0800 Committer: Karthik Kambatla Committed: Wed Dec 7 13:37:12 2016 -0800 -- .../mapreduce/v2/hs/webapp/HsJobsBlock.java | 2 +- .../mapreduce/v2/hs/webapp/dao/JobInfo.java | 15 +- .../mapreduce/v2/hs/webapp/dao/TestJobInfo.java | 29 +++- 3 files changed, 43 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0aaaeea2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java -- diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java index 92c5e2b..b234ca3 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java @@ -79,7 +79,7 @@ public class HsJobsBlock extends HtmlBlock { JobInfo job = new JobInfo(j); jobsTableData.append("[\"") .append(dateFormat.format(new Date(job.getSubmitTime(.append("\",\"") - .append(job.getStartTimeStr()).append("\",\"") + .append(job.getFormattedStartTimeStr(dateFormat)).append("\",\"") .append(dateFormat.format(new Date(job.getFinishTime(.append("\",\"") .append("") .append(job.getId()).append("\",\"") http://git-wip-us.apache.org/repos/asf/hadoop/blob/0aaaeea2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java -- diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java index eddbccf..d12a729 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.mapreduce.v2.hs.webapp.dao; +import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -27,6 +28,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.mapreduce.JobACL; import org.apache.hadoop.mapreduce.v2.api.records.JobReport; import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId; @@ -44,7 +46,8 @@ import org.apache.hadoop.security.authorize.AccessControlList; @XmlRootElement(name = "job") @XmlAccessorType(XmlAccessType.FIELD) public class JobInfo { - private static final String NA = "N/A"; + @VisibleForTesting + static final String NA = "N/A"; protected long submitTime; protected long startTime; @@ -228,6 +231,16 @@ public class JobInfo { return this.startTime; } + public String getFormattedStartTimeStr(final DateFormat dateFormat) { +String str = NA; + +if (startTime >= 0) { + str = dateFormat.format(new Date(startTime)); +} + +return str; + } + public String getStartTimeStr() { String str = NA;
hadoop git commit: MAPREDUCE-6817. The format of job start time in JHS is different from those of submit and finish time. (Haibo Chen via kasha)
Repository: hadoop Updated Branches: refs/heads/trunk 9f5d2c4ff -> a793cec2c MAPREDUCE-6817. The format of job start time in JHS is different from those of submit and finish time. (Haibo Chen via kasha) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a793cec2 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a793cec2 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a793cec2 Branch: refs/heads/trunk Commit: a793cec2c9a7ad80aaf67be9dec2245e8ecce63c Parents: 9f5d2c4 Author: Karthik KambatlaAuthored: Wed Dec 7 13:36:49 2016 -0800 Committer: Karthik Kambatla Committed: Wed Dec 7 13:36:49 2016 -0800 -- .../mapreduce/v2/hs/webapp/HsJobsBlock.java | 2 +- .../mapreduce/v2/hs/webapp/dao/JobInfo.java | 15 +- .../mapreduce/v2/hs/webapp/dao/TestJobInfo.java | 29 +++- 3 files changed, 43 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a793cec2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java -- diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java index 92c5e2b..b234ca3 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java @@ -79,7 +79,7 @@ public class HsJobsBlock extends HtmlBlock { JobInfo job = new JobInfo(j); jobsTableData.append("[\"") .append(dateFormat.format(new Date(job.getSubmitTime(.append("\",\"") - .append(job.getStartTimeStr()).append("\",\"") + .append(job.getFormattedStartTimeStr(dateFormat)).append("\",\"") .append(dateFormat.format(new Date(job.getFinishTime(.append("\",\"") .append("") .append(job.getId()).append("\",\"") http://git-wip-us.apache.org/repos/asf/hadoop/blob/a793cec2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java -- diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java index eddbccf..d12a729 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.mapreduce.v2.hs.webapp.dao; +import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -27,6 +28,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.mapreduce.JobACL; import org.apache.hadoop.mapreduce.v2.api.records.JobReport; import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId; @@ -44,7 +46,8 @@ import org.apache.hadoop.security.authorize.AccessControlList; @XmlRootElement(name = "job") @XmlAccessorType(XmlAccessType.FIELD) public class JobInfo { - private static final String NA = "N/A"; + @VisibleForTesting + static final String NA = "N/A"; protected long submitTime; protected long startTime; @@ -228,6 +231,16 @@ public class JobInfo { return this.startTime; } + public String getFormattedStartTimeStr(final DateFormat dateFormat) { +String str = NA; + +if (startTime >= 0) { + str = dateFormat.format(new Date(startTime)); +} + +return str; + } + public String getStartTimeStr() { String str = NA; http://git-wip-us.apache.org/repos/asf/hadoop/blob/a793cec2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/test/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/TestJobInfo.java
[72/76] [abbrv] hadoop git commit: YARN-5961. Generate native services protobuf classes during build. Contributed by Billie Rinaldi
http://git-wip-us.apache.org/repos/asf/hadoop/blob/fc259d50/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java deleted file mode 100644 index 373d64d..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java +++ /dev/null @@ -1,34473 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: SliderClusterMessages.proto - -package org.apache.slider.api.proto; - -public final class Messages { - private Messages() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - public interface RoleInstanceStateOrBuilder - extends com.google.protobuf.MessageOrBuilder { - -// required string name = 1; -/** - * required string name = 1; - */ -boolean hasName(); -/** - * required string name = 1; - */ -java.lang.String getName(); -/** - * required string name = 1; - */ -com.google.protobuf.ByteString -getNameBytes(); - -// optional string role = 2; -/** - * optional string role = 2; - */ -boolean hasRole(); -/** - * optional string role = 2; - */ -java.lang.String getRole(); -/** - * optional string role = 2; - */ -com.google.protobuf.ByteString -getRoleBytes(); - -// required uint32 state = 4; -/** - * required uint32 state = 4; - */ -boolean hasState(); -/** - * required uint32 state = 4; - */ -int getState(); - -// required uint32 exitCode = 5; -/** - * required uint32 exitCode = 5; - */ -boolean hasExitCode(); -/** - * required uint32 exitCode = 5; - */ -int getExitCode(); - -// optional string command = 6; -/** - * optional string command = 6; - */ -boolean hasCommand(); -/** - * optional string command = 6; - */ -java.lang.String getCommand(); -/** - * optional string command = 6; - */ -com.google.protobuf.ByteString -getCommandBytes(); - -// optional string diagnostics = 7; -/** - * optional string diagnostics = 7; - */ -boolean hasDiagnostics(); -/** - * optional string diagnostics = 7; - */ -java.lang.String getDiagnostics(); -/** - * optional string diagnostics = 7; - */ -com.google.protobuf.ByteString -getDiagnosticsBytes(); - -// repeated string output = 8; -/** - * repeated string output = 8; - */ -java.util.List -getOutputList(); -/** - * repeated string output = 8; - */ -int getOutputCount(); -/** - * repeated string output = 8; - */ -java.lang.String getOutput(int index); -/** - * repeated string output = 8; - */ -com.google.protobuf.ByteString -getOutputBytes(int index); - -// repeated string environment = 9; -/** - * repeated string environment = 9; - */ -java.util.List -getEnvironmentList(); -/** - * repeated string environment = 9; - */ -int getEnvironmentCount(); -/** - * repeated string environment = 9; - */ -java.lang.String getEnvironment(int index); -/** - * repeated string environment = 9; - */ -com.google.protobuf.ByteString -getEnvironmentBytes(int index); - -// required uint32 roleId = 10; -/** - * required uint32 roleId = 10; - */ -boolean hasRoleId(); -/** - * required uint32 roleId = 10; - */ -int getRoleId(); - -// required bool released = 11; -/** - * required bool released = 11; - */ -boolean hasReleased(); -/** - * required bool released = 11; - */ -boolean getReleased(); - -// required int64 createTime = 12; -/** - * required int64 createTime = 12; - */ -boolean hasCreateTime(); -/** - * required int64 createTime = 12; - */ -long getCreateTime(); - -// required int64 startTime = 13; -/** - * required int64 startTime = 13; - */ -boolean hasStartTime(); -/** - * required int64 startTime = 13; - */ -long getStartTime(); - -// required string host = 14; -/** - * required string host = 14; - */ -boolean hasHost(); -/** - * required string host = 14; - */ -java.lang.String getHost(); -/** - * required string host = 14; - */ -
[37/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ClusterDescription.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ClusterDescription.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ClusterDescription.java new file mode 100644 index 000..f8e5e7c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/ClusterDescription.java @@ -0,0 +1,795 @@ +/* + * 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 org.apache.slider.api; + +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.slider.api.types.ApplicationLivenessInformation; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.providers.SliderProviderFactory; +import org.codehaus.jackson.JsonGenerationException; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.annotate.JsonIgnore; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.JsonMappingException; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.map.SerializationConfig; +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_HOME; +import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_IMAGE_PATH; +import static org.apache.slider.api.OptionKeys.ZOOKEEPER_PATH; +import static org.apache.slider.api.OptionKeys.ZOOKEEPER_QUORUM; + +/** + * Represents a cluster specification; designed to be sendable over the wire + * and persisted in JSON by way of Jackson. + * + * When used in cluster status operations the info + * and statistics maps contain information about the cluster. + * + * As a wire format it is less efficient in both xfer and ser/deser than + * a binary format, but by having one unified format for wire and persistence, + * the code paths are simplified. + * + * This was the original single-file specification/model used in the Hoya + * precursor to Slider. Its now retained primarily as a way to publish + * the current state of the application, or at least a fraction thereof ... + * the larger set of information from the REST API is beyond the scope of + * this structure. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) + +public class ClusterDescription implements Cloneable { + protected static final Logger +log = LoggerFactory.getLogger(ClusterDescription.class); + + private static final String UTF_8 = "UTF-8"; + + /** + * version counter + */ + public String version = "1.0"; + + /** + * Name of the cluster + */ + public String name; + + /** + * Type of cluster + */ + public String type = SliderProviderFactory.DEFAULT_CLUSTER_TYPE; + + /** + * State of the cluster + */ + public int state; + + /* + State list for both clusters and nodes in them. Ordered so that destroyed follows + stopped. + + Some of the states are only used for recording + the persistent state of the cluster and are not + seen in node descriptions + */ + + /** + * Specification is incomplete &
[76/76] [abbrv] hadoop git commit: YARN-5701. Fix issues in yarn native services apps-of-apps. Contributed by Billie Rinaldi
YARN-5701. Fix issues in yarn native services apps-of-apps. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7ec43e69 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7ec43e69 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7ec43e69 Branch: refs/heads/yarn-native-services Commit: 7ec43e697366cef4517f652a7248591d07166d2b Parents: be69595 Author: Jian HeAuthored: Sun Oct 16 17:01:09 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../org/apache/slider/client/SliderClient.java | 72 .../slider/core/buildutils/InstanceBuilder.java | 4 + .../apache/slider/providers/ProviderUtils.java | 62 -- .../providers/docker/DockerClientProvider.java | 4 +- .../providers/docker/DockerProviderService.java | 87 5 files changed, 164 insertions(+), 65 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7ec43e69/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 2840c4b..94e51e5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -178,6 +178,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; +import java.io.Console; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -918,57 +919,56 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe return; } -BufferedReader br = null; -try { - for (Entry cred : tree.credentials.entrySet()) { -String provider = cred.getKey() -.replaceAll(Pattern.quote("${CLUSTER_NAME}"), clusterName) -.replaceAll(Pattern.quote("${CLUSTER}"), clusterName); -List aliases = cred.getValue(); -if (aliases == null || aliases.isEmpty()) { - continue; -} -Configuration c = new Configuration(conf); -c.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, provider); -CredentialProvider credentialProvider = CredentialProviderFactory.getProviders(c).get(0); -Set existingAliases = new HashSet<>(credentialProvider.getAliases()); -for (String alias : aliases) { - if (existingAliases.contains(alias.toLowerCase(Locale.ENGLISH))) { -log.info("Credentials for " + alias + " found in " + provider); - } else { -if (br == null) { - br = new BufferedReader(new InputStreamReader(System.in)); -} -char[] pass = readPassword(alias, br); -credentialProvider.createCredentialEntry(alias, pass); -credentialProvider.flush(); -Arrays.fill(pass, ' '); +Console console = System.console(); +for (Entry cred : tree.credentials.entrySet()) { + String provider = cred.getKey() + .replaceAll(Pattern.quote("${CLUSTER_NAME}"), clusterName) + .replaceAll(Pattern.quote("${CLUSTER}"), clusterName); + List aliases = cred.getValue(); + if (aliases == null || aliases.isEmpty()) { +continue; + } + Configuration c = new Configuration(conf); + c.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, provider); + CredentialProvider credentialProvider = CredentialProviderFactory.getProviders(c).get(0); + Set existingAliases = new HashSet<>(credentialProvider.getAliases()); + for (String alias : aliases) { +if (existingAliases.contains(alias.toLowerCase(Locale.ENGLISH))) { + log.info("Credentials for " + alias + " found in " + provider); +} else { + if (console == null) { +throw new IOException("Unable to input password for " + alias + +" because System.console() is null; provider " + provider + +" must be populated manually"); } + char[] pass = readPassword(alias, console); +
[74/76] [abbrv] hadoop git commit: YARN-5812. Exception during GET call - "Failed to retrieve application: null". Contributed by Gour Saha
YARN-5812. Exception during GET call - "Failed to retrieve application: null". Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fc6901a7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fc6901a7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fc6901a7 Branch: refs/heads/yarn-native-services Commit: fc6901a7ae6dcee08faf149cc4026a15a4cbc908 Parents: 92f6fe5 Author: Jian HeAuthored: Wed Nov 2 15:55:48 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../api/impl/ApplicationApiService.java | 36 ++-- 1 file changed, 26 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fc6901a7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index 37bd134..6db69ac 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -50,7 +50,6 @@ import javax.ws.rs.core.Response.Status; import org.apache.commons.lang.SerializationUtils; import org.apache.commons.lang.StringUtils; -import org.apache.hadoop.fs.PathNotFoundException; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.conf.YarnConfiguration; @@ -905,6 +904,10 @@ public class ApplicationApiService implements ApplicationApi { // state String appState = jsonGetAsString(appStatus, "state"); +if (appState == null) { + // consider that app is still in ACCEPTED state + appState = String.valueOf(StateValues.STATE_INCOMPLETE); +} switch (Integer.parseInt(appState)) { case StateValues.STATE_LIVE: app.setState(ApplicationState.STARTED); @@ -1069,6 +1072,9 @@ public class ApplicationApiService implements ApplicationApi { String status = null; try { status = sliderClient.actionStatus(appName); +} catch (BadClusterStateException e) { + logger.warn("Application not running yet", e); + return EMPTY_JSON_OBJECT; } catch (Exception e) { logger.error("Exception calling slider.actionStatus", e); return EMPTY_JSON_OBJECT; @@ -1097,7 +1103,7 @@ public class ApplicationApiService implements ApplicationApi { try { registry = sliderClient.actionRegistryGetConfig(registryArgs) .asJson(); -} catch (FileNotFoundException | PathNotFoundException e) { +} catch (FileNotFoundException | NotFoundException e) { // ignore and return empty object return EMPTY_JSON_OBJECT; } catch (Exception e) { @@ -1192,23 +1198,33 @@ public class ApplicationApiService implements ApplicationApi { // little longer for it to stop from YARN point of view. Slider destroy // fails if the application is not completely stopped. Hence the need to // call destroy in a controlled loop few times (only if exit code is -// EXIT_APPLICATION_IN_USE), before giving up. +// EXIT_APPLICATION_IN_USE or EXIT_INSTANCE_EXISTS), before giving up. boolean keepTrying = true; -int maxDeleteAttempt = 5; -int deleteAttempt = 0; -while (keepTrying && deleteAttempt < maxDeleteAttempt) { +int maxDeleteAttempts = 5; +int deleteAttempts = 0; +int sleepIntervalInMillis = 500; +while (keepTrying && deleteAttempts < maxDeleteAttempts) { try { destroySliderApplication(appName); keepTrying = false; } catch (SliderException e) { -logger.error("Delete application threw exception", e); -if (e.getExitCode() == SliderExitCodes.EXIT_APPLICATION_IN_USE) { - deleteAttempt++; +if (e.getExitCode() == SliderExitCodes.EXIT_APPLICATION_IN_USE +|| e.getExitCode() == SliderExitCodes.EXIT_INSTANCE_EXISTS) { + deleteAttempts++; + // If we used up all the allowed
[61/76] [abbrv] hadoop git commit: YARN-5909. Remove agent related code in slider AM. Contributed by Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java deleted file mode 100644 index 499812e..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java +++ /dev/null @@ -1,2850 +0,0 @@ -/* - * 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 org.apache.slider.providers.agent; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.registry.client.types.Endpoint; -import org.apache.hadoop.registry.client.types.ProtocolTypes; -import org.apache.hadoop.registry.client.types.ServiceRecord; -import org.apache.hadoop.util.StringUtils; -import org.apache.hadoop.yarn.api.ApplicationConstants; -import org.apache.hadoop.yarn.api.records.Container; -import org.apache.hadoop.yarn.api.records.ContainerId; -import org.apache.hadoop.yarn.api.records.LocalResource; -import org.apache.hadoop.yarn.api.records.LocalResourceType; -import org.apache.slider.api.ClusterDescription; -import org.apache.slider.api.ClusterNode; -import org.apache.slider.api.InternalKeys; -import org.apache.slider.api.OptionKeys; -import org.apache.slider.api.ResourceKeys; -import org.apache.slider.api.StatusKeys; -import org.apache.slider.common.SliderExitCodes; -import org.apache.slider.common.SliderKeys; -import org.apache.slider.common.SliderXmlConfKeys; -import org.apache.slider.common.tools.SliderFileSystem; -import org.apache.slider.common.tools.SliderUtils; -import org.apache.slider.core.conf.AggregateConf; -import org.apache.slider.core.conf.ConfTreeOperations; -import org.apache.slider.core.conf.MapOperations; -import org.apache.slider.core.exceptions.BadConfigException; -import org.apache.slider.core.exceptions.NoSuchNodeException; -import org.apache.slider.core.exceptions.SliderException; -import org.apache.slider.core.launch.CommandLineBuilder; -import org.apache.slider.core.launch.ContainerLauncher; -import org.apache.slider.core.registry.docstore.ConfigFormat; -import org.apache.slider.core.registry.docstore.ConfigUtils; -import org.apache.slider.core.registry.docstore.ExportEntry; -import org.apache.slider.core.registry.docstore.PublishedConfiguration; -import org.apache.slider.core.registry.docstore.PublishedExports; -import org.apache.slider.core.registry.info.CustomRegistryConstants; -import org.apache.slider.providers.AbstractProviderService; -import org.apache.slider.providers.MonitorDetail; -import org.apache.slider.providers.ProviderCore; -import org.apache.slider.providers.ProviderRole; -import org.apache.slider.providers.ProviderUtils; -import org.apache.slider.providers.agent.application.metadata.AbstractComponent; -import org.apache.slider.providers.agent.application.metadata.Application; -import org.apache.slider.providers.agent.application.metadata.CommandOrder; -import org.apache.slider.providers.agent.application.metadata.CommandScript; -import org.apache.slider.providers.agent.application.metadata.Component; -import org.apache.slider.providers.agent.application.metadata.ComponentCommand; -import org.apache.slider.providers.agent.application.metadata.ComponentExport; -import org.apache.slider.providers.agent.application.metadata.ComponentsInAddonPackage; -import org.apache.slider.providers.agent.application.metadata.ConfigFile; -import org.apache.slider.providers.agent.application.metadata.DefaultConfig; -import
[51/76] [abbrv] hadoop git commit: YARN-5828. Native services client errors out when config formats are uppercase. Contributed by Billie Rinaldi
YARN-5828. Native services client errors out when config formats are uppercase. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2d644dfb Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2d644dfb Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2d644dfb Branch: refs/heads/yarn-native-services Commit: 2d644dfbddb601c4576634cbe6e92c7ae1cfc3f6 Parents: fc6901a Author: Gour SahaAuthored: Thu Nov 3 18:15:44 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../org/apache/slider/core/registry/docstore/ConfigFormat.java | 4 +++- .../src/main/java/org/apache/slider/providers/ProviderUtils.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d644dfb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java index ddab606..723b975 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java @@ -18,6 +18,8 @@ package org.apache.slider.core.registry.docstore; +import java.util.Locale; + public enum ConfigFormat { JSON("json"), @@ -51,7 +53,7 @@ public enum ConfigFormat { */ public static ConfigFormat resolve(String type) { for (ConfigFormat format: values()) { - if (format.getSuffix().equals(type)) { + if (format.getSuffix().equals(type.toLowerCase(Locale.ENGLISH))) { return format; } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d644dfb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java index c5e6782..39986c1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java @@ -611,7 +611,7 @@ public class ProviderUtils implements RoleKeys, SliderKeys { } ConfigFormat configFormat = ConfigFormat.resolve(configFileType); if (configFormat == null) { -throw new BadConfigException("Config format " + configFormat + +throw new BadConfigException("Config format " + configFileType + " doesn't exist"); } localizeConfigFile(launcher, roleName, roleGroup, configEntry.getKey(), - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[55/76] [abbrv] hadoop git commit: YARN-5958. Fix ASF license warnings for slider core module. Contributed by Billie Rinaldi
YARN-5958. Fix ASF license warnings for slider core module. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/89e87080 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/89e87080 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/89e87080 Branch: refs/heads/yarn-native-services Commit: 89e870806c584095e07ac74060611cc23e92eb18 Parents: 0c1ad96 Author: Gour SahaAuthored: Thu Dec 1 17:45:44 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../hadoop-yarn-slider-core/pom.xml | 61 +--- .../src/license/THIRD-PARTY.properties | 33 --- 2 files changed, 14 insertions(+), 80 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/89e87080/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml index 66e9ee9..10cf6b1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml @@ -78,6 +78,20 @@ + +org.apache.rat +apache-rat-plugin + + +**/*.json +src/main/resources/webapps/slideram/.keep + + src/main/java/org/apache/slider/api/proto/Messages.java + src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java + + + + @@ -384,53 +398,6 @@ - - - rat - - - - -org.apache.rat -apache-rat-plugin - - -check-licenses - - check - - - - - -**/*.json -src/test/python/agent.ini -src/test/python/version -**/THIRD-PARTY.properties -src/main/resources/webapps/slideram/.keep -src/main/resources/webapps/slideragent/.keep - src/main/resources/webapps/static/yarn.dt.plugins.js - - src/main/resources/webapps/static/dt-1.9.4/** - - src/main/resources/webapps/static/jquery/jquery-1.8.2.min.js - - src/main/resources/webapps/static/jquery/jquery-ui-1.9.1.custom.min.js - src/main/resources/webapps/static/jquery/themes-1.9.1/base/jquery-ui.css - - src/main/resources/webapps/static/jt/jquery.jstree.js - - src/main/java/org/apache/slider/api/proto/Messages.java - src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java - src/test/app_packages/test_am_config/resources/test.template - src/test/app_packages/test_am_config/test_archive/testfile - - - - - - - http://git-wip-us.apache.org/repos/asf/hadoop/blob/89e87080/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/license/THIRD-PARTY.properties -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/license/THIRD-PARTY.properties b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/license/THIRD-PARTY.properties deleted file mode 100644 index 1abd56e..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/license/THIRD-PARTY.properties +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by org.codehaus.mojo.license.AddThirdPartyMojo -#--- -# Already used licenses in project : -# - Apache License -# - BSD -# - CDDL + GPLv2 with classpath exception -# - CDDL 1.1 -# - CDDL License -# - CDDL+GPL -# - Common Public License Version 1.0 -# - Eclipse Public License - Version 1.0 -# - GNU Lesser General Public License (LGPL), Version 2.1 -# - GNU Lesser General Public License, Version 2.1 -# - GPL2 w/ CPE -# - MIT License -# - MPL 1.1 -# - New BSD License -# - Public
[58/76] [abbrv] hadoop git commit: YARN-5909. Remove agent related code in slider AM. Contributed by Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java index a0fe310..bd4d2bf 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java @@ -23,7 +23,6 @@ import org.apache.slider.server.appmaster.actions.QueueAccess; import org.apache.slider.server.appmaster.management.MetricsAndMonitoring; import org.apache.slider.server.appmaster.state.RoleStatus; import org.apache.slider.server.appmaster.state.StateAccessForProviders; -import org.apache.slider.server.appmaster.web.rest.agent.AgentRestOperations; import org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache; import org.apache.slider.server.services.security.CertificateManager; import org.slf4j.Logger; @@ -97,11 +96,6 @@ public class WebAppApiImpl implements WebAppApi { } @Override - public AgentRestOperations getAgentRestOperations() { -return provider.getAgentRestOperations(); - } - - @Override public RegistryOperations getRegistryOperations() { return registryOperations; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWebServices.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWebServices.java index 03bf703..aed87d8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWebServices.java @@ -19,7 +19,6 @@ package org.apache.slider.server.appmaster.web.rest; import com.google.inject.Inject; import com.google.inject.Singleton; import org.apache.slider.server.appmaster.web.WebAppApi; -import org.apache.slider.server.appmaster.web.rest.agent.AgentResource; import org.apache.slider.server.appmaster.web.rest.application.ApplicationResource; import org.apache.slider.server.appmaster.web.rest.management.ManagementResource; import org.apache.slider.server.appmaster.web.rest.publisher.PublisherResource; http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentCommandType.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentCommandType.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentCommandType.java deleted file mode 100644 index 17cd8f2..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentCommandType.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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
[67/76] [abbrv] hadoop git commit: YARN-5735. Make the service REST API use the app timeout feature YARN-4205. Contributed by Jian He
YARN-5735. Make the service REST API use the app timeout feature YARN-4205. Contributed by Jian He Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/be695958 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/be695958 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/be695958 Branch: refs/heads/yarn-native-services Commit: be695958b8216557f9aa46ed410ce9320cc094bf Parents: b279e66 Author: Gour SahaAuthored: Fri Oct 14 17:40:51 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../api/impl/ApplicationApiService.java | 10 -- .../org/apache/slider/client/SliderClient.java | 33 ++-- .../AbstractClusterBuildingActionArgs.java | 5 +++ .../slider/common/params/ActionThawArgs.java| 6 .../apache/slider/common/params/Arguments.java | 1 + 5 files changed, 36 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/be695958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index 21cf113..73df4a1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -347,7 +347,7 @@ public class ApplicationApiService implements ApplicationApi { if (queueName != null && queueName.trim().length() > 0) { createArgs.queue = queueName.trim(); } - +createArgs.lifetime = application.getLifetime(); return invokeSliderClientRunnable(new SliderClientContextRunnable() { @Override public String run(SliderClient sliderClient) throws YarnException, @@ -1246,13 +1246,17 @@ public class ApplicationApiService implements ApplicationApi { }); } - private Response startSliderApplication(final String appName) + private Response startSliderApplication(final String appName, Application app) throws IOException, YarnException, InterruptedException { return invokeSliderClientRunnable(new SliderClientContextRunnable() { @Override public Response run(SliderClient sliderClient) throws YarnException, IOException, InterruptedException { ActionThawArgs thawArgs = new ActionThawArgs(); +if (app.getLifetime() == null) { + app.setLifetime(DEFAULT_UNLIMITED_LIFETIME); +} +thawArgs.lifetime = app.getLifetime(); int returnCode = sliderClient.actionThaw(appName, thawArgs); if (returnCode == 0) { logger.info("Successfully started application {}", appName); @@ -1344,7 +1348,7 @@ public class ApplicationApiService implements ApplicationApi { try { int livenessCheck = getSliderList(appName); if (livenessCheck != 0) { - return startSliderApplication(appName); + return startSliderApplication(appName, updateAppData); } else { logger.info("Application {} is already running", appName); ApplicationStatus applicationStatus = new ApplicationStatus(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/be695958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index fe4f1d2..2840c4b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -54,6 +54,7 @@ import org.apache.hadoop.util.Shell;
[41/76] [abbrv] hadoop git commit: YARN-5513. Move Java only tests from slider develop to yarn-native-services. Contributed by Gour Saha
YARN-5513. Move Java only tests from slider develop to yarn-native-services. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a4beaeb8 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a4beaeb8 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a4beaeb8 Branch: refs/heads/yarn-native-services Commit: a4beaeb897721f2dfc6540b6bd3073b026b764fd Parents: 0437f8a Author: Jian HeAuthored: Wed Aug 17 00:42:24 2016 +0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../dev-support/findbugs-exclude.xml| 20 + .../hadoop-yarn-slider-core/pom.xml | 22 + .../slider/common/tools/TestSliderUtils.java| 159 .../core/launch/TestAppMasterLauncher.java | 157 .../TestAppMasterLauncherWithAmReset.java | 92 ++ .../TestPublishedConfigurationOutputter.java| 222 + .../agent/TestAgentClientProvider.java | 77 ++ .../agent/TestAgentLaunchParameter.java | 76 ++ .../slider/providers/agent/TestAgentUtils.java | 94 ++ .../agent/TestAppDefinitionPersister.java | 264 ++ .../agent/TestComponentTagProvider.java | 115 +++ .../slider/providers/agent/TestState.java | 33 + .../application/metadata/TestConfigParser.java | 107 +++ .../metadata/TestMetainfoParser.java| 177 .../appmaster/TestServiceRecordAttributes.java | 68 ++ .../publisher/TestAgentProviderService.java | 60 ++ .../publisher/TestSliderProviderFactory.java| 40 + .../server/servicemonitor/TestPortProbe.java| 37 + .../security/TestCertificateManager.java| 540 +++ .../TestMultiThreadedStoreGeneration.java | 156 .../server/services/workflow/MockService.java | 80 ++ .../workflow/ParentWorkflowTestBase.java| 70 ++ .../workflow/ProcessCommandFactory.java | 96 ++ .../services/workflow/SimpleRunnable.java | 46 + .../workflow/TestWorkflowClosingService.java| 116 +++ .../workflow/TestWorkflowCompositeService.java | 113 +++ .../workflow/TestWorkflowExecutorService.java | 66 ++ .../workflow/TestWorkflowRpcService.java| 107 +++ .../workflow/TestWorkflowSequenceService.java | 151 .../TestWorkflowServiceTerminatingRunnable.java | 64 ++ .../workflow/WorkflowServiceTestBase.java | 139 +++ .../apache/slider/test/ContractTestUtils.java | 901 +++ .../slider/test/MiniZooKeeperCluster.java | 395 .../org/apache/slider/tools/TestUtility.java| 181 .../slider/common/tools/test/metainfo.txt | 16 + .../slider/common/tools/test/metainfo.xml | 98 ++ .../slider/common/tools/test/someOtherFile.txt | 16 + .../slider/common/tools/test/someOtherFile.xml | 17 + .../agent/application/metadata/metainfo.xml | 180 39 files changed, 5368 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4beaeb8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/dev-support/findbugs-exclude.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/dev-support/findbugs-exclude.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/dev-support/findbugs-exclude.xml new file mode 100644 index 000..b89146a --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/dev-support/findbugs-exclude.xml @@ -0,0 +1,20 @@ + + + + + http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4beaeb8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml index 591a5ca..d778f44 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml @@ -129,6 +129,13 @@ org.apache.hadoop + hadoop-common + test-jar + test + + + + org.apache.hadoop hadoop-hdfs @@ -268,6 +275,20 @@ + org.easymock + easymock + 3.1 + test + + + + org.powermock + powermock-api-easymock + 1.5 + test + + +
[56/76] [abbrv] hadoop git commit: YARN-5690. Integrate native services modules into maven build. Contributed by Billie Rinaldi
YARN-5690. Integrate native services modules into maven build. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/00c38659 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/00c38659 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/00c38659 Branch: refs/heads/yarn-native-services Commit: 00c38659e43d6b99de43212470ed7a4c8d45d48a Parents: 432974a Author: Gour SahaAuthored: Thu Oct 27 08:50:36 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../resources/assemblies/hadoop-yarn-dist.xml | 26 .../assemblies/hadoop-yarn-services-api.xml | 36 +++ .../assemblies/hadoop-yarn-slider-dist.xml | 30 + hadoop-project/pom.xml | 6 ++ hadoop-yarn-project/hadoop-yarn/bin/yarn| 30 + .../hadoop-yarn-services-api/pom.xml| 44 +++-- .../conf/slideram-log4j.properties | 68 .../hadoop-yarn-slider-core/pom.xml | 38 +++ .../org/apache/slider/client/SliderClient.java | 29 +++-- .../org/apache/slider/common/SliderKeys.java| 2 +- .../apache/slider/common/tools/SliderUtils.java | 48 ++ .../providers/agent/AgentClientProvider.java| 3 +- .../slideram/SliderAMClientProvider.java| 15 +++-- .../TestPublishedConfigurationOutputter.java| 10 ++- 14 files changed, 343 insertions(+), 42 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/00c38659/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml -- diff --git a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml index c3f459c..552087c 100644 --- a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml +++ b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml @@ -86,6 +86,32 @@ + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/target + /share/hadoop/${hadoop.component}/sources + +*-sources.jar + + + + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/conf + etc/hadoop + + + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/target/hadoop-yarn-slider-core-${project.version} + /share/hadoop/${hadoop.component}/lib/slider + + + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/target + /share/hadoop/${hadoop.component}/sources + +*-sources.jar + + + + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/target/hadoop-yarn-services-api-${project.version} + /share/hadoop/${hadoop.component}/lib/services-api + + hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/target /share/hadoop/${hadoop.component}/sources http://git-wip-us.apache.org/repos/asf/hadoop/blob/00c38659/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-services-api.xml -- diff --git a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-services-api.xml b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-services-api.xml new file mode 100644 index 000..589f724 --- /dev/null +++ b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-services-api.xml @@ -0,0 +1,36 @@ + +http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd;> + hadoop-yarn-services-api-dist + +dir + + false + + + false + +com.fasterxml.jackson.jaxrs:jackson-jaxrs-base + com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider + com.fasterxml.jackson.module:jackson-module-jaxb-annotations +io.swagger:swagger-annotations + + + + http://git-wip-us.apache.org/repos/asf/hadoop/blob/00c38659/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-slider-dist.xml -- diff --git a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-slider-dist.xml b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-slider-dist.xml new file mode 100644 index 000..5de45a9 --- /dev/null +++
[70/76] [abbrv] hadoop git commit: YARN-5796. Convert enums values in service code to upper case and special handling of an error. Contributed by Gour Saha
YARN-5796. Convert enums values in service code to upper case and special handling of an error. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c3f32f4c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c3f32f4c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c3f32f4c Branch: refs/heads/yarn-native-services Commit: c3f32f4c7309fde0bc352ef5ae9571be5d52e30d Parents: 00c3865 Author: Jian HeAuthored: Tue Nov 1 11:00:11 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../yarn/services/api/impl/ApplicationApiService.java | 4 .../apache/hadoop/yarn/services/resource/Artifact.java| 2 +- .../apache/hadoop/yarn/services/resource/ConfigFile.java | 4 ++-- .../hadoop/yarn/services/resource/ReadinessCheck.java | 2 +- .../hadoop/yarn/services/utils/RestApiErrorMessages.java | 10 +++--- 5 files changed, 15 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c3f32f4c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index cf43ac2..37bd134 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -172,6 +172,10 @@ public class ApplicationApiService implements ApplicationApi { applicationStatus.setDiagnostics(ERROR_APPLICATION_IN_USE); return Response.status(Status.BAD_REQUEST).entity(applicationStatus) .build(); + } else if (se.getExitCode() == SliderExitCodes.EXIT_INSTANCE_EXISTS) { +applicationStatus.setDiagnostics(ERROR_APPLICATION_INSTANCE_EXISTS); +return Response.status(Status.BAD_REQUEST).entity(applicationStatus) +.build(); } else { applicationStatus.setDiagnostics(se.getMessage()); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/c3f32f4c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Artifact.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Artifact.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Artifact.java index 9ac2bc7..87fcf89 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Artifact.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Artifact.java @@ -40,7 +40,7 @@ public class Artifact implements Serializable { private String id = null; public enum TypeEnum { -DOCKER("docker"), TARBALL("tarball"), APPLICATION("application"); +DOCKER("DOCKER"), TARBALL("TARBALL"), APPLICATION("APPLICATION"); private String value; http://git-wip-us.apache.org/repos/asf/hadoop/blob/c3f32f4c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ConfigFile.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ConfigFile.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ConfigFile.java index 3ced153..01d976f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ConfigFile.java +++
[59/76] [abbrv] hadoop git commit: YARN-5909. Remove agent related code in slider AM. Contributed by Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java deleted file mode 100644 index 78bb8c1..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * 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 org.apache.slider.providers.agent.application.metadata; - -import org.apache.slider.common.tools.SliderUtils; -import org.apache.slider.core.exceptions.BadConfigException; -import org.apache.slider.core.exceptions.SliderException; -import org.codehaus.jackson.annotate.JsonProperty; -import java.util.ArrayList; -import java.util.List; - -/** - * Component defined in master package metainfo.json - */ -public class Component extends AbstractComponent { - - String category = CATEGORY_MASTER; - String publishConfig = Boolean.FALSE.toString(); - String minInstanceCount = "0"; - String maxInstanceCount; - String autoStartOnFailure = Boolean.FALSE.toString(); - String appExports; - String compExports; - String type = TYPE_STANDARD; - List componentExports = new ArrayList<>(); - List dockerContainers = new ArrayList<>(); - List configFiles = new ArrayList<>(); - - public Component() { - } - - public String getType() { -return type; - } - - public void setType(String type) { -this.type = type; - } - - public String getCategory() { -return category; - } - - public void setCategory(String category) { -this.category = category; - } - - public String getPublishConfig() { -return publishConfig; - } - - public void setPublishConfig(String publishConfig) { -this.publishConfig = publishConfig; - } - - public String getAutoStartOnFailure() { -return autoStartOnFailure; - } - - public void setAutoStartOnFailure(String autoStartOnFailure) { -this.autoStartOnFailure = autoStartOnFailure; - } - - public String getAppExports() { -return appExports; - } - - public void setAppExports(String appExports) { -this.appExports = appExports; - } - - public String getCompExports() { -return compExports; - } - - public void setCompExports(String compExports) { -this.compExports = compExports; - } - - public String getMinInstanceCount() { -return minInstanceCount; - } - - @JsonProperty("dockerContainers") - public List getDockerContainers() { - return this.dockerContainers; - } - - public Boolean getAutoStartOnFailureBoolean() { -if (SliderUtils.isUnset(getAutoStartOnFailure())) { - return Boolean.FALSE; -} - -return Boolean.parseBoolean(getAutoStartOnFailure()); - } - - public int getMinInstanceCountInt() throws BadConfigException { -if (SliderUtils.isUnset(minInstanceCount)) { - return 0; -} - -try { - return Integer.parseInt(minInstanceCount); -} catch (NumberFormatException nfe) { - throw new BadConfigException(nfe, "Invalid value for minInstanceCount for %s", name); -} - } - - public int getMaxInstanceCountInt() throws BadConfigException { -if (SliderUtils.isUnset(maxInstanceCount)) { - return Integer.MAX_VALUE; -} - -try { - return Integer.parseInt(maxInstanceCount); -} catch (NumberFormatException nfe) { - throw new BadConfigException(nfe, "Invalid value for maxInstanceCount for %s", name); -} - } - - public void setMinInstanceCount(String minInstanceCount) { -this.minInstanceCount = minInstanceCount; - } - - public String getMaxInstanceCount() { -return
[53/76] [abbrv] hadoop git commit: YARN-5769. Integrate update app lifetime using feature implemented in YARN-5611. Contributed by Jian He
YARN-5769. Integrate update app lifetime using feature implemented in YARN-5611. Contributed by Jian He Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4f3033b4 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4f3033b4 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4f3033b4 Branch: refs/heads/yarn-native-services Commit: 4f3033b494fc723fafcfa5d0a901d39150539730 Parents: 427fe37 Author: Gour SahaAuthored: Wed Nov 30 23:24:45 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../api/impl/ApplicationApiService.java | 25 +-- .../org/apache/slider/client/SliderClient.java | 33 +--- .../AbstractClusterBuildingActionArgs.java | 3 +- 3 files changed, 53 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/4f3033b4/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index 6db69ac..c4f5d43 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -77,6 +77,7 @@ import org.apache.slider.common.params.ActionFreezeArgs; import org.apache.slider.common.params.ActionListArgs; import org.apache.slider.common.params.ActionRegistryArgs; import org.apache.slider.common.params.ActionThawArgs; +import org.apache.slider.common.params.ActionUpdateArgs; import org.apache.slider.common.params.ComponentArgsDelegate; import org.apache.slider.common.tools.SliderUtils; import org.apache.slider.common.tools.SliderVersionInfo; @@ -1398,14 +1399,34 @@ public class ApplicationApiService implements ApplicationApi { } // If new lifetime value specified then update it -if (updateAppData.getLifetime() != null) { - // TODO: Once YARN-3813 and YARN-4205 are available +if (updateAppData.getLifetime() != null +&& updateAppData.getLifetime() > 0) { + try { +updateAppLifetime(appName, updateAppData.getLifetime()); + } catch (Exception e) { +logger.error("Failed to update application (" + appName + ") lifetime (" ++ updateAppData.getLifetime() + ")", e); +return Response.status(Status.INTERNAL_SERVER_ERROR).build(); + } } // If nothing happens consider it a no-op return Response.status(Status.NO_CONTENT).build(); } + private Void updateAppLifetime(String appName, long lifetime) + throws InterruptedException, YarnException, IOException { +return invokeSliderClientRunnable(new SliderClientContextRunnable() { + @Override public Void run(SliderClient sliderClient) + throws YarnException, IOException, InterruptedException { +ActionUpdateArgs args = new ActionUpdateArgs(); +args.lifetime = lifetime; +sliderClient.actionUpdate(appName, args); +return null; + } +}); + } + // create default component and initialize with app level global values private List getDefaultComponentAsList(Application app) { List comps = getDefaultComponentAsList(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4f3033b4/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 3f2df0a..12f7870 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++
[38/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
YARN-5461. Initial code ported from slider-core module. (jianhe) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d8cab88d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d8cab88d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d8cab88d Branch: refs/heads/yarn-native-services Commit: d8cab88d2b3829299e2da4e3a6b8c26805ffdd46 Parents: 9f5d2c4 Author: Jian HeAuthored: Wed Aug 3 00:18:01 2016 +0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../hadoop-yarn-slider-core/pom.xml | 397 + .../src/assembly/executable-jar.xml |47 + .../src/license/THIRD-PARTY.properties |33 + .../slider/server/avro/RoleHistoryRecord.avsc | 114 + .../apache/hadoop/security/KerberosDiags.java | 676 + .../src/main/java/org/apache/slider/Slider.java |52 + .../apache/slider/api/ClusterDescription.java | 795 + .../slider/api/ClusterDescriptionKeys.java |25 + .../api/ClusterDescriptionOperations.java |93 + .../java/org/apache/slider/api/ClusterNode.java | 220 + .../org/apache/slider/api/InternalKeys.java | 199 + .../java/org/apache/slider/api/OptionKeys.java |58 + .../org/apache/slider/api/ResourceKeys.java | 201 + .../java/org/apache/slider/api/RoleKeys.java| 116 + .../apache/slider/api/SliderApplicationApi.java | 167 + .../slider/api/SliderClusterProtocol.java | 179 + .../java/org/apache/slider/api/StateValues.java |53 + .../java/org/apache/slider/api/StatusKeys.java | 117 + .../org/apache/slider/api/proto/Messages.java | 34473 + .../slider/api/proto/RestTypeMarshalling.java | 319 + .../slider/api/proto/SliderClusterAPI.java | 2293 ++ .../types/ApplicationLivenessInformation.java |53 + .../slider/api/types/ComponentInformation.java | 107 + .../slider/api/types/ContainerInformation.java |58 + .../slider/api/types/NodeEntryInformation.java |78 + .../slider/api/types/NodeInformation.java |59 + .../slider/api/types/NodeInformationList.java |41 + .../slider/api/types/PingInformation.java |47 + .../apache/slider/api/types/RoleStatistics.java |66 + .../api/types/SliderInstanceDescription.java|54 + .../slider/client/ClientRegistryBinder.java | 201 + .../org/apache/slider/client/ClientUtils.java | 111 + .../org/apache/slider/client/SliderClient.java | 4569 +++ .../apache/slider/client/SliderClientAPI.java | 368 + .../slider/client/SliderYarnClientImpl.java | 410 + .../apache/slider/client/TokensOperation.java | 109 + .../client/ipc/SliderApplicationIpcClient.java | 245 + .../client/ipc/SliderClusterOperations.java | 529 + .../slider/client/rest/BaseRestClient.java | 152 + .../slider/client/rest/RestClientFactory.java |89 + .../rest/SliderApplicationApiRestClient.java| 326 + .../org/apache/slider/common/Constants.java |35 + .../apache/slider/common/SliderExitCodes.java |88 + .../org/apache/slider/common/SliderKeys.java| 278 + .../common/SliderXMLConfKeysForTesting.java |83 + .../apache/slider/common/SliderXmlConfKeys.java | 206 + .../common/params/AbstractActionArgs.java | 178 + .../common/params/AbstractArgsDelegate.java |26 + .../AbstractClusterBuildingActionArgs.java | 217 + .../common/params/ActionAMSuicideArgs.java |44 + .../slider/common/params/ActionBuildArgs.java |32 + .../slider/common/params/ActionClientArgs.java |98 + .../slider/common/params/ActionCreateArgs.java |59 + .../common/params/ActionDependencyArgs.java |65 + .../slider/common/params/ActionDestroyArgs.java |37 + .../common/params/ActionDiagnosticArgs.java |73 + .../slider/common/params/ActionEchoArgs.java|33 + .../slider/common/params/ActionExistsArgs.java |47 + .../slider/common/params/ActionFlexArgs.java|54 + .../slider/common/params/ActionFreezeArgs.java |56 + .../slider/common/params/ActionHelpArgs.java|51 + .../common/params/ActionInstallKeytabArgs.java |57 + .../common/params/ActionInstallPackageArgs.java |58 + .../slider/common/params/ActionKDiagArgs.java |86 + .../slider/common/params/ActionKeytabArgs.java |81 + .../common/params/ActionKillContainerArgs.java |37 + .../slider/common/params/ActionListArgs.java|74 + .../slider/common/params/ActionLookupArgs.java |76 + .../slider/common/params/ActionNodesArgs.java |71 + .../slider/common/params/ActionPackageArgs.java |81 + .../common/params/ActionRegistryArgs.java | 218 + .../slider/common/params/ActionResolveArgs.java | 153 + .../common/params/ActionResourceArgs.java |68 +
[39/76] [abbrv] hadoop git commit: YARN-5513. Move Java only tests from slider develop to yarn-native-services. Contributed by Gour Saha
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4beaeb8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/ContractTestUtils.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/ContractTestUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/ContractTestUtils.java new file mode 100644 index 000..7eaaefe --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/test/ContractTestUtils.java @@ -0,0 +1,901 @@ +/* + * 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 org.apache.slider.test; + +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.junit.Assert; +import org.junit.internal.AssumptionViolatedException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.EOFException; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Arrays; +import java.util.Properties; +import java.util.UUID; + +/** + * Utilities used across test cases to make assertions about filesystems + * -assertions which fail with useful information. + * This is lifted from Hadoop common Test; that JAR isn't published, so + * we have to make do. + */ +public class ContractTestUtils extends Assert { + + private static final Logger LOG = + LoggerFactory.getLogger(ContractTestUtils.class); + + public static final String IO_FILE_BUFFER_SIZE = "io.file.buffer.size"; + + // For scale testing, we can repeatedly write small chunk data to generate + // a large file. + public static final String IO_CHUNK_BUFFER_SIZE = "io.chunk.buffer.size"; + public static final int DEFAULT_IO_CHUNK_BUFFER_SIZE = 128; + public static final String IO_CHUNK_MODULUS_SIZE = "io.chunk.modulus.size"; + public static final int DEFAULT_IO_CHUNK_MODULUS_SIZE = 128; + + /** + * Assert that a property in the property set matches the expected value + * @param props property set + * @param key property name + * @param expected expected value. If null, the property must not be in the set + */ + public static void assertPropertyEquals(Properties props, + String key, + String expected) { +String val = props.getProperty(key); +if (expected == null) { + assertNull("Non null property " + key + " = " + val, val); +} else { + assertEquals("property " + key + " = " + val, + expected, + val); +} + } + + /** + * + * Write a file and read it in, validating the result. Optional flags control + * whether file overwrite operations should be enabled, and whether the + * file should be deleted afterwards. + * + * If there is a mismatch between what was written and what was expected, + * a small range of bytes either side of the first error are logged to aid + * diagnosing what problem occurred -whether it was a previous file + * or a corrupting of the current file. This assumes that two + * sequential runs to the same path use datasets with different character + * moduli. + * + * @param fs filesystem + * @param path path to write to + * @param len length of data + * @param overwrite should the create option allow overwrites? + * @param delete should the file be deleted afterwards? -with a verification + * that it worked. Deletion is not attempted if an assertion has failed + * earlier -it is not in a finally{} block. + * @throws IOException IO problems + */ + public static void writeAndRead(FileSystem fs, + Path path, +
[62/76] [abbrv] hadoop git commit: YARN-5909. Remove agent related code in slider AM. Contributed by Jian He
YARN-5909. Remove agent related code in slider AM. Contributed by Jian He Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9fdab600 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9fdab600 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9fdab600 Branch: refs/heads/yarn-native-services Commit: 9fdab600e38b270587d6fc7afef727a7725104c0 Parents: 5877e0c Author: Jian HeAuthored: Tue Nov 29 13:06:45 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- hadoop-project/pom.xml |5 - .../services/webapp/ApplicationApiWebApp.java |2 +- .../hadoop-yarn-slider-core/pom.xml | 23 +- .../apache/slider/common/tools/SliderUtils.java |1 - .../providers/AbstractProviderService.java | 21 +- .../slider/providers/ProviderService.java |9 +- .../providers/agent/AgentClientProvider.java| 713 - .../providers/agent/AgentLaunchParameter.java | 130 - .../providers/agent/AgentProviderFactory.java | 47 - .../providers/agent/AgentProviderService.java | 2850 -- .../slider/providers/agent/AgentRoles.java | 38 - .../slider/providers/agent/AgentUtils.java | 150 - .../apache/slider/providers/agent/Command.java | 59 - .../slider/providers/agent/CommandResult.java | 40 - .../providers/agent/ComponentCommandOrder.java | 225 -- .../providers/agent/ComponentInstanceState.java | 340 --- .../providers/agent/ComponentTagProvider.java | 127 - .../slider/providers/agent/ContainerState.java | 41 - .../providers/agent/HeartbeatMonitor.java | 130 - .../apache/slider/providers/agent/State.java| 199 -- .../application/metadata/AbstractComponent.java | 80 - .../metadata/AbstractMetainfoParser.java| 130 - .../metadata/AbstractMetainfoSchema.java| 69 - .../metadata/AddonPackageMetainfoParser.java| 53 - .../agent/application/metadata/Application.java | 193 -- .../metadata/ApplicationPackage.java| 69 - .../application/metadata/CommandOrder.java | 61 - .../application/metadata/CommandScript.java | 72 - .../agent/application/metadata/Component.java | 217 -- .../application/metadata/ComponentCommand.java | 85 - .../application/metadata/ComponentExport.java | 54 - .../metadata/ComponentsInAddonPackage.java | 26 - .../agent/application/metadata/ConfigFile.java | 59 - .../application/metadata/DefaultConfig.java | 39 - .../metadata/DefaultConfigParser.java | 54 - .../application/metadata/DockerContainer.java | 187 -- .../metadata/DockerContainerInputFile.java | 50 - .../metadata/DockerContainerMount.java | 60 - .../metadata/DockerContainerPort.java | 66 - .../agent/application/metadata/Export.java | 61 - .../agent/application/metadata/ExportGroup.java | 71 - .../agent/application/metadata/Metainfo.java| 118 - .../application/metadata/MetainfoParser.java| 97 - .../agent/application/metadata/OSPackage.java | 51 - .../agent/application/metadata/OSSpecific.java | 57 - .../agent/application/metadata/Package.java | 60 - .../application/metadata/PropertyInfo.java | 54 - .../agent/application/metadata/Validate.java| 27 - .../org/apache/slider/providers/agent/todo.md | 22 - .../server/appmaster/SliderAppMaster.java | 140 +- .../server/appmaster/web/AgentService.java | 37 - .../slider/server/appmaster/web/WebAppApi.java |7 - .../server/appmaster/web/WebAppApiImpl.java |6 - .../appmaster/web/rest/AMWebServices.java |1 - .../web/rest/agent/AgentCommandType.java| 23 - .../appmaster/web/rest/agent/AgentEnv.java | 376 --- .../appmaster/web/rest/agent/AgentResource.java | 118 - .../web/rest/agent/AgentRestOperations.java | 28 - .../appmaster/web/rest/agent/AgentWebApp.java | 258 -- .../web/rest/agent/AgentWebServices.java| 40 - .../appmaster/web/rest/agent/CommandReport.java | 207 -- .../web/rest/agent/ComponentStatus.java | 129 - .../appmaster/web/rest/agent/DiskInfo.java | 128 - .../web/rest/agent/ExecutionCommand.java| 310 -- .../appmaster/web/rest/agent/HeartBeat.java | 149 - .../web/rest/agent/HeartBeatResponse.java | 147 - .../appmaster/web/rest/agent/HostInfo.java | 398 --- .../appmaster/web/rest/agent/HostStatus.java| 63 - .../appmaster/web/rest/agent/Register.java | 193 -- .../web/rest/agent/RegistrationCommand.java | 43 - .../web/rest/agent/RegistrationResponse.java| 133 - .../web/rest/agent/RegistrationStatus.java | 22 - .../appmaster/web/rest/agent/StatusCommand.java | 152 - .../agent/TestAgentClientProvider.java
[34/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java new file mode 100644 index 000..081b7fa --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java @@ -0,0 +1,2293 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: SliderClusterProtocol.proto + +package org.apache.slider.api.proto; + +public final class SliderClusterAPI { + private SliderClusterAPI() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + /** + * Protobuf service {@code org.apache.slider.api.SliderClusterProtocolPB} + * + * + ** + * Protocol used from between Slider Client and AM + * + */ + public static abstract class SliderClusterProtocolPB + implements com.google.protobuf.Service { +protected SliderClusterProtocolPB() {} + +public interface Interface { + /** + * rpc stopCluster(.org.apache.slider.api.StopClusterRequestProto) returns (.org.apache.slider.api.StopClusterResponseProto); + */ + public abstract void stopCluster( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.StopClusterRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc upgradeContainers(.org.apache.slider.api.UpgradeContainersRequestProto) returns (.org.apache.slider.api.UpgradeContainersResponseProto); + * + * + ** + * Upgrade containers + * + */ + public abstract void upgradeContainers( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.UpgradeContainersRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc flexCluster(.org.apache.slider.api.FlexClusterRequestProto) returns (.org.apache.slider.api.FlexClusterResponseProto); + * + * + ** + * Flex the cluster. + * + */ + public abstract void flexCluster( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.FlexClusterRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc getJSONClusterStatus(.org.apache.slider.api.GetJSONClusterStatusRequestProto) returns (.org.apache.slider.api.GetJSONClusterStatusResponseProto); + * + * + ** + * Get the current cluster status + * + */ + public abstract void getJSONClusterStatus( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.GetJSONClusterStatusRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc getInstanceDefinition(.org.apache.slider.api.GetInstanceDefinitionRequestProto) returns (.org.apache.slider.api.GetInstanceDefinitionResponseProto); + * + * + ** + * Get the instance definition + * + */ + public abstract void getInstanceDefinition( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.GetInstanceDefinitionRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc listNodeUUIDsByRole(.org.apache.slider.api.ListNodeUUIDsByRoleRequestProto) returns (.org.apache.slider.api.ListNodeUUIDsByRoleResponseProto); + * + * + ** + * List all running nodes in a role + * + */ + public abstract void listNodeUUIDsByRole( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.ListNodeUUIDsByRoleRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc getNode(.org.apache.slider.api.GetNodeRequestProto) returns (.org.apache.slider.api.GetNodeResponseProto); + * + * + ** + * Get the details on a node + * + */ + public abstract void getNode( + com.google.protobuf.RpcController controller, + org.apache.slider.api.proto.Messages.GetNodeRequestProto request, + com.google.protobuf.RpcCallback done); + + /** + * rpc
[49/76] [abbrv] hadoop git commit: YARN-5775. Convert enums in swagger definition to uppercase. Contributed by Gour Saha
YARN-5775. Convert enums in swagger definition to uppercase. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e7ce6b55 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e7ce6b55 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e7ce6b55 Branch: refs/heads/yarn-native-services Commit: e7ce6b550b76cb0574036f371f5684dd9079c90d Parents: 9c4a2d6 Author: Billie RinaldiAuthored: Tue Oct 25 11:25:51 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- ...RN-Simplified-V1-API-Layer-For-Services.yaml | 38 ++-- 1 file changed, 19 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e7ce6b55/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/resources/definition/YARN-Simplified-V1-API-Layer-For-Services.yaml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/resources/definition/YARN-Simplified-V1-API-Layer-For-Services.yaml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/resources/definition/YARN-Simplified-V1-API-Layer-For-Services.yaml index 6169fcd..7eb3196 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/resources/definition/YARN-Simplified-V1-API-Layer-For-Services.yaml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/resources/definition/YARN-Simplified-V1-API-Layer-For-Services.yaml @@ -241,10 +241,10 @@ definitions: type: string description: Artifact type, like docker, tarball, etc. (optional). enum: - - docker - - tarball - - application -default: docker + - DOCKER + - TARBALL + - APPLICATION +default: DOCKER uri: type: string description: Artifact location to support multiple artifact stores (optional). @@ -303,7 +303,7 @@ definitions: type: string description: E.g. HTTP (YARN will perform a simple REST call at a regular interval and expect a 204 No content). enum: - - http + - HTTP uri: type: string description: Fully qualified REST uri endpoint. @@ -335,13 +335,13 @@ definitions: type: string description: Config file in the standard format like xml, properties, json, yaml, template. enum: - - xml - - properties - - json - - yaml - - template - - env - - hadoop_xml + - XML + - PROPERTIES + - JSON + - YAML + - TEMPLATE + - ENV + - HADOOP_XML dest_file: type: string description: The absolute path that this configuration file should be mounted as, in the application container. @@ -386,11 +386,11 @@ definitions: type: string description: enum of the state of the application enum: - - accepted - - started - - ready - - stopped - - failed + - ACCEPTED + - STARTED + - READY + - STOPPED + - FAILED ContainerState: description: The current state of the container of an application. properties: @@ -398,8 +398,8 @@ definitions: type: string description: enum of the state of the container enum: - - init - - ready + - INIT + - READY ApplicationStatus: description: The current status of a submitted application, returned as a response to the GET API. properties: - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[44/76] [abbrv] hadoop git commit: YARN-5623. Apply SLIDER-1166 to yarn-native-services branch. Contributed by Gour Saha
YARN-5623. Apply SLIDER-1166 to yarn-native-services branch. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cc7b200b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cc7b200b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cc7b200b Branch: refs/heads/yarn-native-services Commit: cc7b200b37a099cd1503c050968abb0541cf0536 Parents: cb61fe3 Author: Jian HeAuthored: Mon Sep 12 10:44:39 2016 +0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../org/apache/slider/client/SliderClient.java | 9 -- .../apache/slider/core/zk/ZKIntegration.java| 34 +--- 2 files changed, 36 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/cc7b200b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 5096bb7..fe4f1d2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -604,11 +604,14 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe BlockingZKWatcher watcher = new BlockingZKWatcher(); client = ZKIntegration.newInstance(registryQuorum, user, clusterName, true, false, watcher, ZKIntegration.SESSION_TIMEOUT); - client.init(); - watcher.waitForZKConnection(2 * 1000); + boolean fromCache = client.init(); + if (!fromCache) { +watcher.waitForZKConnection(2 * 1000); + } } catch (InterruptedException e) { client = null; - log.warn("Unable to connect to zookeeper quorum {}", registryQuorum, e); + log.warn("Interrupted - unable to connect to zookeeper quorum {}", + registryQuorum, e); } catch (IOException e) { log.warn("Unable to connect to zookeeper quorum {}", registryQuorum, e); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/cc7b200b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java index ca41e4b..6ed58d5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/zk/ZKIntegration.java @@ -33,6 +33,8 @@ import java.io.Closeable; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; @@ -65,6 +67,8 @@ public class ZKIntegration implements Watcher, Closeable { private final String clustername; private final String userPath; private int sessionTimeout = SESSION_TIMEOUT; + private static final Map ZK_SESSIONS = new HashMap<>(); + /** flag to set to indicate that the user path should be created if it is not already there @@ -93,10 +97,32 @@ public class ZKIntegration implements Watcher, Closeable { this.userPath = mkSliderUserPath(username); } - public void init() throws IOException { -assert zookeeper == null; -log.debug("Binding ZK client to {}", zkConnection); -zookeeper = new ZooKeeper(zkConnection, sessionTimeout, this, canBeReadOnly); + /** + * Returns true only if an active ZK session is available and retrieved from + * cache, false when it has to create a new one. + * + * @return true if from cache, false when new session created + * @throws IOException + */ + public synchronized
[12/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java new file mode 100644 index 000..dd4785d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java @@ -0,0 +1,310 @@ +/* + * 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 org.apache.slider.server.appmaster.rpc; + +import com.google.common.base.Preconditions; +import com.google.protobuf.BlockingService; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.io.retry.RetryPolicies; +import org.apache.hadoop.io.retry.RetryPolicy; +import org.apache.hadoop.ipc.ProtobufRpcEngine; +import org.apache.hadoop.ipc.ProtocolProxy; +import org.apache.hadoop.ipc.RPC; +import org.apache.hadoop.ipc.RpcEngine; +import org.apache.hadoop.ipc.Server; +import org.apache.hadoop.net.NetUtils; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.token.SecretManager; +import org.apache.hadoop.security.token.Token; +import org.apache.hadoop.security.token.TokenIdentifier; +import org.apache.hadoop.yarn.api.ApplicationClientProtocol; +import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest; +import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.security.client.ClientToAMTokenIdentifier; +import org.apache.hadoop.yarn.util.ConverterUtils; +import org.apache.slider.api.SliderClusterProtocol; +import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.tools.Duration; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.exceptions.BadClusterStateException; +import org.apache.slider.core.exceptions.ErrorStrings; +import org.apache.slider.core.exceptions.ServiceNotReadyException; +import org.apache.slider.core.exceptions.SliderException; + +import static org.apache.slider.common.SliderXmlConfKeys.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.security.PrivilegedExceptionAction; + +public class RpcBinder { + protected static final Logger log = +LoggerFactory.getLogger(RpcBinder.class); + + /** + * Create a protobuf server bonded to the specific socket address + * @param addr address to listen to; 0.0.0.0 as hostname acceptable + * @param conf config + * @param secretManager token secret handler + * @param numHandlers threads to service requests + * @param blockingService service to handle + * @param portRangeConfig range of ports + * @return the IPC server itself + * @throws IOException + */ + public static Server createProtobufServer(InetSocketAddress addr, +Configuration conf, +SecretManager secretManager, +int numHandlers, +BlockingService blockingService, +String portRangeConfig) throws + IOException { +Class sliderClusterAPIClass = registerSliderAPI( +conf); +RPC.Server server = new RPC.Builder(conf).setProtocol(sliderClusterAPIClass) + .setInstance(blockingService) +
[35/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java new file mode 100644 index 000..17fd965 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java @@ -0,0 +1,319 @@ +/* + * 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 org.apache.slider.api.proto; + +import com.google.protobuf.ByteString; +import org.apache.commons.io.IOUtils; +import org.apache.slider.api.types.ApplicationLivenessInformation; +import org.apache.slider.api.types.ComponentInformation; +import org.apache.slider.api.types.ContainerInformation; +import org.apache.slider.api.types.NodeEntryInformation; +import org.apache.slider.api.types.NodeInformation; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTree; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.persist.AggregateConfSerDeser; +import org.apache.slider.core.persist.ConfTreeSerDeser; +import org.apache.slider.server.services.security.SecurityStore; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Class to handle marshalling of REST + * types to/from Protobuf records. + */ +public class RestTypeMarshalling { + + public static Messages.ApplicationLivenessInformationProto + marshall(ApplicationLivenessInformation info) { + +Messages.ApplicationLivenessInformationProto.Builder builder = +Messages.ApplicationLivenessInformationProto.newBuilder(); +builder.setAllRequestsSatisfied(info.allRequestsSatisfied); +builder.setRequestsOutstanding(info.requestsOutstanding); +return builder.build(); + } + + public static ApplicationLivenessInformation + unmarshall(Messages.ApplicationLivenessInformationProto wire) { +ApplicationLivenessInformation info = new ApplicationLivenessInformation(); +info.allRequestsSatisfied = wire.getAllRequestsSatisfied(); +info.requestsOutstanding = wire.getRequestsOutstanding(); +return info; + } + + public static ComponentInformation + unmarshall(Messages.ComponentInformationProto wire) { +ComponentInformation info = new ComponentInformation(); +info.name = wire.getName(); +info.priority = wire.getPriority(); +info.placementPolicy = wire.getPlacementPolicy(); + +info.actual = wire.getActual(); +info.completed = wire.getCompleted(); +info.desired = wire.getDesired(); +info.failed = wire.getFailed(); +info.releasing = wire.getReleasing(); +info.requested = wire.getRequested(); +info.started = wire.getStarted(); +info.startFailed = wire.getStartFailed(); +info.totalRequested = wire.getTotalRequested(); +info.containers = new ArrayList<>(wire.getContainersList()); +if (wire.hasFailureMessage()) { + info.failureMessage = wire.getFailureMessage(); +} +if (wire.hasPendingAntiAffineRequestCount()) { + info.pendingAntiAffineRequestCount = wire.getPendingAntiAffineRequestCount(); +} +if (wire.hasIsAARequestOutstanding()) { + info.isAARequestOutstanding = wire.getIsAARequestOutstanding(); +} +return info; + } + + public static Messages.GetCertificateStoreResponseProto marshall( + SecurityStore securityStore) throws IOException { +Messages.GetCertificateStoreResponseProto.Builder builder = +
[29/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionListArgs.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionListArgs.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionListArgs.java new file mode 100644 index 000..739b5fc --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionListArgs.java @@ -0,0 +1,74 @@ +/* + * 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 org.apache.slider.common.params; + +import java.util.HashSet; +import java.util.Set; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(commandNames = {SliderActions.ACTION_LIST}, +commandDescription = SliderActions.DESCRIBE_ACTION_LIST) + +public class ActionListArgs extends AbstractActionArgs { + @Override + public String getActionName() { +return SliderActions.ACTION_LIST; + } + + @Parameter(names = {ARG_LIVE}, + description = "List only live application instances") + public boolean live; + + @Parameter(names = {ARG_STATE}, + description = "list only applications in the specific YARN state") + public String state = ""; + + @Parameter(names = {ARG_VERBOSE}, + description = "print out information in details") + public boolean verbose = false; + + @Parameter(names = {ARG_CONTAINERS}, + description = "List containers of an application instance") + public boolean containers; + + @Parameter(names = {ARG_VERSION}, + description = "Filter containers by app version (used with " + +ARG_CONTAINERS + ")") + public String version; + + @Parameter(names = {ARG_COMPONENTS}, variableArity = true, + description = "Filter containers by component names (used with " + +ARG_CONTAINERS + ")") + public Set components = new HashSet<>(0); + + /** + * Get the min #of params expected + * @return the min number of params in the {@link #parameters} field + */ + public int getMinParams() { +return 0; + } + + @Override + public int getMaxParams() { +return 1; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionLookupArgs.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionLookupArgs.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionLookupArgs.java new file mode 100644 index 000..1b73522 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ActionLookupArgs.java @@ -0,0 +1,76 @@ +/* + * 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
[18/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentRoles.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentRoles.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentRoles.java new file mode 100644 index 000..281895a --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentRoles.java @@ -0,0 +1,38 @@ +/* + * 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 org.apache.slider.providers.agent; + +import org.apache.slider.providers.ProviderRole; + +import java.util.ArrayList; +import java.util.List; + +public class AgentRoles { + + /** + * List of roles Agent provider does not have any roles by default. All roles are read from the application + * specification. + */ + protected static final List ROLES = + new ArrayList(); + + public static List getRoles() { +return ROLES; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentUtils.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentUtils.java new file mode 100644 index 000..cfcfc5d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentUtils.java @@ -0,0 +1,134 @@ +/* + * 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 org.apache.slider.providers.agent; + +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.slider.common.tools.SliderFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.providers.agent.application.metadata.AbstractMetainfoParser; +import org.apache.slider.providers.agent.application.metadata.AddonPackageMetainfoParser; +import org.apache.slider.providers.agent.application.metadata.DefaultConfig; +import org.apache.slider.providers.agent.application.metadata.DefaultConfigParser; +import org.apache.slider.providers.agent.application.metadata.Metainfo; +import org.apache.slider.providers.agent.application.metadata.MetainfoParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +/** + * + */ +public class AgentUtils { + private static final Logger log = LoggerFactory.getLogger(AgentUtils.class); + +
[26/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java new file mode 100644 index 000..73e0879 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java @@ -0,0 +1,2548 @@ +/* + * 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 org.apache.slider.common.tools; + +import com.google.common.base.Preconditions; + +import org.apache.commons.compress.archivers.tar.TarArchiveEntry; +import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; +import org.apache.commons.io.output.ByteArrayOutputStream; +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeysPublic; +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.FileUtil; +import org.apache.hadoop.fs.GlobFilter; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.io.nativeio.NativeIO; +import org.apache.hadoop.net.NetUtils; +import org.apache.hadoop.security.SecurityUtil; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.util.ExitUtil; +import org.apache.hadoop.util.Shell; +import org.apache.hadoop.util.VersionInfo; +import org.apache.hadoop.yarn.api.ApplicationConstants; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.client.api.AMRMClient; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.slider.Slider; +import org.apache.slider.api.InternalKeys; +import org.apache.slider.api.RoleKeys; +import org.apache.slider.api.types.ContainerInformation; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.SliderXmlConfKeys; +import org.apache.slider.common.params.Arguments; +import org.apache.slider.common.params.SliderActions; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.BadClusterStateException; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.core.exceptions.ErrorStrings; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.core.launch.ClasspathConstructor; +import org.apache.slider.core.main.LauncherExitCodes; +import org.apache.slider.providers.agent.AgentKeys; +import org.apache.slider.server.services.utility.PatternValidator; +import org.apache.slider.server.services.workflow.ForkedProcessService; +import org.apache.zookeeper.server.util.KerberosUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import
[13/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java new file mode 100644 index 000..37a8935 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java @@ -0,0 +1,195 @@ +/* + * 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 org.apache.slider.server.appmaster.management; + +import com.codahale.metrics.Metric; +import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.MetricSet; +import com.codahale.metrics.health.HealthCheckRegistry; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.service.CompositeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Class for all metrics and monitoring + */ +public class MetricsAndMonitoring extends CompositeService { + protected static final Logger log = +LoggerFactory.getLogger(MetricsAndMonitoring.class); + public MetricsAndMonitoring(String name) { +super(name); + } + + public MetricsAndMonitoring() { +super("MetricsAndMonitoring"); + } + + /** + * Singleton of metrics registry + */ + final MetricRegistry metrics = new MetricRegistry(); + + final HealthCheckRegistry health = new HealthCheckRegistry(); + + private final MapmeterAndCounterMap + = new ConcurrentHashMap<>(); + + private final List metricSets = new ArrayList<>(); + + /** + * List of recorded events + */ + private final List eventHistory = new ArrayList<>(100); + + public static final int EVENT_LIMIT = 1000; + + public MetricRegistry getMetrics() { +return metrics; + } + + public HealthCheckRegistry getHealth() { +return health; + } + + @Override + protected void serviceInit(Configuration conf) throws Exception { +addService(new MetricsBindingService("MetricsBindingService", +metrics)); +super.serviceInit(conf); + } + + @Override + protected void serviceStop() throws Exception { +super.serviceStop(); +for (MetricSet set : metricSets) { + unregister(set); +} + } + + public MeterAndCounter getMeterAndCounter(String name) { +return meterAndCounterMap.get(name); + } + + /** + * Get or create the meter/counter pair + * @param name name of instance + * @return an instance + */ + public MeterAndCounter getOrCreateMeterAndCounter(String name) { +MeterAndCounter instance = meterAndCounterMap.get(name); +if (instance == null) { + synchronized (this) { +// check in a sync block +instance = meterAndCounterMap.get(name); +if (instance == null) { + instance = new MeterAndCounter(metrics, name); + meterAndCounterMap.put(name, instance); +} + } +} +return instance; + } + + /** + * Get a specific meter and mark it. This will create and register it on demand. + * @param name name of meter/counter + */ + public void markMeterAndCounter(String name) { +MeterAndCounter meter = getOrCreateMeterAndCounter(name); +meter.mark(); + } + + /** + * Given a {@link Metric}, registers it under the given name. + * + * @param name the name of the metric + * @param metric the metric + * @param the type of the metric + * @return {@code metric} + * @throws IllegalArgumentException if the name is already registered + */ + public T register(String name,
[30/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderExitCodes.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderExitCodes.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderExitCodes.java new file mode 100644 index 000..5758f79 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderExitCodes.java @@ -0,0 +1,88 @@ +/* + * 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 org.apache.slider.common; + +import org.apache.slider.core.main.LauncherExitCodes; + +public interface SliderExitCodes extends LauncherExitCodes { + + /** + * starting point for exit codes; not an exception itself + */ + int _EXIT_CODE_BASE = 64; + + /** + * service entered the failed state: {@value} + */ + int EXIT_YARN_SERVICE_FAILED = 65; + + /** + * service was killed: {@value} + */ + int EXIT_YARN_SERVICE_KILLED = 66; + + /** + * timeout on monitoring client: {@value} + */ + int EXIT_TIMED_OUT =67; + + /** + * service finished with an error: {@value} + */ + int EXIT_YARN_SERVICE_FINISHED_WITH_ERROR = 68; + + /** + * the application instance is unknown: {@value} + */ + int EXIT_UNKNOWN_INSTANCE = 69; + + /** + * the application instance is in the wrong state for that operation: {@value} + */ + int EXIT_BAD_STATE =70; + + /** + * A spawned master process failed + */ + int EXIT_PROCESS_FAILED = 71; + + /** + * The instance failed -too many containers were + * failing or some other threshold was reached + */ + int EXIT_DEPLOYMENT_FAILED =72; + + /** + * The application is live -and the requested operation + * does not work if the cluster is running + */ + int EXIT_APPLICATION_IN_USE = 73; + + /** + * There already is an application instance of that name + * when an attempt is made to create a new instance + */ + int EXIT_INSTANCE_EXISTS = 75; + + /** + * Exit code when the configurations in valid/incomplete: {@value} + */ + int EXIT_BAD_CONFIGURATION =77; + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java new file mode 100644 index 000..ba3effc --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java @@ -0,0 +1,278 @@ +/* + * 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 + *
[33/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java new file mode 100644 index 000..9879d05 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ApplicationLivenessInformation.java @@ -0,0 +1,53 @@ +/* + * 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 org.apache.slider.api.types; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +/** + * Serialized information about liveness + * + * If true liveness probes are implemented, this + * datatype can be extended to publish their details. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class ApplicationLivenessInformation { + /** flag set if the cluster is at size */ + public boolean allRequestsSatisfied; + + /** number of outstanding requests: those needed to satisfy */ + public int requestsOutstanding; + + /** number of requests submitted to YARN */ + public int activeRequests; + + @Override + public String toString() { +final StringBuilder sb = +new StringBuilder("ApplicationLivenessInformation{"); +sb.append("allRequestsSatisfied=").append(allRequestsSatisfied); +sb.append(", requestsOutstanding=").append(requestsOutstanding); +sb.append('}'); +return sb.toString(); + } +} + + http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java new file mode 100644 index 000..c46a59f --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java @@ -0,0 +1,107 @@ +/* + * 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 org.apache.slider.api.types; + +import org.apache.slider.api.StatusKeys; +import org.apache.slider.server.appmaster.state.RoleStatus; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Serializable version of component data. + * + * This is sent in REST
[10/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppStateBindingInfo.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppStateBindingInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppStateBindingInfo.java new file mode 100644 index 000..a8aa1a2 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppStateBindingInfo.java @@ -0,0 +1,63 @@ +/* + * 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 org.apache.slider.server.appmaster.state; + +import com.google.common.base.Preconditions; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.providers.ProviderRole; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Binding information for application states; designed to be extensible + * so that tests don't have to be massivley reworked when new arguments + * are added. + */ +public class AppStateBindingInfo { + public AggregateConf instanceDefinition; + public Configuration serviceConfig = new Configuration(); + public Configuration publishedProviderConf = new Configuration(false); + public List roles = new ArrayList<>(); + public FileSystem fs; + public Path historyPath; + public List liveContainers = new ArrayList<>(0); + public MapapplicationInfo = new HashMap<>(); + public ContainerReleaseSelector releaseSelector = new SimpleReleaseSelector(); + /** node reports off the RM. */ + public List nodeReports = new ArrayList<>(0); + + public void validate() throws IllegalArgumentException { +Preconditions.checkArgument(instanceDefinition != null, "null instanceDefinition"); +Preconditions.checkArgument(serviceConfig != null, "null appmasterConfig"); +Preconditions.checkArgument(publishedProviderConf != null, "null publishedProviderConf"); +Preconditions.checkArgument(releaseSelector != null, "null releaseSelector"); +Preconditions.checkArgument(roles != null, "null providerRoles"); +Preconditions.checkArgument(fs != null, "null fs"); +Preconditions.checkArgument(historyPath != null, "null historyDir"); +Preconditions.checkArgument(nodeReports != null, "null nodeReports"); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ContainerAllocationOutcome.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ContainerAllocationOutcome.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ContainerAllocationOutcome.java new file mode 100644 index 000..5b3a93c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ContainerAllocationOutcome.java @@ -0,0 +1,44 @@ +/* + * 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
[47/76] [abbrv] hadoop git commit: YARN-5610. Initial code for native services REST API. Contributed by Gour Saha
YARN-5610. Initial code for native services REST API. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/019adbc8 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/019adbc8 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/019adbc8 Branch: refs/heads/yarn-native-services Commit: 019adbc868ec2cd448f5776ae3a19d301a4bc27c Parents: cc7b200 Author: Jian HeAuthored: Tue Oct 11 11:36:57 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- hadoop-project/pom.xml | 20 + .../dev-support/findbugs-exclude.xml| 20 + .../hadoop-yarn-services-api/pom.xml| 225 +++ .../yarn/services/api/ApplicationApi.java | 38 + .../api/impl/ApplicationApiService.java | 1527 ++ .../yarn/services/resource/Application.java | 452 ++ .../services/resource/ApplicationState.java | 25 + .../services/resource/ApplicationStatus.java| 147 ++ .../hadoop/yarn/services/resource/Artifact.java | 155 ++ .../yarn/services/resource/BaseResource.java| 48 + .../yarn/services/resource/Component.java | 377 + .../yarn/services/resource/ConfigFile.java | 190 +++ .../yarn/services/resource/Configuration.java | 147 ++ .../yarn/services/resource/Container.java | 256 +++ .../yarn/services/resource/ContainerState.java | 25 + .../hadoop/yarn/services/resource/Error.java| 125 ++ .../yarn/services/resource/PlacementPolicy.java | 97 ++ .../yarn/services/resource/ReadinessCheck.java | 161 ++ .../hadoop/yarn/services/resource/Resource.java | 149 ++ .../yarn/services/utils/RestApiConstants.java | 66 + .../services/utils/RestApiErrorMessages.java| 79 + .../services/webapp/ApplicationApiWebApp.java | 127 ++ .../src/main/resources/log4j-server.properties | 76 + .../resources/webapps/services-rest-api/app | 16 + .../src/main/scripts/run_rest_service.sh| 28 + .../src/main/webapp/WEB-INF/web.xml | 36 + .../api/impl/TestApplicationApiService.java | 232 +++ .../hadoop-yarn-applications/pom.xml|2 +- 28 files changed, 4845 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/019adbc8/hadoop-project/pom.xml -- diff --git a/hadoop-project/pom.xml b/hadoop-project/pom.xml index 1ae60ed..a2b6e25 100644 --- a/hadoop-project/pom.xml +++ b/hadoop-project/pom.xml @@ -126,6 +126,9 @@ 1.0-alpha-8 900 1.11.45 + +1.5.4 + 1.4 @@ -1235,6 +1238,23 @@ kerb-simplekdc 1.0.0-RC2 + + +io.swagger +swagger-annotations +${swagger-annotations-version} + + +com.fasterxml.jackson.jaxrs +jackson-jaxrs-json-provider +${jackson2.version} + + +org.apache.maven.doxia +doxia-module-markdown +${maven-doxia-module-markdown.version} + + http://git-wip-us.apache.org/repos/asf/hadoop/blob/019adbc8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/dev-support/findbugs-exclude.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/dev-support/findbugs-exclude.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/dev-support/findbugs-exclude.xml new file mode 100644 index 000..b89146a --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/dev-support/findbugs-exclude.xml @@ -0,0 +1,20 @@ + + + + + http://git-wip-us.apache.org/repos/asf/hadoop/blob/019adbc8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/pom.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/pom.xml new file mode 100644 index 000..78b7855 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/pom.xml @@ -0,0 +1,225 @@ + +http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;> + 4.0.0 + +org.apache.hadoop +hadoop-yarn-applications +3.0.0-alpha2-SNAPSHOT + + org.apache.hadoop + hadoop-yarn-services-api + Apache Hadoop YARN Services API +
[22/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java new file mode 100644 index 000..1bdfb9c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/registry/YarnAppListClient.java @@ -0,0 +1,189 @@ +/* + * 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 org.apache.slider.core.registry; + +import com.google.common.base.Preconditions; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.slider.client.SliderYarnClientImpl; +import org.apache.slider.api.types.SliderInstanceDescription; +import org.apache.slider.common.tools.CoreFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Client code for interacting with a list of service instances. + * The initial logic just enumerates service instances in the YARN RM + */ +public class YarnAppListClient { + + private final SliderYarnClientImpl yarnClient; + private final String username; + private final Configuration conf; + private static final Logger log = + LoggerFactory.getLogger(YarnAppListClient.class); + + public YarnAppListClient(SliderYarnClientImpl yarnClient, + String username, + Configuration conf) { + +Preconditions.checkArgument(yarnClient != null, +"yarn client is null: is app inited?"); +Preconditions.checkArgument(username != null, +"username is null"); +Preconditions.checkArgument(conf != null, +"conf parameter is null"); +this.yarnClient = yarnClient; +this.username = username; +this.conf = conf; + } + + /** + * find all live instances of a specific app -if there is more than one + * in the cluster, this returns them all. State should be running or earlier + * in the lifecycle + * @param appname application name + * @return the list of all matching application instances + */ + public List findAllLiveInstances(String appname) +throws YarnException, IOException { +return yarnClient.findAllLiveInstances(username, appname); + } + + + /** + * Find an instance of a application belong to the current user + * @param appname application name + * @return the app report or null if none is found + * @throws YarnException YARN issues + * @throws IOException IO problems + */ + public ApplicationReport findInstance(String appname) throws +YarnException, +IOException { +List instances = listInstances(null); +return yarnClient.findClusterInInstanceList(instances, appname); + } + + /** + * List instances belonging to the specific user + * @return a possibly empty list of AMs + */ + public List listInstances() + throws YarnException, IOException { +return listInstances(null); + } + + /** + * List instances belonging to a specific user + * @return a possibly empty list of AMs + * @param user user if not the default. null means default, "" means all users, + * otherwise it is the name of a user + */ + public List listInstances(String user) + throws YarnException, IOException { +String listUser = user == null ? username : user; +
[73/76] [abbrv] hadoop git commit: YARN-5961. Generate native services protobuf classes during build. Contributed by Billie Rinaldi
YARN-5961. Generate native services protobuf classes during build. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fc259d50 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fc259d50 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fc259d50 Branch: refs/heads/yarn-native-services Commit: fc259d505ddce1b474ffe9e5ba1c7664d7282282 Parents: 89e8708 Author: Jian HeAuthored: Sat Dec 3 13:27:04 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../hadoop-yarn-slider-core/pom.xml |65 +- .../org/apache/slider/api/proto/Messages.java | 34473 - .../slider/api/proto/SliderClusterAPI.java | 2293 -- 3 files changed, 27 insertions(+), 36804 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fc259d50/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml index 10cf6b1..7453d12 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/pom.xml @@ -37,6 +37,33 @@ +org.apache.hadoop +hadoop-maven-plugins + + +compile-protoc + + protoc + + + ${protobuf.version} + ${protoc.path} + +${basedir}/src/main/proto + + +${basedir}/src/main/proto + + SliderClusterMessages.proto + SliderClusterProtocol.proto + + + + + + + + org.apache.maven.plugins maven-jar-plugin @@ -85,9 +112,6 @@ **/*.json src/main/resources/webapps/slideram/.keep - - src/main/java/org/apache/slider/api/proto/Messages.java - src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java @@ -362,41 +386,6 @@ - - compile-protobuf - - - -org.apache.hadoop -hadoop-maven-plugins - - -compile-protoc -generate-sources - - protoc - - - ${protobuf.version} - protoc - -${basedir}/src/main/proto - - -${basedir}/src/main/proto - - SliderClusterMessages.proto - SliderClusterProtocol.proto - - - ${basedir}/src/main/java - - - - - - - - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[68/76] [abbrv] hadoop git commit: YARN-5729. Bug fixes for the service Rest API. Contributed by Gour Saha
YARN-5729. Bug fixes for the service Rest API. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b279e669 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b279e669 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b279e669 Branch: refs/heads/yarn-native-services Commit: b279e669cf4e9b096130f290243d23864f86d880 Parents: 5b72893 Author: Jian HeAuthored: Fri Oct 14 13:47:38 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../services/api/impl/ApplicationApiService.java| 16 ++-- .../hadoop/yarn/services/resource/Application.java | 6 +++--- .../hadoop/yarn/services/resource/Artifact.java | 4 +++- .../hadoop/yarn/services/resource/Component.java| 4 +++- .../hadoop/yarn/services/resource/ConfigFile.java | 4 +++- .../yarn/services/resource/Configuration.java | 4 +++- .../hadoop/yarn/services/resource/Container.java| 6 +++--- .../yarn/services/resource/PlacementPolicy.java | 4 +++- .../yarn/services/resource/ReadinessCheck.java | 4 +++- .../hadoop/yarn/services/resource/Resource.java | 2 +- 10 files changed, 39 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b279e669/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index 0a62629..21cf113 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -276,7 +276,7 @@ public class ApplicationApiService implements ApplicationApi { // If it is a simple app with no components, then create a default component if (application.getComponents() == null) { - application.setComponents(getDefaultComponentAsList()); + application.setComponents(getDefaultComponentAsList(application)); } // Application lifetime if not specified, is set to unlimited lifetime @@ -1029,7 +1029,8 @@ public class ApplicationApiService implements ApplicationApi { // end-users point of view, is out of scope of the REST API. Also, this // readiness has nothing to do with readiness-check defined at the component // level (which is used for dependency resolution of component DAG). -if (totalNumberOfIpAssignedContainers == totalExpectedNumberOfRunningContainers) { +if (totalNumberOfIpAssignedContainers +.longValue() == totalExpectedNumberOfRunningContainers.longValue()) { app.setState(ApplicationState.READY); } logger.info("Application = {}", app); @@ -1389,6 +1390,17 @@ public class ApplicationApiService implements ApplicationApi { return Response.status(Status.NO_CONTENT).build(); } + // create default component and initialize with app level global values + private List getDefaultComponentAsList(Application app) { +List comps = getDefaultComponentAsList(); +Component comp = comps.get(0); +comp.setArtifact(app.getArtifact()); +comp.setResource(app.getResource()); +comp.setNumberOfContainers(app.getNumberOfContainers()); +comp.setLaunchCommand(app.getLaunchCommand()); +return comps; + } + private List getDefaultComponentAsList() { Component comp = new Component(); comp.setName(DEFAULT_COMPONENT_NAME); http://git-wip-us.apache.org/repos/asf/hadoop/blob/b279e669/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java index 719bf95..ed65ad2 100644 ---
[57/76] [abbrv] hadoop git commit: YARN-5909. Remove agent related code in slider AM. Contributed by Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fdab600/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/Register.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/Register.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/Register.java deleted file mode 100644 index 0150079..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/Register.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * 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 org.apache.slider.server.appmaster.web.rest.agent; - -import org.apache.slider.providers.agent.State; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.map.annotate.JsonSerialize; - -import java.util.Map; - -/** Data model for agent to send heartbeat to ambari and/or app master. */ -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) -public class Register { - private int responseId = -1; - private long timestamp; - private String label; - private int currentPingPort; - private HostInfo hardwareProfile; - private String publicHostname; - private String tags; - private AgentEnv agentEnv; - private String agentVersion; - private State actualState; - private State expectedState; - private MapallocatedPorts; - private Map logFolders; - private String pkg; - private String appVersion; - - @JsonProperty("responseId") - public int getResponseId() { -return responseId; - } - - @JsonProperty("responseId") - public void setResponseId(int responseId) { -this.responseId = responseId; - } - - public long getTimestamp() { -return timestamp; - } - - public void setTimestamp(long timestamp) { -this.timestamp = timestamp; - } - - public String getLabel() { -return label; - } - - public void setLabel(String label) { -this.label = label; - } - - public String getTags() { -return tags; - } - - public void setTags(String tags) { -this.tags = tags; - } - - public HostInfo getHardwareProfile() { -return hardwareProfile; - } - - public void setHardwareProfile(HostInfo hardwareProfile) { -this.hardwareProfile = hardwareProfile; - } - - public String getPublicHostname() { -return publicHostname; - } - - public void setPublicHostname(String name) { -this.publicHostname = name; - } - - public AgentEnv getAgentEnv() { -return agentEnv; - } - - public void setAgentEnv(AgentEnv env) { -this.agentEnv = env; - } - - public String getAgentVersion() { -return agentVersion; - } - - public void setAgentVersion(String agentVersion) { -this.agentVersion = agentVersion; - } - - public int getCurrentPingPort() { -return currentPingPort; - } - - public void setCurrentPingPort(int currentPingPort) { -this.currentPingPort = currentPingPort; - } - - public State getActualState() { -return actualState; - } - - public void setActualState(State actualState) { -this.actualState = actualState; - } - - public State getExpectedState() { -return expectedState; - } - - public void setExpectedState(State expectedState) { -this.expectedState = expectedState; - } - - /** @return the allocated ports, or null if none are present */ - @JsonProperty("allocatedPorts") - public Map getAllocatedPorts() { -return allocatedPorts; - } - - /** @param ports allocated ports */ - @JsonProperty("allocatedPorts") - public void setAllocatedPorts(Map ports) { -this.allocatedPorts = ports; - } - - /** @return the log folders, or null if none are present */ -
[71/76] [abbrv] hadoop git commit: YARN-5961. Generate native services protobuf classes during build. Contributed by Billie Rinaldi
http://git-wip-us.apache.org/repos/asf/hadoop/blob/fc259d50/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java deleted file mode 100644 index 081b7fa..000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java +++ /dev/null @@ -1,2293 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: SliderClusterProtocol.proto - -package org.apache.slider.api.proto; - -public final class SliderClusterAPI { - private SliderClusterAPI() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - /** - * Protobuf service {@code org.apache.slider.api.SliderClusterProtocolPB} - * - * - ** - * Protocol used from between Slider Client and AM - * - */ - public static abstract class SliderClusterProtocolPB - implements com.google.protobuf.Service { -protected SliderClusterProtocolPB() {} - -public interface Interface { - /** - * rpc stopCluster(.org.apache.slider.api.StopClusterRequestProto) returns (.org.apache.slider.api.StopClusterResponseProto); - */ - public abstract void stopCluster( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.StopClusterRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc upgradeContainers(.org.apache.slider.api.UpgradeContainersRequestProto) returns (.org.apache.slider.api.UpgradeContainersResponseProto); - * - * - ** - * Upgrade containers - * - */ - public abstract void upgradeContainers( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.UpgradeContainersRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc flexCluster(.org.apache.slider.api.FlexClusterRequestProto) returns (.org.apache.slider.api.FlexClusterResponseProto); - * - * - ** - * Flex the cluster. - * - */ - public abstract void flexCluster( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.FlexClusterRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc getJSONClusterStatus(.org.apache.slider.api.GetJSONClusterStatusRequestProto) returns (.org.apache.slider.api.GetJSONClusterStatusResponseProto); - * - * - ** - * Get the current cluster status - * - */ - public abstract void getJSONClusterStatus( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.GetJSONClusterStatusRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc getInstanceDefinition(.org.apache.slider.api.GetInstanceDefinitionRequestProto) returns (.org.apache.slider.api.GetInstanceDefinitionResponseProto); - * - * - ** - * Get the instance definition - * - */ - public abstract void getInstanceDefinition( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.GetInstanceDefinitionRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc listNodeUUIDsByRole(.org.apache.slider.api.ListNodeUUIDsByRoleRequestProto) returns (.org.apache.slider.api.ListNodeUUIDsByRoleResponseProto); - * - * - ** - * List all running nodes in a role - * - */ - public abstract void listNodeUUIDsByRole( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.ListNodeUUIDsByRoleRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc getNode(.org.apache.slider.api.GetNodeRequestProto) returns (.org.apache.slider.api.GetNodeResponseProto); - * - * - ** - * Get the details on a node - * - */ - public abstract void getNode( - com.google.protobuf.RpcController controller, - org.apache.slider.api.proto.Messages.GetNodeRequestProto request, - com.google.protobuf.RpcCallback done); - - /** - * rpc
[32/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java new file mode 100644 index 000..8210f4d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -0,0 +1,4569 @@ +/* + * 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 org.apache.slider.client; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.io.Files; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocatedFileStatus; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.PathNotFoundException; +import org.apache.hadoop.fs.RemoteIterator; +import org.apache.hadoop.fs.permission.FsAction; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.hdfs.HdfsConfiguration; +import org.apache.hadoop.net.NetUtils; +import org.apache.hadoop.registry.client.api.RegistryConstants; +import org.apache.hadoop.registry.client.api.RegistryOperations; +import org.apache.hadoop.registry.client.binding.RegistryPathUtils; +import org.apache.hadoop.registry.client.binding.RegistryUtils; +import org.apache.hadoop.registry.client.exceptions.NoRecordException; +import org.apache.hadoop.registry.client.types.Endpoint; +import org.apache.hadoop.registry.client.types.RegistryPathStatus; +import org.apache.hadoop.registry.client.types.ServiceRecord; +import org.apache.hadoop.registry.client.types.yarn.YarnRegistryAttributes; +import org.apache.hadoop.security.Credentials; +import org.apache.hadoop.security.KerberosDiags; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.alias.CredentialProvider; +import org.apache.hadoop.security.alias.CredentialProviderFactory; +import org.apache.hadoop.util.Shell; +import org.apache.hadoop.yarn.api.ApplicationConstants; +import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.hadoop.yarn.api.records.NodeState; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.ApplicationAttemptNotFoundException; +import org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.util.ConverterUtils; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.SliderApplicationApi; +import org.apache.slider.api.SliderClusterProtocol; +import org.apache.slider.api.StateValues; +import org.apache.slider.api.proto.Messages; +import org.apache.slider.api.types.ContainerInformation; +import org.apache.slider.api.types.NodeInformationList; +import org.apache.slider.api.types.SliderInstanceDescription; +import org.apache.slider.client.ipc.SliderApplicationIpcClient; +import org.apache.slider.client.ipc.SliderClusterOperations; +import org.apache.slider.common.Constants; +import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.SliderKeys;
[48/76] [abbrv] hadoop git commit: YARN-5943. Write native services container stderr file to log directory. Contributed by Billie Rinaldi
YARN-5943. Write native services container stderr file to log directory. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5e0f1b73 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5e0f1b73 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5e0f1b73 Branch: refs/heads/yarn-native-services Commit: 5e0f1b73466f9f2c342b34dd35e03e0533360ff2 Parents: cd198b0 Author: Gour SahaAuthored: Wed Nov 30 10:30:39 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../org/apache/slider/providers/docker/DockerProviderService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5e0f1b73/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java index cc319ee..e4a7cdf 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java @@ -193,7 +193,8 @@ public class DockerProviderService extends AbstractProviderService implements "/bin/bash")); operation.add("> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/" -+ OUT_FILE + " 2>" + ERR_FILE); ++ OUT_FILE + " 2>" + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/" ++ ERR_FILE); launcher.addCommand(operation.build()); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[64/76] [abbrv] hadoop git commit: YARN-5505. Create an agent-less docker provider in the native-services framework. Contributed by Billie Rinaldi
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb61fe3f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java index 8203cf0..fdc5be1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java @@ -82,6 +82,8 @@ import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import static org.apache.slider.common.tools.SliderUtils.getApplicationDefinitionPath; + /** This class implements the client-side aspects of the agent deployer */ public class AgentClientProvider extends AbstractClientProvider implements AgentKeys, SliderKeys { @@ -132,13 +134,13 @@ public class AgentClientProvider extends AbstractClientProvider sliderFileSystem.verifyFileExists(appDefPath); String agentConf = instanceDefinition.getAppConfOperations(). -getGlobalOptions().getOption(AgentKeys.AGENT_CONF, ""); +getGlobalOptions().getOption(AGENT_CONF, ""); if (StringUtils.isNotEmpty(agentConf)) { sliderFileSystem.verifyFileExists(new Path(agentConf)); } String appHome = instanceDefinition.getAppConfOperations(). -getGlobalOptions().get(AgentKeys.PACKAGE_PATH); +getGlobalOptions().get(PACKAGE_PATH); if (SliderUtils.isUnset(appHome)) { String agentImage = instanceDefinition.getInternalOperations(). get(InternalKeys.INTERNAL_APPLICATION_IMAGE_PATH); @@ -173,7 +175,7 @@ public class AgentClientProvider extends AbstractClientProvider } Set names = resources.getComponentNames(); -names.remove(SliderKeys.COMPONENT_AM); +names.remove(COMPONENT_AM); MappriorityMap = new HashMap (); for (String name : names) { @@ -271,7 +273,7 @@ public class AgentClientProvider extends AbstractClientProvider String agentImage = instanceDefinition.getInternalOperations(). get(InternalKeys.INTERNAL_APPLICATION_IMAGE_PATH); if (SliderUtils.isUnset(agentImage)) { - Path agentPath = new Path(tempPath.getParent(), AgentKeys.PROVIDER_AGENT); + Path agentPath = new Path(tempPath.getParent(), PROVIDER_AGENT); log.info("Automatically uploading the agent tarball at {}", agentPath); fileSystem.getFileSystem().mkdirs(agentPath); if (ProviderUtils.addAgentTar(this, AGENT_TAR, fileSystem, agentPath)) { @@ -284,6 +286,12 @@ public class AgentClientProvider extends AbstractClientProvider @Override public Set getApplicationTags(SliderFileSystem fileSystem, + ConfTreeOperations appConf) throws SliderException { +return getApplicationTags(fileSystem, +getApplicationDefinitionPath(appConf)); + } + + public Set getApplicationTags(SliderFileSystem fileSystem, String appDef) throws SliderException { Set tags; Metainfo metaInfo = getMetainfo(fileSystem, appDef); @@ -437,19 +445,19 @@ public class AgentClientProvider extends AbstractClientProvider if (config != null) { try { clientRoot = config.getJSONObject("global") -.getString(AgentKeys.APP_CLIENT_ROOT); +.getString(APP_CLIENT_ROOT); } catch (JSONException e) { log.info("Couldn't read {} from provided client config, falling " + -"back on default", AgentKeys.APP_CLIENT_ROOT); +"back on default", APP_CLIENT_ROOT); } } if (clientRoot == null && defaultConfig != null) { try { clientRoot = defaultConfig.getJSONObject("global") -.getString(AgentKeys.APP_CLIENT_ROOT); +.getString(APP_CLIENT_ROOT); } catch (JSONException e) { log.info("Couldn't read {} from default client config, using {}", -AgentKeys.APP_CLIENT_ROOT, clientInstallPath); +APP_CLIENT_ROOT, clientInstallPath); } } if (clientRoot == null) { @@ -500,7 +508,7 @@ public class AgentClientProvider extends AbstractClientProvider try { String clientScriptPath = appPkgDir.getAbsolutePath() + File.separator +
[17/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java new file mode 100644 index 000..78bb8c1 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java @@ -0,0 +1,217 @@ +/* + * 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 org.apache.slider.providers.agent.application.metadata; + +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.core.exceptions.SliderException; +import org.codehaus.jackson.annotate.JsonProperty; +import java.util.ArrayList; +import java.util.List; + +/** + * Component defined in master package metainfo.json + */ +public class Component extends AbstractComponent { + + String category = CATEGORY_MASTER; + String publishConfig = Boolean.FALSE.toString(); + String minInstanceCount = "0"; + String maxInstanceCount; + String autoStartOnFailure = Boolean.FALSE.toString(); + String appExports; + String compExports; + String type = TYPE_STANDARD; + List componentExports = new ArrayList<>(); + List dockerContainers = new ArrayList<>(); + List configFiles = new ArrayList<>(); + + public Component() { + } + + public String getType() { +return type; + } + + public void setType(String type) { +this.type = type; + } + + public String getCategory() { +return category; + } + + public void setCategory(String category) { +this.category = category; + } + + public String getPublishConfig() { +return publishConfig; + } + + public void setPublishConfig(String publishConfig) { +this.publishConfig = publishConfig; + } + + public String getAutoStartOnFailure() { +return autoStartOnFailure; + } + + public void setAutoStartOnFailure(String autoStartOnFailure) { +this.autoStartOnFailure = autoStartOnFailure; + } + + public String getAppExports() { +return appExports; + } + + public void setAppExports(String appExports) { +this.appExports = appExports; + } + + public String getCompExports() { +return compExports; + } + + public void setCompExports(String compExports) { +this.compExports = compExports; + } + + public String getMinInstanceCount() { +return minInstanceCount; + } + + @JsonProperty("dockerContainers") + public List getDockerContainers() { + return this.dockerContainers; + } + + public Boolean getAutoStartOnFailureBoolean() { +if (SliderUtils.isUnset(getAutoStartOnFailure())) { + return Boolean.FALSE; +} + +return Boolean.parseBoolean(getAutoStartOnFailure()); + } + + public int getMinInstanceCountInt() throws BadConfigException { +if (SliderUtils.isUnset(minInstanceCount)) { + return 0; +} + +try { + return Integer.parseInt(minInstanceCount); +} catch (NumberFormatException nfe) { + throw new BadConfigException(nfe, "Invalid value for minInstanceCount for %s", name); +} + } + + public int getMaxInstanceCountInt() throws BadConfigException { +if (SliderUtils.isUnset(maxInstanceCount)) { + return Integer.MAX_VALUE; +} + +try { + return Integer.parseInt(maxInstanceCount); +} catch (NumberFormatException nfe) { + throw new BadConfigException(nfe, "Invalid value for maxInstanceCount for %s", name); +} + } + + public void setMinInstanceCount(String minInstanceCount) { +this.minInstanceCount = minInstanceCount; + } + + public String getMaxInstanceCount() { +return
[20/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java new file mode 100644 index 000..9767430 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderCore.java @@ -0,0 +1,43 @@ +/* + * 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 org.apache.slider.providers; + +import org.apache.hadoop.conf.Configuration; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTree; +import org.apache.slider.core.exceptions.SliderException; + +import java.util.List; +public interface ProviderCore { + + String getName(); + + List getRoles(); + + Configuration getConf(); + + /** + * Verify that an instance definition is considered valid by the provider + * @param instanceDefinition instance definition + * @throws SliderException if the configuration is not valid + */ + void validateInstanceDefinition(AggregateConf instanceDefinition) throws + SliderException; + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java new file mode 100644 index 000..761ac0f --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java @@ -0,0 +1,135 @@ +/* + * 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 org.apache.slider.providers; + +import org.apache.slider.api.ResourceKeys; + +/** + * Provider role and key for use in app requests. + * + * This class uses the role name as the key for hashes and in equality tests, + * and ignores the other values. + */ +public final class ProviderRole { + public final String name; + public final String group; + public final int id; + public int placementPolicy; + public int nodeFailureThreshold; + public final long placementTimeoutSeconds; + public final String labelExpression; + + public ProviderRole(String name, int id) { +this(name, +name, +id, +PlacementPolicy.DEFAULT, +ResourceKeys.DEFAULT_NODE_FAILURE_THRESHOLD, +ResourceKeys.DEFAULT_PLACEMENT_ESCALATE_DELAY_SECONDS, +ResourceKeys.DEF_YARN_LABEL_EXPRESSION); + } + + /** + * Create a provider role + * @param name role/component name +
[40/76] [abbrv] hadoop git commit: YARN-5513. Move Java only tests from slider develop to yarn-native-services. Contributed by Gour Saha
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4beaeb8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java new file mode 100644 index 000..7fceac7 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java @@ -0,0 +1,60 @@ +/* + * 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 org.apache.slider.server.appmaster.web.rest.publisher; + +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.slider.common.tools.SliderFileSystem; +import org.apache.slider.providers.agent.AgentProviderService; +import org.apache.slider.server.appmaster.actions.QueueAccess; +import org.apache.slider.server.appmaster.state.StateAccessForProviders; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * + */ +public class TestAgentProviderService extends AgentProviderService { + protected static final Logger log = + LoggerFactory.getLogger(TestAgentProviderService.class); + + public TestAgentProviderService() { +super(); +log.info("TestAgentProviderService created"); + } + + @Override + public void bind(StateAccessForProviders stateAccessor, + QueueAccess queueAccess, + List liveContainers) { +super.bind(stateAccessor, queueAccess, liveContainers); +MapdummyProps = new HashMap (); +dummyProps.put("prop1", "val1"); +dummyProps.put("prop2", "val2"); +log.info("publishing dummy-site.xml with values {}", dummyProps); +publishApplicationInstanceData("dummy-site", "dummy configuration", + dummyProps.entrySet()); +// publishing global config for testing purposes +publishApplicationInstanceData("global", "global configuration", + stateAccessor.getAppConfSnapshot() + .getGlobalOptions().entrySet()); + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4beaeb8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java new file mode 100644 index 000..f49e15a --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java @@ -0,0 +1,40 @@ +/* + * 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 + * + *
[27/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java new file mode 100644 index 000..aa5edf1 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java @@ -0,0 +1,915 @@ +/* + * 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 org.apache.slider.common.tools; + +import com.google.common.base.Preconditions; + +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeys; +import org.apache.hadoop.fs.FSDataInputStream; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LocalResourceType; +import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; +import org.apache.hadoop.yarn.util.ConverterUtils; +import org.apache.hadoop.yarn.util.Records; +import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.SliderXmlConfKeys; +import org.apache.slider.core.exceptions.BadClusterStateException; +import org.apache.slider.core.exceptions.ErrorStrings; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.core.exceptions.UnknownApplicationInstanceException; +import org.apache.slider.core.persist.Filenames; +import org.apache.slider.core.persist.InstancePaths; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FilenameFilter; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Map; +import java.util.Enumeration; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import static org.apache.slider.common.SliderXmlConfKeys.CLUSTER_DIRECTORY_PERMISSIONS; +import static org.apache.slider.common.SliderXmlConfKeys.DEFAULT_CLUSTER_DIRECTORY_PERMISSIONS; + +public class CoreFileSystem { + private static final Logger +log = LoggerFactory.getLogger(CoreFileSystem.class); + + private static final String UTF_8 = "UTF-8"; + + protected final FileSystem fileSystem; + protected final Configuration configuration; + + public CoreFileSystem(FileSystem fileSystem, Configuration configuration) { +Preconditions.checkNotNull(fileSystem, + "Cannot create a CoreFileSystem with a null FileSystem"); +Preconditions.checkNotNull(configuration, + "Cannot create a CoreFileSystem with a null Configuration"); +this.fileSystem = fileSystem; +this.configuration = configuration; + } + + public CoreFileSystem(Configuration configuration) throws IOException { +Preconditions.checkNotNull(configuration, + "Cannot create a CoreFileSystem with a null Configuration"); +this.fileSystem = FileSystem.get(configuration); +this.configuration = fileSystem.getConf(); + } + + /** + * Get the temp path for this cluster + * @param clustername name of the cluster + * @return path for temp files (is not purged) + */ + public Path getTempPathForCluster(String clustername) { +Path clusterDir = buildClusterDirPath(clustername); +return new Path(clusterDir, SliderKeys.TMP_DIR_PREFIX); + } + + /** + * Returns the
[36/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java new file mode 100644 index 000..373d64d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/proto/Messages.java @@ -0,0 +1,34473 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: SliderClusterMessages.proto + +package org.apache.slider.api.proto; + +public final class Messages { + private Messages() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface RoleInstanceStateOrBuilder + extends com.google.protobuf.MessageOrBuilder { + +// required string name = 1; +/** + * required string name = 1; + */ +boolean hasName(); +/** + * required string name = 1; + */ +java.lang.String getName(); +/** + * required string name = 1; + */ +com.google.protobuf.ByteString +getNameBytes(); + +// optional string role = 2; +/** + * optional string role = 2; + */ +boolean hasRole(); +/** + * optional string role = 2; + */ +java.lang.String getRole(); +/** + * optional string role = 2; + */ +com.google.protobuf.ByteString +getRoleBytes(); + +// required uint32 state = 4; +/** + * required uint32 state = 4; + */ +boolean hasState(); +/** + * required uint32 state = 4; + */ +int getState(); + +// required uint32 exitCode = 5; +/** + * required uint32 exitCode = 5; + */ +boolean hasExitCode(); +/** + * required uint32 exitCode = 5; + */ +int getExitCode(); + +// optional string command = 6; +/** + * optional string command = 6; + */ +boolean hasCommand(); +/** + * optional string command = 6; + */ +java.lang.String getCommand(); +/** + * optional string command = 6; + */ +com.google.protobuf.ByteString +getCommandBytes(); + +// optional string diagnostics = 7; +/** + * optional string diagnostics = 7; + */ +boolean hasDiagnostics(); +/** + * optional string diagnostics = 7; + */ +java.lang.String getDiagnostics(); +/** + * optional string diagnostics = 7; + */ +com.google.protobuf.ByteString +getDiagnosticsBytes(); + +// repeated string output = 8; +/** + * repeated string output = 8; + */ +java.util.List +getOutputList(); +/** + * repeated string output = 8; + */ +int getOutputCount(); +/** + * repeated string output = 8; + */ +java.lang.String getOutput(int index); +/** + * repeated string output = 8; + */ +com.google.protobuf.ByteString +getOutputBytes(int index); + +// repeated string environment = 9; +/** + * repeated string environment = 9; + */ +java.util.List +getEnvironmentList(); +/** + * repeated string environment = 9; + */ +int getEnvironmentCount(); +/** + * repeated string environment = 9; + */ +java.lang.String getEnvironment(int index); +/** + * repeated string environment = 9; + */ +com.google.protobuf.ByteString +getEnvironmentBytes(int index); + +// required uint32 roleId = 10; +/** + * required uint32 roleId = 10; + */ +boolean hasRoleId(); +/** + * required uint32 roleId = 10; + */ +int getRoleId(); + +// required bool released = 11; +/** + * required bool released = 11; + */ +boolean hasReleased(); +/** + * required bool released = 11; + */ +boolean getReleased(); + +// required int64 createTime = 12; +/** + * required int64 createTime = 12; + */ +boolean hasCreateTime(); +/** + * required int64 createTime = 12; + */ +long getCreateTime(); + +// required int64 startTime = 13; +/** + * required int64 startTime = 13; + */ +boolean hasStartTime(); +/** + * required int64 startTime = 13; + */ +long getStartTime(); + +// required string host = 14; +/** + * required string host = 14; + */ +boolean hasHost(); +/** + * required string host = 14; + */ +java.lang.String getHost(); +/** + * required string host = 14; + */ +
[52/76] [abbrv] hadoop git commit: YARN-5941. Slider handles "per.component" for multiple components incorrectly. Contributed by Billie Rinaldi
YARN-5941. Slider handles "per.component" for multiple components incorrectly. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/427fe372 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/427fe372 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/427fe372 Branch: refs/heads/yarn-native-services Commit: 427fe372b89e63e5f3533b8ad17bf7f0f06cdc78 Parents: 5e0f1b7 Author: Gour SahaAuthored: Wed Nov 30 14:00:22 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../java/org/apache/slider/api/OptionKeys.java | 14 ++ .../org/apache/slider/common/SliderKeys.java| 2 -- .../apache/slider/providers/ProviderUtils.java | 20 3 files changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/427fe372/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java index 434b1d9..988627d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java @@ -53,8 +53,22 @@ public interface OptionKeys extends InternalKeys { * Prefix for export options: {@value} */ String EXPORT_PREFIX = "export."; + /** + * Type suffix for config file and package options: {@value} + */ String TYPE_SUFFIX = ".type"; + /** + * Name suffix for config file and package options: {@value} + */ String NAME_SUFFIX = ".name"; + /** + * Per component suffix for config file options: {@value} + */ + String PER_COMPONENT = ".per.component"; + /** + * Per group suffix for config file options: {@value} + */ + String PER_GROUP = ".per.group"; /** * Zookeeper quorum host list: {@value} http://git-wip-us.apache.org/repos/asf/hadoop/blob/427fe372/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java index 3d25d33..adf40ce 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/SliderKeys.java @@ -304,8 +304,6 @@ public interface SliderKeys extends SliderXmlConfKeys { String APP_RESOURCES = "application.resources"; String APP_RESOURCES_DIR = "app/resources"; - String PER_COMPONENT = "per.component"; - String PER_GROUP = "per.group"; String APP_PACKAGES_DIR = "app/packages"; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/427fe372/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java index 39986c1..bc237f5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java @@ -614,8 +614,16 @@ public class ProviderUtils implements RoleKeys,
[65/76] [abbrv] hadoop git commit: YARN-5505. Create an agent-less docker provider in the native-services framework. Contributed by Billie Rinaldi
YARN-5505. Create an agent-less docker provider in the native-services framework. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cb61fe3f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cb61fe3f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cb61fe3f Branch: refs/heads/yarn-native-services Commit: cb61fe3fa6784cc72f10f90456987bbaa55c8914 Parents: 86a29d4 Author: Jian HeAuthored: Thu Sep 1 22:38:42 2016 +0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../java/org/apache/slider/api/OptionKeys.java | 15 +- .../org/apache/slider/client/SliderClient.java | 17 +- .../org/apache/slider/common/SliderKeys.java| 22 +- .../apache/slider/common/tools/SliderUtils.java |4 + .../slider/core/launch/AbstractLauncher.java| 18 +- .../PublishedConfigurationOutputter.java|6 +- .../providers/AbstractClientProvider.java |4 +- .../providers/AbstractProviderService.java | 22 +- .../slider/providers/ProviderService.java | 12 +- .../apache/slider/providers/ProviderUtils.java | 1391 ++ .../providers/agent/AgentClientProvider.java| 36 +- .../slider/providers/agent/AgentKeys.java | 12 +- .../providers/agent/AgentProviderService.java | 705 ++--- .../providers/docker/DockerClientProvider.java | 96 ++ .../slider/providers/docker/DockerKeys.java | 32 + .../providers/docker/DockerProviderFactory.java | 43 + .../providers/docker/DockerProviderService.java | 355 + .../slideram/SliderAMProviderService.java |4 - .../server/appmaster/SliderAppMaster.java | 39 +- .../main/resources/org/apache/slider/slider.xml |4 + .../slider/providers/docker/appConfig.json | 42 + .../slider/providers/docker/resources.json | 16 + .../slider/providers/docker/test.template | 16 + 23 files changed, 1971 insertions(+), 940 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb61fe3f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java index a035a99..434b1d9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/api/OptionKeys.java @@ -41,7 +41,20 @@ public interface OptionKeys extends InternalKeys { * Prefix for site.xml options: {@value} */ String SITE_XML_PREFIX = "site."; - + /** + * Prefix for config file options: {@value} + */ + String CONF_FILE_PREFIX = "conf."; + /** + * Prefix for package options: {@value} + */ + String PKG_FILE_PREFIX = "pkg."; + /** + * Prefix for export options: {@value} + */ + String EXPORT_PREFIX = "export."; + String TYPE_SUFFIX = ".type"; + String NAME_SUFFIX = ".name"; /** * Zookeeper quorum host list: {@value} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb61fe3f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 3129f6f..5096bb7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -151,7 +151,6 @@ import org.apache.slider.core.registry.YarnAppListClient; import org.apache.slider.core.registry.docstore.ConfigFormat; import org.apache.slider.core.registry.docstore.PublishedConfigSet; import org.apache.slider.core.registry.docstore.PublishedConfiguration;
[31/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java new file mode 100644 index 000..30f6ba9 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java @@ -0,0 +1,368 @@ +/* + * 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 org.apache.slider.client; + +import org.apache.hadoop.registry.client.api.RegistryOperations; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.yarn.api.records.ApplicationReport; +import org.apache.hadoop.yarn.api.records.YarnApplicationState; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.slider.api.types.NodeInformationList; +import org.apache.slider.api.types.SliderInstanceDescription; +import org.apache.slider.common.params.AbstractClusterBuildingActionArgs; +import org.apache.slider.common.params.ActionAMSuicideArgs; +import org.apache.slider.common.params.ActionClientArgs; +import org.apache.slider.common.params.ActionDependencyArgs; +import org.apache.slider.common.params.ActionDestroyArgs; +import org.apache.slider.common.params.ActionDiagnosticArgs; +import org.apache.slider.common.params.ActionEchoArgs; +import org.apache.slider.common.params.ActionFlexArgs; +import org.apache.slider.common.params.ActionFreezeArgs; +import org.apache.slider.common.params.ActionInstallKeytabArgs; +import org.apache.slider.common.params.ActionInstallPackageArgs; +import org.apache.slider.common.params.ActionKeytabArgs; +import org.apache.slider.common.params.ActionNodesArgs; +import org.apache.slider.common.params.ActionPackageArgs; +import org.apache.slider.common.params.ActionKillContainerArgs; +import org.apache.slider.common.params.ActionListArgs; +import org.apache.slider.common.params.ActionRegistryArgs; +import org.apache.slider.common.params.ActionResolveArgs; +import org.apache.slider.common.params.ActionResourceArgs; +import org.apache.slider.common.params.ActionStatusArgs; +import org.apache.slider.common.params.ActionThawArgs; +import org.apache.slider.common.params.ActionUpgradeArgs; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.providers.AbstractClientProvider; + +import java.io.IOException; +import java.util.Map; + +/** + * Interface of those method calls in the slider API that are intended + * for direct public invocation. + * + * Stability: evolving + */ +public interface SliderClientAPI extends Service { + /** + * Destroy a cluster. There's two race conditions here + * #1 the cluster is started between verifying that there are no live + * clusters of that name. + */ + int actionDestroy(String clustername, ActionDestroyArgs destroyArgs) + throws YarnException, IOException; + + int actionDestroy(String clustername) throws YarnException, + IOException; + + /** + * AM to commit an asynchronous suicide + */ + int actionAmSuicide(String clustername, + ActionAMSuicideArgs args) throws YarnException, IOException; + + /** + * Get the provider for this cluster + * @param provider the name of the provider + * @return the provider instance + * @throws SliderException problems building the provider + */ + AbstractClientProvider createClientProvider(String provider) +throws SliderException; + + /** + * Build up the cluster specification/directory + * + * @param clustername cluster name + * @param buildInfo the arguments needed to build the cluster + * @throws YarnException Yarn problems + * @throws IOException other
[23/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/RunService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/RunService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/RunService.java new file mode 100644 index 000..c3a1d0e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/RunService.java @@ -0,0 +1,62 @@ +/* + * 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 org.apache.slider.core.main; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.service.Service; + +/** + * An interface which services can implement to have their + * execution managed by the ServiceLauncher. + * The command line options will be passed down before the + * {@link Service#init(Configuration)} operation is invoked via an + * invocation of {@link RunService#bindArgs(Configuration, String...)} + * After the service has been successfully started via {@link Service#start()} + * the {@link RunService#runService()} method is called to execute the + * service. When this method returns, the service launcher will exit, using + * the return code from the method as its exit option. + */ +public interface RunService extends Service { + + /** + * Propagate the command line arguments. + * This method is called before {@link Service#init(Configuration)}; + * the configuration that is returned from this operation + * is the one that is passed on to the init operation. + * This permits implemenations to change the configuration before + * the init operation.n + * + * + * @param config the initial configuration build up by the + * service launcher. + * @param args argument list list of arguments passed to the command line + * after any launcher-specific commands have been stripped. + * @return the configuration to init the service with. This MUST NOT be null. + * Recommended: pass down the config parameter with any changes + * @throws Exception any problem + */ + Configuration bindArgs(Configuration config, String... args) throws Exception; + + /** + * Run a service. This called after {@link Service#start()} + * @return the exit code + * @throws Throwable any exception to report + */ + int runService() throws Throwable ; +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/ServiceLaunchException.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/ServiceLaunchException.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/ServiceLaunchException.java new file mode 100644 index 000..27813b7 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/main/ServiceLaunchException.java @@ -0,0 +1,73 @@ +/* + * 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
[54/76] [abbrv] hadoop git commit: YARN-5778. Add .keep file for yarn native services AM web app. Contributed by Billie Rinaldi
YARN-5778. Add .keep file for yarn native services AM web app. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9c4a2d6c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9c4a2d6c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9c4a2d6c Branch: refs/heads/yarn-native-services Commit: 9c4a2d6ceb2b7181b3946b3b430fd86712dad2e3 Parents: 7ec43e6 Author: Gour SahaAuthored: Tue Oct 25 10:06:16 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../src/main/resources/webapps/slideram/.keep| 0 1 file changed, 0 insertions(+), 0 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9c4a2d6c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/resources/webapps/slideram/.keep -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/resources/webapps/slideram/.keep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/resources/webapps/slideram/.keep new file mode 100644 index 000..e69de29 - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[46/76] [abbrv] hadoop git commit: YARN-5610. Initial code for native services REST API. Contributed by Gour Saha
http://git-wip-us.apache.org/repos/asf/hadoop/blob/019adbc8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java new file mode 100644 index 000..cfcae95 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java @@ -0,0 +1,452 @@ +/* + * 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 org.apache.hadoop.yarn.services.resource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import org.apache.slider.providers.PlacementPolicy; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +/** + * An Application resource has the following attributes. + **/ + +@ApiModel(description = "An Application resource has the following attributes.") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-06-02T08:15:05.615-07:00") +@XmlRootElement +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ " name, state, resource, numberOfContainers, lifetime, containers " }) +public class Application extends BaseResource { + private static final long serialVersionUID = -4491694636566094885L; + + private String id = null; + private String name = null; + private Artifact artifact = null; + private Resource resource = null; + private String launchCommand = null; + private Date launchTime = null; + private Long numberOfContainers = null; + private Long numberOfRunningContainers = null; + private Long lifetime = null; + private PlacementPolicy placementPolicy = null; + private List components = null; + private Configuration configuration = null; + private List containers = new ArrayList<>(); + private ApplicationState state = null; + private Mapquicklinks = null; + private String queue; + + /** + * A unique application id. + **/ + public Application id(String id) { +this.id = id; +return this; + } + + @ApiModelProperty(example = "null", required = true, value = "A unique application id.") + @JsonProperty("id") + public String getId() { +return id; + } + + public void setId(String id) { +this.id = id; + } + + /** + * A unique application name. + **/ + public Application name(String name) { +this.name = name; +return this; + } + + @ApiModelProperty(example = "null", required = true, value = "A unique application name.") + @JsonProperty("name") + public String getName() { +return name; + } + + public void setName(String name) { +this.name = name; + } + + /** + * Artifact of single-component applications. Mandatory if components + * attribute is not specified. + **/ + public Application artifact(Artifact artifact) { +this.artifact = artifact; +return this; + } + + @ApiModelProperty(example = "null", value = "Artifact of single-component applications. Mandatory if components attribute is not specified.") + @JsonProperty("artifact") + public Artifact getArtifact() { +return artifact; + } + + public void setArtifact(Artifact artifact) { +this.artifact = artifact; + } + + /** + * Resource of single-component applications or the global default for + * multi-component applications. Mandatory if it is a single-component + * application and if cpus and memory are not specified at the
[24/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java new file mode 100644 index 000..5a3eb3d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java @@ -0,0 +1,528 @@ +/* + * 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 org.apache.slider.core.launch; + +import com.google.common.base.Preconditions; + +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.security.Credentials; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; +import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LogAggregationContext; +import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.util.Records; +import org.apache.slider.api.ResourceKeys; +import org.apache.slider.api.RoleKeys; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.tools.CoreFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.conf.MapOperations; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.Method; +import java.lang.reflect.InvocationTargetException; +import java.io.File; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +/** + * Launcher of applications: base class + */ +public abstract class AbstractLauncher extends Configured { + private static final Logger log = +LoggerFactory.getLogger(AbstractLauncher.class); + public static final String CLASSPATH = "CLASSPATH"; + /** + * Filesystem to use for the launch + */ + protected final CoreFileSystem coreFileSystem; + /** + * Env vars; set up at final launch stage + */ + protected final MapenvVars = new HashMap<>(); + protected final MapOperations env = new MapOperations("env", envVars); + protected final ContainerLaunchContext containerLaunchContext = +Records.newRecord(ContainerLaunchContext.class); + protected final List commands = new ArrayList<>(20); + protected final Map localResources = new HashMap<>(); + protected final Map mountPaths = new HashMap<>(); + private final Map serviceData = new HashMap<>(); + // security + protected final Credentials credentials; + protected LogAggregationContext logAggregationContext; + protected boolean yarnDockerMode = false; + protected String dockerImage; + protected String yarnContainerMountPoints; + protected String runPrivilegedContainer; + + + /** + * Create instance. + * @param conf configuration + * @param coreFileSystem filesystem + * @param credentials initial set of credentials -null is permitted + */ + protected AbstractLauncher(Configuration conf, + CoreFileSystem coreFileSystem, + Credentials credentials) { +super(conf); +this.coreFileSystem = coreFileSystem; +this.credentials = credentials != null ? credentials: new Credentials(); + } + + /** + * Get the container. Until "completed", this isn't valid to launch. + * @return the container to launch + */ + public ContainerLaunchContext getContainerLaunchContext() { +return
[69/76] [abbrv] hadoop git commit: YARN-5808. Add gc log options to the yarn daemon script when starting services-api. Contributed by Billie Rinaldi
YARN-5808. Add gc log options to the yarn daemon script when starting services-api. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5877e0c4 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5877e0c4 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5877e0c4 Branch: refs/heads/yarn-native-services Commit: 5877e0c4e59fe08ffdbed735b8ff248c2468bd16 Parents: 2d644df Author: Gour SahaAuthored: Thu Nov 10 11:35:02 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- hadoop-yarn-project/hadoop-yarn/bin/yarn | 16 hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh | 12 2 files changed, 20 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5877e0c4/hadoop-yarn-project/hadoop-yarn/bin/yarn -- diff --git a/hadoop-yarn-project/hadoop-yarn/bin/yarn b/hadoop-yarn-project/hadoop-yarn/bin/yarn index 26d54b8..2396a7a 100755 --- a/hadoop-yarn-project/hadoop-yarn/bin/yarn +++ b/hadoop-yarn-project/hadoop-yarn/bin/yarn @@ -47,7 +47,7 @@ function hadoop_usage hadoop_add_subcommand "resourcemanager" "run the ResourceManager" hadoop_add_subcommand "rmadmin" "admin tools" hadoop_add_subcommand "scmadmin" "SharedCacheManager admin tools" - hadoop_add_subcommand "services-api" "run slider services api" + hadoop_add_subcommand "servicesapi" "run slider services api" hadoop_add_subcommand "sharedcachemanager" "run the SharedCacheManager daemon" hadoop_add_subcommand "slider" "run a slider app" hadoop_add_subcommand "timelinereader" "run the timeline reader server" @@ -144,20 +144,20 @@ function yarncmd_case scmadmin) HADOOP_CLASSNAME='org.apache.hadoop.yarn.client.SCMAdmin' ;; -services-api) +servicesapi) HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true" hadoop_add_classpath "${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR}/slider"'/*' hadoop_add_classpath "${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR}/services-api"'/*' HADOOP_CLASSNAME='org.apache.hadoop.yarn.services.webapp.ApplicationApiWebApp' - hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS" - HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS} \ --Dslider.libdir=${HADOOP_YARN_HOME}/${YARN_DIR},\ + local sld="${HADOOP_YARN_HOME}/${YARN_DIR},\ ${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR},\ ${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR}/slider,\ ${HADOOP_HDFS_HOME}/${HDFS_DIR},\ ${HADOOP_HDFS_HOME}/${HDFS_LIB_JARS_DIR},\ ${HADOOP_COMMON_HOME}/${HADOOP_COMMON_DIR},\ ${HADOOP_COMMON_HOME}/${HADOOP_COMMON_LIB_JARS_DIR}" + hadoop_translate_cygwin_path sld + hadoop_add_param HADOOP_OPTS slider.libdir "-Dslider.libdir=${sld}" ;; sharedcachemanager) HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true" @@ -166,15 +166,15 @@ ${HADOOP_COMMON_HOME}/${HADOOP_COMMON_LIB_JARS_DIR}" slider) hadoop_add_classpath "${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR}/slider"'/*' HADOOP_CLASSNAME='org.apache.slider.Slider' - hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS" - HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS} \ --Dslider.libdir=${HADOOP_YARN_HOME}/${YARN_DIR},\ + local sld="${HADOOP_YARN_HOME}/${YARN_DIR},\ ${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR},\ ${HADOOP_YARN_HOME}/${YARN_LIB_JARS_DIR}/slider,\ ${HADOOP_HDFS_HOME}/${HDFS_DIR},\ ${HADOOP_HDFS_HOME}/${HDFS_LIB_JARS_DIR},\ ${HADOOP_COMMON_HOME}/${HADOOP_COMMON_DIR},\ ${HADOOP_COMMON_HOME}/${HADOOP_COMMON_LIB_JARS_DIR}" + hadoop_translate_cygwin_path sld + hadoop_add_param HADOOP_OPTS slider.libdir "-Dslider.libdir=${sld}" ;; timelinereader) HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true" http://git-wip-us.apache.org/repos/asf/hadoop/blob/5877e0c4/hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh -- diff --git a/hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh b/hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh index d003adb..3828897 100644 --- a/hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh +++ b/hadoop-yarn-project/hadoop-yarn/conf/yarn-env.sh @@ -136,3 +136,15 @@ # See ResourceManager for some examples # #export YARN_SHAREDCACHEMANAGER_OPTS= + +### +# Services API specific parameters +### +# Specify the JVM options to be used when starting the services API. +# +# These options will be appended to the options specified as HADOOP_OPTS +# and therefore may override any similar flags set in HADOOP_OPTS +# +# See ResourceManager for some examples +# +#export YARN_SERVICESAPI_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
[45/76] [abbrv] hadoop git commit: YARN-5610. Initial code for native services REST API. Contributed by Gour Saha
http://git-wip-us.apache.org/repos/asf/hadoop/blob/019adbc8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Resource.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Resource.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Resource.java new file mode 100644 index 000..a3780cc --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Resource.java @@ -0,0 +1,149 @@ +/* + * 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 org.apache.hadoop.yarn.services.resource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Resource determines the amount of resources (vcores, memory, network, etc.) + * usable by a container. This field determines the resource to be applied for + * all the containers of a component or application. The resource specified at + * the app (or global) level can be overriden at the component level. Only one + * of profile OR cpu memory are exepected. It raises a validation + * exception otherwise. + **/ + +@ApiModel(description = "Resource determines the amount of resources (vcores, memory, network, etc.) usable by a container. This field determines the resource to be applied for all the containers of a component or application. The resource specified at the app (or global) level can be overriden at the component level. Only one of profile OR cpu & memory are exepected. It raises a validation exception otherwise.") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-06-02T08:15:05.615-07:00") +public class Resource extends BaseResource { + private static final long serialVersionUID = -6431667797380250037L; + + private String profile = null; + private Integer cpus = null; + private String memory = null; + + /** + * Each resource profile has a unique id which is associated with a + * cluster-level predefined memory, cpus, etc. + **/ + public Resource profile(String profile) { +this.profile = profile; +return this; + } + + @ApiModelProperty(example = "null", value = "Each resource profile has a unique id which is associated with a cluster-level predefined memory, cpus, etc.") + @JsonProperty("profile") + public String getProfile() { +return profile; + } + + public void setProfile(String profile) { +this.profile = profile; + } + + /** + * Amount of vcores allocated to each container (optional but overrides cpus + * in profile if specified). + **/ + public Resource cpus(Integer cpus) { +this.cpus = cpus; +return this; + } + + @ApiModelProperty(example = "null", value = "Amount of vcores allocated to each container (optional but overrides cpus in profile if specified).") + @JsonProperty("cpus") + public Integer getCpus() { +return cpus; + } + + public void setCpus(Integer cpus) { +this.cpus = cpus; + } + + /** + * Amount of memory allocated to each container (optional but overrides memory + * in profile if specified). Currently accepts only an integer value and + * default unit is in MB. + **/ + public Resource memory(String memory) { +this.memory = memory; +return this; + } + + @ApiModelProperty(example = "null", value = "Amount of memory allocated to each container (optional but overrides memory in profile if specified). Currently accepts only an integer value and default unit is in MB.") + @JsonProperty("memory") + public String getMemory() { +return memory; + } + + public void setMemory(String memory) { +this.memory = memory; + } + + @Override + public boolean equals(java.lang.Object o) { +if (this == o) { + return true; +} +if (o == null || getClass() !=
[43/76] [abbrv] hadoop git commit: YARN-5813. Slider should not try to set a negative lifetime timeout value. Contributed by Jian He
YARN-5813. Slider should not try to set a negative lifetime timeout value. Contributed by Jian He Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/92f6fe53 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/92f6fe53 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/92f6fe53 Branch: refs/heads/yarn-native-services Commit: 92f6fe53fd412a44db87e06707c091f35b1c541f Parents: c3f32f4 Author: Gour SahaAuthored: Tue Nov 1 17:39:54 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../src/main/java/org/apache/slider/client/SliderClient.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/92f6fe53/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java index d1f88c5..ea10ed0 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -2120,7 +2120,9 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe amLauncher.setKeepContainersOverRestarts(true); // set lifetime in submission context; Map appTimeout = new HashMap<>(); -appTimeout.put(ApplicationTimeoutType.LIFETIME, lifetime); +if (lifetime >= 0) { + appTimeout.put(ApplicationTimeoutType.LIFETIME, lifetime); +} amLauncher.submissionContext.setApplicationTimeouts(appTimeout); int maxAppAttempts = config.getInt(KEY_AM_RESTART_LIMIT, 0); amLauncher.setMaxAppAttempts(maxAppAttempts); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[50/76] [abbrv] hadoop git commit: YARN-5689. Update native services REST API to use agentless docker provider. Contributed by Billie Rinaldi & Gour Saha
YARN-5689. Update native services REST API to use agentless docker provider. Contributed by Billie Rinaldi & Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5b728931 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5b728931 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5b728931 Branch: refs/heads/yarn-native-services Commit: 5b7289317c388359d379e5b346dcfe86096531f7 Parents: fba18cb Author: Jian HeAuthored: Thu Oct 13 11:34:58 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../api/impl/ApplicationApiService.java | 251 ++- .../yarn/services/utils/RestApiConstants.java | 3 - .../api/impl/TestApplicationApiService.java | 6 +- 3 files changed, 79 insertions(+), 181 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5b728931/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java index 9645696..0a62629 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/api/impl/ApplicationApiService.java @@ -50,7 +50,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.SerializationUtils; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.security.UserGroupInformation; @@ -68,10 +67,12 @@ import org.apache.hadoop.yarn.services.resource.Configuration; import org.apache.hadoop.yarn.services.resource.Container; import org.apache.hadoop.yarn.services.resource.ContainerState; import org.apache.hadoop.yarn.services.resource.Resource; +import org.apache.slider.api.OptionKeys; import org.apache.slider.api.ResourceKeys; import org.apache.slider.api.StateValues; import org.apache.slider.client.SliderClient; import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.SliderKeys; import org.apache.slider.common.params.ActionCreateArgs; import org.apache.slider.common.params.ActionFlexArgs; import org.apache.slider.common.params.ActionFreezeArgs; @@ -88,12 +89,11 @@ import org.apache.slider.core.exceptions.NotFoundException; import org.apache.slider.core.exceptions.SliderException; import org.apache.slider.core.exceptions.UnknownApplicationInstanceException; import org.apache.slider.core.registry.docstore.ConfigFormat; +import org.apache.slider.providers.docker.DockerKeys; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.annotations.VisibleForTesting; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonObject; @@ -211,7 +211,8 @@ public class ApplicationApiService implements ApplicationApi { application.setConfiguration(new Configuration()); } addPropertyToConfiguration(application.getConfiguration(), -PROPERTY_COMPONENT_TYPE, COMPONENT_TYPE_EXTERNAL); +SliderKeys.COMPONENT_TYPE_KEY, +SliderKeys.COMPONENT_TYPE_EXTERNAL_APP); } // resource validateApplicationResource(application.getResource(), null, application @@ -249,7 +250,8 @@ public class ApplicationApiService implements ApplicationApi { comp.setConfiguration(new Configuration()); } addPropertyToConfiguration(comp.getConfiguration(), - PROPERTY_COMPONENT_TYPE, COMPONENT_TYPE_EXTERNAL); + SliderKeys.COMPONENT_TYPE_KEY, + SliderKeys.COMPONENT_TYPE_EXTERNAL_APP); compNameArtifactIdMap.put(comp.getName(), comp.getArtifact().getId()); comp.setName(comp.getArtifact().getId()); } @@ -339,9 +341,9 @@ public class ApplicationApiService implements ApplicationApi { final ActionCreateArgs createArgs = new ActionCreateArgs(); addAppConfOptions(createArgs, application, compNameArtifactIdMap);
[63/76] [abbrv] hadoop git commit: YARN-5505. Create an agent-less docker provider in the native-services framework. Contributed by Billie Rinaldi
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb61fe3f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java new file mode 100644 index 000..bebb5f0 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/docker/DockerProviderService.java @@ -0,0 +1,355 @@ +/* + * 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 org.apache.slider.providers.docker; + +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.registry.client.types.ServiceRecord; +import org.apache.hadoop.yarn.api.ApplicationConstants; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.api.records.ContainerStatus; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LocalResourceType; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.OptionKeys; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.tools.SliderFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.core.launch.CommandLineBuilder; +import org.apache.slider.core.launch.ContainerLauncher; +import org.apache.slider.core.registry.docstore.ConfigFormat; +import org.apache.slider.core.registry.docstore.ConfigUtils; +import org.apache.slider.core.registry.docstore.ExportEntry; +import org.apache.slider.providers.AbstractProviderService; +import org.apache.slider.providers.ProviderCore; +import org.apache.slider.providers.ProviderRole; +import org.apache.slider.providers.ProviderUtils; +import org.apache.slider.server.appmaster.state.RoleInstance; +import org.apache.slider.server.appmaster.state.StateAccessForProviders; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Scanner; + +public class DockerProviderService extends AbstractProviderService implements +ProviderCore, +DockerKeys, +SliderKeys { + + protected static final Logger log = + LoggerFactory.getLogger(DockerProviderService.class); + private static final ProviderUtils providerUtils = new ProviderUtils(log); + private static final String EXPORT_GROUP = "quicklinks"; + private static final String APPLICATION_TAG = "application"; + + private String clusterName = null; + private SliderFileSystem fileSystem = null; + + protected DockerProviderService() { +super("DockerProviderService"); + } + + @Override + public List getRoles() { +return Collections.emptyList(); + } + + @Override + public boolean isSupportedRole(String role) { +return true; + } + + @Override + public void validateInstanceDefinition(AggregateConf instanceDefinition) + throws SliderException { + } + + private String getClusterName() { +if (SliderUtils.isUnset(clusterName)) { + clusterName = getAmState().getInternalsSnapshot().get(OptionKeys.APPLICATION_NAME); +} +return clusterName; + } + + @Override + public void
[25/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java new file mode 100644 index 000..86025ee --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java @@ -0,0 +1,108 @@ +/* + * 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 org.apache.slider.common.tools; + +import org.apache.hadoop.util.VersionInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Locale; +import java.util.Properties; + +/** + * Extract the version properties, which will look something like + * + * application.name=${pom.name} + * application.version=${pom.version} + * application.build=${buildNumber} + * application.build.java.version=${java.version} + * application.build.info=${pom.name}-${pom.version} Built against ${buildNumber} on ${java.version} by ${user.name} + * + * + * the mvn process-resources target will expand the properties + * and add the resources to target/classes, which will then look something like + * + * application.name=Slider Core + * application.version=0.7.1-SNAPSHOT + * application.build=1dd69 + * application.build.java.version=1.7.0_45 + * application.build.user=stevel + * application.build.info=Slider Core-0.7.1-SNAPSHOT Built against 1dd69 on 1.7.0_45 by stevel + * + * + * Note: the values will change and more properties added. + */ +public class SliderVersionInfo { + private static final Logger log = LoggerFactory.getLogger(SliderVersionInfo.class); + + /** + * Name of the resource containing the filled-in-at-runtime props + */ + public static final String VERSION_RESOURCE = + "org/apache/slider/providers/dynamic/application.properties"; + + public static final String APP_NAME = "application.name"; + public static final String APP_VERSION = "application.version"; + public static final String APP_BUILD = "application.build"; + public static final String APP_BUILD_JAVA_VERSION = "application.build.java.version"; + public static final String APP_BUILD_USER = "application.build.user"; + public static final String APP_BUILD_INFO = "application.build.info"; + public static final String HADOOP_BUILD_INFO = "hadoop.build.info"; + public static final String HADOOP_DEPLOYED_INFO = "hadoop.deployed.info"; + + + public static Properties loadVersionProperties() { +Properties props = new Properties(); +URL resURL = SliderVersionInfo.class.getClassLoader() + .getResource(VERSION_RESOURCE); +assert resURL != null : "Null resource " + VERSION_RESOURCE; + +try { + InputStream inStream = resURL.openStream(); + assert inStream != null : "Null input stream from " + VERSION_RESOURCE; + props.load(inStream); +} catch (IOException e) { + log.warn("IOE loading " + VERSION_RESOURCE, e); +} +return props; + } + + /** + * Load the version info and print it + * @param logger logger + */ + public static void loadAndPrintVersionInfo(Logger logger) { +Properties props = loadVersionProperties(); +logger.info(props.getProperty(APP_BUILD_INFO)); +logger.info("Compiled against Hadoop {}", +props.getProperty(HADOOP_BUILD_INFO)); +logger.info(getHadoopVersionString()); + } + + public static String getHadoopVersionString() { +return String.format(Locale.ENGLISH, +"Hadoop runtime version %s with source checksum %s and build date %s", +VersionInfo.getBranch(), +
[66/76] [abbrv] hadoop git commit: YARN-5944. Native services AM should remain up if RM is down. Contributed by Billie Rinaldi
YARN-5944. Native services AM should remain up if RM is down. Contributed by Billie Rinaldi Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0c1ad96b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0c1ad96b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0c1ad96b Branch: refs/heads/yarn-native-services Commit: 0c1ad96b9eee1811c3cc95bd2224bbb27f625c2f Parents: 4f3033b Author: Gour SahaAuthored: Thu Dec 1 00:30:01 2016 -0800 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../org/apache/slider/server/appmaster/SliderAppMaster.java | 5 + 1 file changed, 5 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0c1ad96b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java index 34b6a7d..8c39343 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -705,6 +705,11 @@ public class SliderAppMaster extends AbstractSliderLaunchedService synchronized (appState) { int heartbeatInterval = HEARTBEAT_INTERVAL; + // configure AM to wait forever for RM + getConfig().setLong(YarnConfiguration.RESOURCEMANAGER_CONNECT_MAX_WAIT_MS, + -1); + getConfig().unset(YarnConfiguration.CLIENT_FAILOVER_MAX_ATTEMPTS); + // add the RM client -this brings the callbacks in asyncRMClient = AMRMClientAsync.createAMRMClientAsync(heartbeatInterval, this); addService(asyncRMClient); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[28/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ComponentArgsDelegate.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ComponentArgsDelegate.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ComponentArgsDelegate.java new file mode 100644 index 000..5140059 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/ComponentArgsDelegate.java @@ -0,0 +1,52 @@ +/* + * 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 org.apache.slider.common.params; + +import com.beust.jcommander.Parameter; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ComponentArgsDelegate extends AbstractArgsDelegate { + + /** + * This is a listing of the roles to create + */ + @Parameter(names = {ARG_COMPONENT, ARG_COMPONENT_SHORT, ARG_ROLE}, + arity = 2, + description = "--component e.g. +1 incr by 1, -2 decr by 2, and 3 makes final count 3", + splitter = DontSplitArguments.class) + public List componentTuples = new ArrayList<>(0); + + + /** + * Get the role mapping (may be empty, but never null) + * @return role mapping + * @throws BadCommandArgumentsException parse problem + */ + public MapgetComponentMap() throws BadCommandArgumentsException { +return convertTupleListToMap("component", componentTuples); + } + + public List getComponentTuples() { +return componentTuples; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/DontSplitArguments.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/DontSplitArguments.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/DontSplitArguments.java new file mode 100644 index 000..0344305 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/common/params/DontSplitArguments.java @@ -0,0 +1,34 @@ +/* + * 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 org.apache.slider.common.params; + +import com.beust.jcommander.converters.IParameterSplitter; + +import java.util.ArrayList; +import java.util.List; + +public class DontSplitArguments implements IParameterSplitter { + + @Override + public List split(String value) { +List list = new ArrayList<>(1); +list.add(value); +return list; + } +}
[75/76] [abbrv] hadoop git commit: Addendum patch for YARN-5610. Contributed by Gour Saha
Addendum patch for YARN-5610. Contributed by Gour Saha Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fba18cbe Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fba18cbe Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fba18cbe Branch: refs/heads/yarn-native-services Commit: fba18cbe97bfe524ee007a435db32bb3057716c7 Parents: 69c9724 Author: Jian HeAuthored: Wed Oct 12 13:33:09 2016 -0700 Committer: Jian He Committed: Wed Dec 7 13:00:06 2016 -0800 -- .../yarn/services/resource/Application.java | 44 ++-- .../services/resource/ApplicationState.java | 5 +++ .../services/resource/ApplicationStatus.java| 8 ++-- .../hadoop/yarn/services/resource/Artifact.java | 4 +- .../yarn/services/resource/Component.java | 16 +++ .../yarn/services/resource/Container.java | 15 --- .../yarn/services/resource/ReadinessCheck.java | 6 +-- 7 files changed, 54 insertions(+), 44 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fba18cbe/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java index cfcae95..719bf95 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/Application.java @@ -48,8 +48,8 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; public class Application extends BaseResource { private static final long serialVersionUID = -4491694636566094885L; - private String id = null; private String name = null; + private String id = null; private Artifact artifact = null; private Resource resource = null; private String launchCommand = null; @@ -63,25 +63,7 @@ public class Application extends BaseResource { private List containers = new ArrayList<>(); private ApplicationState state = null; private Map quicklinks = null; - private String queue; - - /** - * A unique application id. - **/ - public Application id(String id) { -this.id = id; -return this; - } - - @ApiModelProperty(example = "null", required = true, value = "A unique application id.") - @JsonProperty("id") - public String getId() { -return id; - } - - public void setId(String id) { -this.id = id; - } + private String queue = null; /** * A unique application name. @@ -102,6 +84,24 @@ public class Application extends BaseResource { } /** + * A unique application id. + **/ + public Application id(String id) { +this.id = id; +return this; + } + + @ApiModelProperty(example = "null", value = "A unique application id.") + @JsonProperty("id") + public String getId() { +return id; + } + + public void setId(String id) { +this.id = id; + } + + /** * Artifact of single-component applications. Mandatory if components * attribute is not specified. **/ @@ -423,8 +423,8 @@ public class Application extends BaseResource { sb.append("numberOfRunningContainers: ") .append(toIndentedString(numberOfRunningContainers)).append("\n"); sb.append("lifetime: ").append(toIndentedString(lifetime)).append("\n"); -sb.append("placementPolicy: ") -.append(toIndentedString(placementPolicy)).append("\n"); +sb.append("placementPolicy: ").append(toIndentedString(placementPolicy)) +.append("\n"); sb.append("components: ").append(toIndentedString(components)) .append("\n"); sb.append("configuration: ").append(toIndentedString(configuration)) http://git-wip-us.apache.org/repos/asf/hadoop/blob/fba18cbe/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ApplicationState.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/services/resource/ApplicationState.java
[06/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationResponse.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationResponse.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationResponse.java new file mode 100644 index 000..80b7a5e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationResponse.java @@ -0,0 +1,133 @@ +/* + * 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 org.apache.slider.server.appmaster.web.rest.agent; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class RegistrationResponse { + + @JsonProperty("response") + private RegistrationStatus response; + + /** + * exitstatus is a code of error which was rised on server side. exitstatus + * = 0 (OK - Default) exitstatus = 1 (Registration failed because different + * version of agent and server) + */ + @JsonProperty("exitstatus") + private int exitstatus; + + /** log - message, which will be printed to agents log */ + @JsonProperty("log") + private String log; + + /** tags - tags associated with the container */ + @JsonProperty("tags") + private String tags; + + @JsonProperty("package") + private String pkg; + + //Response id to start with, usually zero. + @JsonProperty("responseId") + private long responseId; + + @JsonProperty("statusCommands") + private List statusCommands = null; + + public RegistrationResponse() { + } + + public RegistrationStatus getResponse() { +return response; + } + + public void setResponse(RegistrationStatus response) { +this.response = response; + } + + public int getExitstatus() { +return exitstatus; + } + + public void setExitstatus(int exitstatus) { +this.exitstatus = exitstatus; + } + + public RegistrationStatus getResponseStatus() { +return response; + } + + public void setResponseStatus(RegistrationStatus response) { +this.response = response; + } + + public List getStatusCommands() { +return statusCommands; + } + + public void setStatusCommands(List statusCommands) { +this.statusCommands = statusCommands; + } + + public long getResponseId() { +return responseId; + } + + public void setResponseId(long responseId) { +this.responseId = responseId; + } + + public String getTags() { +return tags; + } + + public void setTags(String tags) { +this.tags = tags; + } + + public String getLog() { +return log; + } + + public void setLog(String log) { +this.log = log; + } + + public String getPkg() { +return pkg; + } + + public void setPkg(String pkg) { +this.pkg = pkg; + } + + @Override + public String toString() { +return "RegistrationResponse{" + + "response=" + response + + ", responseId=" + responseId + + ", statusCommands=" + statusCommands + + '}'; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationStatus.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/RegistrationStatus.java
[07/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentEnv.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentEnv.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentEnv.java new file mode 100644 index 000..781ae00 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentEnv.java @@ -0,0 +1,376 @@ +/* + * 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 org.apache.slider.server.appmaster.web.rest.agent; + +import com.google.gson.annotations.SerializedName; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class AgentEnv { + + /** + * Various directories, configurable in ambari-agent.ini + */ + private Directory[] stackFoldersAndFiles = new Directory[0]; + + /** + * Directories that match name /etc/alternatives/*conf + */ + private Alternative[] alternatives = new Alternative[0]; + + /** + * List of existing users + */ + private ExistingUser[] existingUsers = new ExistingUser[0]; + + /** + * List of repos + */ + private String[] existingRepos = new String[0]; + + /** + * List of packages + */ + private PackageDetail[] installedPackages = new PackageDetail[0]; + + /** + * The host health report + */ + private HostHealth hostHealth = new HostHealth(); + + private Integer umask; + + private Boolean iptablesIsRunning; + + public Integer getUmask() { +return umask; + } + + public void setUmask(Integer umask) { +this.umask = umask; + } + + public Directory[] getStackFoldersAndFiles() { +return stackFoldersAndFiles; + } + + public void setStackFoldersAndFiles(Directory[] dirs) { +stackFoldersAndFiles = dirs; + } + + public void setExistingUsers(ExistingUser[] users) { +existingUsers = users; + } + + public ExistingUser[] getExistingUsers() { +return existingUsers; + } + + public void setAlternatives(Alternative[] dirs) { +alternatives = dirs; + } + + public Alternative[] getAlternatives() { +return alternatives; + } + + public void setExistingRepos(String[] repos) { +existingRepos = repos; + } + + public String[] getExistingRepos() { +return existingRepos; + } + + public void setInstalledPackages(PackageDetail[] packages) { +installedPackages = packages; + } + + public PackageDetail[] getInstalledPackages() { +return installedPackages; + } + + public void setHostHealth(HostHealth healthReport) { +hostHealth = healthReport; + } + + public HostHealth getHostHealth() { +return hostHealth; + } + + public Boolean getIptablesIsRunning() { +return iptablesIsRunning; + } + + public void setIptablesIsRunning(Boolean iptablesIsRunning) { +this.iptablesIsRunning = iptablesIsRunning; + } + + public static class HostHealth { +/** + * Java processes running on the system. Default empty array. + */ +@SerializedName("activeJavaProcs") +private JavaProc[] activeJavaProcs = new JavaProc[0]; + +/** + * The current time when agent send the host check report + */ +@SerializedName("agentTimeStampAtReporting") +private long agentTimeStampAtReporting = 0; + +/** + * The current time when host check report was received + */ +@SerializedName("serverTimeStampAtReporting") +private long serverTimeStampAtReporting = 0; + +/** + * Live services running on the agent + */ +@SerializedName("liveServices") +private LiveService[] liveServices = new LiveService[0]; + +
[16/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMProviderService.java new file mode 100644 index 000..67d3647 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMProviderService.java @@ -0,0 +1,189 @@ +/* + * 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 org.apache.slider.providers.slideram; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hdfs.HdfsConfiguration; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.registry.client.binding.RegistryTypeUtils; +import org.apache.hadoop.registry.client.types.ServiceRecord; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.tools.ConfigHelper; +import org.apache.slider.common.tools.SliderFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.core.launch.ContainerLauncher; +import org.apache.slider.core.registry.docstore.PublishedConfiguration; +import org.apache.slider.core.registry.info.CustomRegistryConstants; +import org.apache.slider.providers.AbstractProviderService; +import org.apache.slider.providers.ProviderCore; +import org.apache.slider.providers.ProviderRole; +import org.apache.slider.providers.agent.AgentKeys; +import org.apache.slider.server.appmaster.PublishedArtifacts; +import org.apache.slider.server.appmaster.web.rest.RestPaths; + +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import static org.apache.slider.server.appmaster.web.rest.RestPaths.*; + +/** + * Exists just to move some functionality out of AppMaster into a peer class + * of the actual service provider doing the real work + */ +public class SliderAMProviderService extends AbstractProviderService implements +ProviderCore, +AgentKeys, +SliderKeys { + + public SliderAMProviderService() { +super("SliderAMProviderService"); + } + + @Override + public String getHumanName() { +return "Slider Application"; + } + + @Override + public Configuration loadProviderConfigurationInformation(File confDir) throws + BadCommandArgumentsException, + IOException { +return null; + } + + @Override + public void buildContainerLaunchContext(ContainerLauncher containerLauncher, + AggregateConf instanceDefinition, + Container container, + ProviderRole role, + SliderFileSystem sliderFileSystem, + Path generatedConfPath, + MapOperations resourceComponent, + MapOperations appComponent, + Path containerTmpDirPath) throws IOException, SliderException { + } + + @Override + public List getRoles() { +return new ArrayList<>(0); + } + + @Override + public void validateInstanceDefinition(AggregateConf instanceDefinition) throws + SliderException { + + } + + @Override + public void applyInitialRegistryDefinitions(URL amWebURI, + URL agentOpsURI, + URL agentStatusURI, + ServiceRecord serviceRecord) + throws IOException { +super.applyInitialRegistryDefinitions(amWebURI, +agentOpsURI, +agentStatusURI, +
[09/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java new file mode 100644 index 000..37e9a7f --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java @@ -0,0 +1,307 @@ +/* + * 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 org.apache.slider.server.appmaster.state; + +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.types.ApplicationLivenessInformation; +import org.apache.slider.api.types.ComponentInformation; +import org.apache.slider.api.types.NodeInformation; +import org.apache.slider.api.types.RoleStatistics; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.exceptions.NoSuchNodeException; +import org.apache.slider.core.registry.docstore.PublishedConfigSet; +import org.apache.slider.core.registry.docstore.PublishedExportsSet; +import org.apache.slider.server.appmaster.web.rest.RestPaths; +import org.apache.slider.server.services.utility.PatternValidator; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Implementation of {@link StateAccessForProviders}, which means + * state access for providers, web UI and IPC/REST views. + */ +public class ProviderAppState implements StateAccessForProviders { + + + private final MappublishedConfigSets = + new ConcurrentHashMap<>(5); + private final PublishedExportsSet publishedExportsSets = new PublishedExportsSet(); + private static final PatternValidator validator = new PatternValidator( + RestPaths.PUBLISHED_CONFIGURATION_SET_REGEXP); + private String applicationName; + + private final AppState appState; + + public ProviderAppState(String applicationName, AppState appState) { +this.appState = appState; +this.applicationName = applicationName; + } + + public void setApplicationName(String applicationName) { +this.applicationName = applicationName; + } + + @Override + public String getApplicationName() { +return applicationName; + } + + @Override + public PublishedConfigSet getPublishedSliderConfigurations() { +return getOrCreatePublishedConfigSet(RestPaths.SLIDER_CONFIGSET); + } + + @Override + public PublishedExportsSet getPublishedExportsSet() { +return publishedExportsSets; + } + + @Override + public PublishedConfigSet getPublishedConfigSet(String name) { +return publishedConfigSets.get(name); + } + + @Override + public PublishedConfigSet getOrCreatePublishedConfigSet(String name) { +PublishedConfigSet set = publishedConfigSets.get(name); +if (set == null) { + validator.validate(name); + synchronized (publishedConfigSets) { +// synchronized double check to ensure that there is never an overridden +// config set created +set = publishedConfigSets.get(name); +if (set == null) { + set = new PublishedConfigSet(); + publishedConfigSets.put(name, set); +} + } +} +return set; + } + + @Override + public List listConfigSets() { + +synchronized (publishedConfigSets) { + List sets = new
[15/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java new file mode 100644 index 000..b767059 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -0,0 +1,2450 @@ +/* + * 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 org.apache.slider.server.appmaster; + +import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.health.HealthCheckRegistry; +import com.codahale.metrics.jvm.GarbageCollectorMetricSet; +import com.codahale.metrics.jvm.MemoryUsageGaugeSet; +import com.codahale.metrics.jvm.ThreadStatesGaugeSet; +import com.google.common.base.Preconditions; +import com.google.protobuf.BlockingService; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeysPublic; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.permission.FsAction; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.hdfs.HdfsConfiguration; +import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; +import org.apache.hadoop.http.HttpConfig; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.registry.client.binding.RegistryTypeUtils; +import org.apache.hadoop.registry.client.binding.RegistryUtils; +import org.apache.hadoop.security.Credentials; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.token.Token; +import org.apache.hadoop.security.token.TokenIdentifier; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceOperations; +import org.apache.hadoop.service.ServiceStateChangeListener; +import org.apache.hadoop.yarn.api.ApplicationConstants; +import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse; +import org.apache.hadoop.yarn.api.records.ApplicationAccessType; +import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; +import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport; +import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; +import org.apache.hadoop.yarn.api.records.ContainerState; +import org.apache.hadoop.yarn.api.records.ContainerStatus; +import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; +import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.hadoop.yarn.api.records.NodeState; +import org.apache.hadoop.yarn.api.records.Priority; +import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.client.api.AMRMClient; +import org.apache.hadoop.yarn.client.api.async.AMRMClientAsync; +import org.apache.hadoop.yarn.client.api.async.NMClientAsync; +import org.apache.hadoop.yarn.client.api.async.impl.NMClientAsyncImpl; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import static org.apache.hadoop.yarn.conf.YarnConfiguration.*; +import static org.apache.slider.common.Constants.HADOOP_JAAS_DEBUG; + +import org.apache.hadoop.yarn.exceptions.InvalidApplicationMasterRequestException; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.ipc.YarnRPC; +import org.apache.hadoop.registry.client.api.RegistryOperations; +import org.apache.hadoop.registry.client.binding.RegistryPathUtils; +import org.apache.hadoop.registry.client.types.yarn.PersistencePolicies;
[14/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionFlexCluster.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionFlexCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionFlexCluster.java new file mode 100644 index 000..6b61681 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionFlexCluster.java @@ -0,0 +1,44 @@ +/* + * 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 org.apache.slider.server.appmaster.actions; + +import org.apache.slider.core.conf.ConfTree; +import org.apache.slider.server.appmaster.SliderAppMaster; +import org.apache.slider.server.appmaster.state.AppState; + +import java.util.concurrent.TimeUnit; + +public class ActionFlexCluster extends AsyncAction { + + public final ConfTree resources; + + public ActionFlexCluster(String name, + long delay, + TimeUnit timeUnit, ConfTree resources) { +super(name, delay, timeUnit, ATTR_CHANGES_APP_SIZE); +this.resources = resources; + } + + @Override + public void execute(SliderAppMaster appMaster, + QueueAccess queueService, + AppState appState) throws Exception { +appMaster.flexCluster(resources); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java new file mode 100644 index 000..e2ad559 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java @@ -0,0 +1,53 @@ +/* + * 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 org.apache.slider.server.appmaster.actions; + +import org.apache.hadoop.util.ExitUtil; +import org.apache.slider.server.appmaster.SliderAppMaster; +import org.apache.slider.server.appmaster.state.AppState; + +import java.util.concurrent.TimeUnit; + +/** + * Exit an emergency JVM halt. + * @see ExitUtil#halt(int, String) + */ +public class ActionHalt extends AsyncAction { + + private final int status; + private final String text; + + public ActionHalt( + int status, + String text, + long delay, TimeUnit timeUnit) { + +// do not declare that this action halts the cluster ... keep it a surprise +super("Halt", delay, timeUnit); +this.status = status; +this.text =
[02/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java new file mode 100644 index 000..9e9e7ac --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java @@ -0,0 +1,598 @@ +/* + * 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 org.apache.slider.server.services.workflow; + +import com.google.common.base.Preconditions; +import org.apache.hadoop.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Execute a long-lived process. + * + * + * Hadoop's {@link org.apache.hadoop.util.Shell} class assumes it is executing + * a short lived application; this class allows for the process to run for the + * life of the Java process that forked it. + * It is designed to be embedded inside a YARN service, though this is not + * the sole way that it can be used + * + * Key Features: + * + * Output is streamed to the output logger provided. + * the input stream is closed as soon as the process starts. + * The most recent lines of output are saved to a linked list. + * A synchronous callback, {@link LongLivedProcessLifecycleEvent}, + * is raised on the start and finish of a process. + * + * + */ +public class LongLivedProcess implements Runnable { + /** + * Limit on number of lines to retain in the "recent" line list:{@value} + */ + public static final int RECENT_LINE_LOG_LIMIT = 64; + + /** + * Const defining the time in millis between polling for new text. + */ + private static final int STREAM_READER_SLEEP_TIME = 200; + + /** + * limit on the length of a stream before it triggers an automatic newline. + */ + private static final int LINE_LENGTH = 256; + private final ProcessBuilder processBuilder; + private Process process; + private Integer exitCode = null; + private final String name; + private final ExecutorService processExecutor; + private final ExecutorService logExecutor; + + private ProcessStreamReader processStreamReader; + //list of recent lines, recorded for extraction into reports + private final List recentLines = new LinkedList<>(); + private int recentLineLimit = RECENT_LINE_LOG_LIMIT; + private LongLivedProcessLifecycleEvent lifecycleCallback; + private final AtomicBoolean finalOutputProcessed = new AtomicBoolean(false); + + /** + * Log supplied in the constructor for the spawned process -accessible + * to inner classes + */ + private Logger processLog; + + /** + * Class log -accessible to inner classes + */ + private static final Logger LOG = LoggerFactory.getLogger(LongLivedProcess.class); + + /** + * flag to indicate that the process is done + */ + private final AtomicBoolean finished = new AtomicBoolean(false); + + /** + * Create an instance + * @param name process name + * @param processLog log for output (or null) + * @param commands command list + */ + public LongLivedProcess(String name, + Logger processLog, + List commands) { +Preconditions.checkArgument(commands !=
[11/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java new file mode 100644 index 000..16c2435 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java @@ -0,0 +1,2489 @@ +/* + * 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 org.apache.slider.server.appmaster.state; + +import com.codahale.metrics.Metric; +import com.codahale.metrics.MetricRegistry; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.api.records.ContainerStatus; +import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; +import org.apache.hadoop.yarn.api.records.NodeId; +import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.api.records.impl.pb.ContainerPBImpl; +import org.apache.hadoop.yarn.client.api.AMRMClient; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; +import org.apache.hadoop.yarn.util.resource.Resources; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterDescriptionKeys; +import org.apache.slider.api.ClusterDescriptionOperations; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.InternalKeys; +import org.apache.slider.api.ResourceKeys; +import org.apache.slider.api.StatusKeys; +import org.apache.slider.api.types.ApplicationLivenessInformation; +import org.apache.slider.api.types.ComponentInformation; +import org.apache.slider.api.types.RoleStatistics; +import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.tools.ConfigHelper; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTree; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.BadClusterStateException; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.core.exceptions.ErrorStrings; +import org.apache.slider.core.exceptions.NoSuchNodeException; +import org.apache.slider.core.exceptions.SliderInternalStateException; +import org.apache.slider.core.exceptions.TriggerClusterTeardownException; +import org.apache.slider.core.persist.AggregateConfSerDeser; +import org.apache.slider.core.persist.ConfTreeSerDeser; +import org.apache.slider.providers.PlacementPolicy; +import org.apache.slider.providers.ProviderRole; +import org.apache.slider.server.appmaster.management.LongGauge; +import org.apache.slider.server.appmaster.management.MetricsAndMonitoring; +import org.apache.slider.server.appmaster.management.MetricsConstants; +import org.apache.slider.server.appmaster.operations.AbstractRMOperation; +import org.apache.slider.server.appmaster.operations.ContainerReleaseOperation; +import org.apache.slider.server.appmaster.operations.ContainerRequestOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import
[19/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java new file mode 100644 index 000..4ffae7c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java @@ -0,0 +1,3212 @@ +/* + * 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 org.apache.slider.providers.agent; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; + +import org.apache.commons.io.FileUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.permission.FsAction; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.registry.client.binding.RegistryPathUtils; +import org.apache.hadoop.registry.client.types.Endpoint; +import org.apache.hadoop.registry.client.types.ProtocolTypes; +import org.apache.hadoop.registry.client.types.ServiceRecord; +import org.apache.hadoop.registry.client.types.yarn.PersistencePolicies; +import org.apache.hadoop.registry.client.types.yarn.YarnRegistryAttributes; +import org.apache.hadoop.util.StringUtils; +import org.apache.hadoop.yarn.api.ApplicationConstants; +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LocalResourceType; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.InternalKeys; +import org.apache.slider.api.OptionKeys; +import org.apache.slider.api.ResourceKeys; +import org.apache.slider.api.StatusKeys; +import org.apache.slider.common.SliderExitCodes; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.SliderXmlConfKeys; +import org.apache.slider.common.tools.SliderFileSystem; +import org.apache.slider.common.tools.SliderUtils; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; +import org.apache.slider.core.exceptions.BadConfigException; +import org.apache.slider.core.exceptions.NoSuchNodeException; +import org.apache.slider.core.exceptions.SliderException; +import org.apache.slider.core.launch.CommandLineBuilder; +import org.apache.slider.core.launch.ContainerLauncher; +import org.apache.slider.core.registry.docstore.ConfigFormat; +import org.apache.slider.core.registry.docstore.ConfigUtils; +import org.apache.slider.core.registry.docstore.ExportEntry; +import org.apache.slider.core.registry.docstore.PublishedConfiguration; +import org.apache.slider.core.registry.docstore.PublishedConfigurationOutputter; +import org.apache.slider.core.registry.docstore.PublishedExports; +import org.apache.slider.core.registry.info.CustomRegistryConstants; +import org.apache.slider.providers.AbstractProviderService; +import org.apache.slider.providers.MonitorDetail; +import org.apache.slider.providers.ProviderCore; +import org.apache.slider.providers.ProviderRole; +import org.apache.slider.providers.ProviderUtils; +import org.apache.slider.providers.agent.application.metadata.AbstractComponent; +import org.apache.slider.providers.agent.application.metadata.Application; +import
[04/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/HttpProbe.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/HttpProbe.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/HttpProbe.java new file mode 100644 index 000..9c14ca7 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/HttpProbe.java @@ -0,0 +1,82 @@ +/* + * 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 org.apache.slider.server.servicemonitor; + +import org.apache.hadoop.conf.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpProbe extends Probe { + protected static final Logger log = LoggerFactory.getLogger(HttpProbe.class); + + private final URL url; + private final int timeout; + private final int min, max; + + + public HttpProbe(URL url, int timeout, int min, int max, Configuration conf) throws IOException { +super("Http probe of " + url + " [" + min + "-" + max + "]", conf); +this.url = url; +this.timeout = timeout; +this.min = min; +this.max = max; + } + + public static HttpURLConnection getConnection(URL url, int timeout) throws IOException { +HttpURLConnection connection = (HttpURLConnection) url.openConnection(); +connection.setInstanceFollowRedirects(true); +connection.setConnectTimeout(timeout); +return connection; + } + + @Override + public ProbeStatus ping(boolean livePing) { +ProbeStatus status = new ProbeStatus(); +HttpURLConnection connection = null; +try { + if (log.isDebugEnabled()) { +// LOG.debug("Fetching " + url + " with timeout " + timeout); + } + connection = getConnection(url, this.timeout); + int rc = connection.getResponseCode(); + if (rc < min || rc > max) { +String error = "Probe " + url + " error code: " + rc; +log.info(error); +status.fail(this, +new IOException(error)); + } else { +status.succeed(this); + } +} catch (IOException e) { + String error = "Probe " + url + " failed: " + e; + log.info(error, e); + status.fail(this, + new IOException(error, e)); +} finally { + if (connection != null) { +connection.disconnect(); + } +} +return status; + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/LogEntryBuilder.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/LogEntryBuilder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/LogEntryBuilder.java new file mode 100644 index 000..a1ad44f --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/servicemonitor/LogEntryBuilder.java @@ -0,0 +1,76 @@ +/* + * 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
[01/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe) [Forced Update!]
Repository: hadoop Updated Branches: refs/heads/yarn-native-services 69283ee84 -> fc259d505 (forced update) http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/proto/SliderClusterMessages.proto -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/proto/SliderClusterMessages.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/proto/SliderClusterMessages.proto new file mode 100644 index 000..b8bdc59 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/proto/SliderClusterMessages.proto @@ -0,0 +1,396 @@ +/** + * 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. + */ + +option java_package = "org.apache.slider.api.proto"; +option java_outer_classname = "Messages"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +package org.apache.slider.api; + +//import "Security.proto"; + +/* + Look at SliderClusterProtocol.proto to see how to build this +*/ + +message RoleInstanceState { + required string name =1; + optional string role =2; + required uint32 state = 4; + required uint32 exitCode =5; + optional string command = 6; + optional string diagnostics = 7; + repeated string output = 8; + repeated string environment = 9; + required uint32 roleId = 10; + required bool released = 11; + required int64 createTime = 12; + required int64 startTime = 13; + required string host = 14; + required string hostURL =15; + optional string appVersion = 16; +} + +/** + * stop the cluster + */ +message StopClusterRequestProto { + /** + message to include + */ + required string message = 1; +} + +/** + * stop the cluster + */ +message StopClusterResponseProto { +} + +/** + * upgrade the containers + */ +message UpgradeContainersRequestProto { + /** + message to include + */ + required string message = 1; + repeated string container = 2; + repeated string component = 3; +} + +/** + * upgrade the containers + */ +message UpgradeContainersResponseProto { +} + +/** + * flex the cluster + */ +message FlexClusterRequestProto { + required string clusterSpec = 1; +} + + +/** + * flex the cluster + */ +message FlexClusterResponseProto { + required bool response = 1; +} + + +/** + * void request + */ +message GetJSONClusterStatusRequestProto { +} + +/** + * response + */ +message GetJSONClusterStatusResponseProto { + required string clusterSpec = 1; +} + +/** + * list the nodes in a role + */ +message ListNodeUUIDsByRoleRequestProto { + required string role = 1; +} + +/** + * list the nodes in a role + */ +message ListNodeUUIDsByRoleResponseProto { + repeated string uuid = 1 ; +} + +/** + * get a node + */ +message GetNodeRequestProto { + required string uuid = 1; +} + + +/** + * response on a node + */ +message GetNodeResponseProto { + required RoleInstanceState clusterNode = 1 ; +} + +/** + * list the nodes for the UUDs + */ +message GetClusterNodesRequestProto { + repeated string uuid = 1 ; +} + +/** + * list the nodes in a role + */ +message GetClusterNodesResponseProto { + repeated RoleInstanceState clusterNode = 1 ; +} + +/** + * Echo + */ +message EchoRequestProto { + required string text = 1; +} + +/** + * Echo reply + */ +message EchoResponseProto { + required string text = 1; +} + + +/** + * Kill a container + */ +message KillContainerRequestProto { + required string id = 1; +} + +/** + * Kill reply + */ +message KillContainerResponseProto { + required bool success = 1; +} + +/** + * AM suicide + */ +message AMSuicideRequestProto { + required string text = 1; + required int32 signal = 2; + required int32 delay = 3; +} + +/** + * AM suicide reply. For this to be returned implies + * a failure of the AM to kill itself + */ +message AMSuicideResponseProto { + +} + + +/** + * Ask for the instance definition details + */ +message
[08/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java new file mode 100644 index 000..ad91183 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java @@ -0,0 +1,313 @@ +/* + * 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 org.apache.slider.server.appmaster.state; + +import org.apache.hadoop.yarn.api.records.Container; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; +import org.apache.slider.api.ClusterDescription; +import org.apache.slider.api.ClusterNode; +import org.apache.slider.api.StatusKeys; +import org.apache.slider.api.types.ApplicationLivenessInformation; +import org.apache.slider.api.types.ComponentInformation; +import org.apache.slider.api.types.NodeInformation; +import org.apache.slider.api.types.RoleStatistics; +import org.apache.slider.core.conf.AggregateConf; +import org.apache.slider.core.conf.ConfTreeOperations; +import org.apache.slider.core.exceptions.NoSuchNodeException; +import org.apache.slider.core.registry.docstore.PublishedConfigSet; +import org.apache.slider.core.registry.docstore.PublishedExportsSet; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * The methods to offer state access to the providers and other parts of + * the system which want read-only access to the state. + */ +public interface StateAccessForProviders { + + /** + * Get a map of role status entries by role Id + * @return the map of currently defined roles. + */ + MapgetRoleStatusMap(); + + /** + * Get the name of the application + * @return the name + */ + String getApplicationName(); + + /** + * Get the published configurations + * @return the configuration set + */ + PublishedConfigSet getPublishedSliderConfigurations(); + + /** + * Get the published exports set + * @return + */ + PublishedExportsSet getPublishedExportsSet(); + + /** + * Get a named published config set + * @param name name to look up + * @return the instance or null + */ + PublishedConfigSet getPublishedConfigSet(String name); + + /** + * Get a named published config set, creating it if need be. + * @param name name to look up + * @return the instance -possibly a new one + */ + PublishedConfigSet getOrCreatePublishedConfigSet(String name); + + /** + * List the config sets -this takes a clone of the current set + * @return a list of config sets + */ + List listConfigSets(); + + /** + * Get a map of all the failed containers + * @return map of recorded failed containers + */ + Map getFailedContainers(); + + /** + * Get the live containers. + * + * @return the live nodes + */ + Map getLiveContainers(); + + /** + * Get the current cluster description + * @return the actual state of the cluster + */ + ClusterDescription getClusterStatus(); + + /** + * Get at the snapshot of the resource config + * Changes here do not affect the application state. + * @return the most recent settings + */ + ConfTreeOperations getResourcesSnapshot(); + + /** + * Get at the snapshot of the appconf config + * Changes here do not affect the application state. + * @return the most recent settings + */ + ConfTreeOperations getAppConfSnapshot(); + + /** + * Get at the snapshot of the internals config. + * Changes here do not
[05/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ComponentResource.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ComponentResource.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ComponentResource.java new file mode 100644 index 000..a8e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ComponentResource.java @@ -0,0 +1,53 @@ +/* + * 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 org.apache.slider.server.appmaster.web.rest.management.resources; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +import javax.ws.rs.core.UriBuilder; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class ComponentResource { + private final Mapprops; + private String href; + + public ComponentResource() { +this(null, null, null, null); + } + + public ComponentResource(String name, + Map props, + UriBuilder uriBuilder, + Map pathElems) { +this.props = props; + } + + public Map getProps() { +return props; + } + + public String getHref() { +return href; + } + + public void setHref(String href) { +this.href = href; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java new file mode 100644 index 000..407bab6 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java @@ -0,0 +1,69 @@ +/* + * 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 org.apache.slider.server.appmaster.web.rest.management.resources; + +import org.apache.slider.core.conf.ConfTree; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +import javax.ws.rs.core.UriBuilder; +import java.util.Map; +
[03/76] [abbrv] hadoop git commit: YARN-5461. Initial code ported from slider-core module. (jianhe)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8cab88d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java new file mode 100644 index 000..e436ae9 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java @@ -0,0 +1,495 @@ +/** + * 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 org.apache.slider.server.services.security; + +import com.google.inject.Singleton; +import org.apache.commons.io.FileUtils; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.core.conf.MapOperations; +import org.apache.slider.core.exceptions.SliderException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.charset.Charset; +import java.text.MessageFormat; + +@Singleton +public class CertificateManager { + + private static final Logger LOG = + LoggerFactory.getLogger(CertificateManager.class); + + private static final String GEN_SRVR_KEY = "openssl genrsa -des3 " + + "-passout pass:{0} -out {1}" + File.separator + "{2} 4096 "; + private static final String GEN_SRVR_REQ = "openssl req -passin pass:{0} " + + "-new -key {1}" + File.separator + "{2} -out {1}" + File.separator + + "{5} -config {1}" + File.separator + "ca.config " + + "-subj {6} -batch"; + private static final String SIGN_SRVR_CRT = "openssl ca -create_serial " + +"-out {1}" + File.separator + "{3} -days 365 -keyfile {1}" + File.separator ++ "{2} -key {0} -selfsign -extensions jdk7_ca -config {1}" + File.separator ++ "ca.config -batch -infiles {1}" + File.separator + "{5}"; + private static final String EXPRT_KSTR = "openssl pkcs12 -export" + + " -in {2}" + File.separator + "{4} -inkey {2}" + File.separator + + "{3} -certfile {2}" + File.separator + "{4} -out {2}" + File.separator + + "{5} -password pass:{1} -passin pass:{0} \n"; + private static final String REVOKE_AGENT_CRT = "openssl ca " + + "-config {0}" + File.separator + "ca.config -keyfile {0}" + + File.separator + "{4} -revoke {0}" + File.separator + "{2} -batch " + + "-passin pass:{3} -cert {0}" + File.separator + "{5}"; + private static final String SIGN_AGENT_CRT = "openssl ca -config " + + "{0}" + File.separator + "ca.config -in {0}" + File.separator + + "{1} -out {0}" + File.separator + "{2} -batch -passin pass:{3} " + + "-keyfile {0}" + File.separator + "{4} -cert {0}" + File.separator + "{5}"; + private static final String GEN_AGENT_KEY="openssl req -new -newkey " + + "rsa:1024 -nodes -keyout {0}" + File.separator + + "{2}.key -subj {1} -out {0}" + File.separator + "{2}.csr " + + "-config {3}" + File.separator + "ca.config "; + private String passphrase; + private String applicationName; + + + public void initialize(MapOperations compOperations) throws SliderException { +String hostname = null; +try { + hostname = InetAddress.getLocalHost().getCanonicalHostName(); +} catch (UnknownHostException e) { + hostname = "localhost"; +} +this.initialize(compOperations, hostname, null, null); + } + + /** +* Verify that root certificate exists, generate it otherwise. +*/ + public void initialize(MapOperations compOperations, + String hostname, String containerId, + String appName)
hadoop git commit: YARN-5136. Error in handling event type APP_ATTEMPT_REMOVED to the scheduler (Contributed by Wilfred Spiegelenburg via Daniel Templeton)
Repository: hadoop Updated Branches: refs/heads/trunk ab923a53f -> 9f5d2c4ff YARN-5136. Error in handling event type APP_ATTEMPT_REMOVED to the scheduler (Contributed by Wilfred Spiegelenburg via Daniel Templeton) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9f5d2c4f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9f5d2c4f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9f5d2c4f Branch: refs/heads/trunk Commit: 9f5d2c4fff6d31acc8b422b52462ef4927c4eea1 Parents: ab923a5 Author: Daniel TempletonAuthored: Wed Dec 7 11:12:14 2016 -0800 Committer: Daniel Templeton Committed: Wed Dec 7 11:12:14 2016 -0800 -- .../scheduler/fair/FairScheduler.java | 32 +-- .../scheduler/fair/TestFairScheduler.java | 89 2 files changed, 115 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9f5d2c4f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index 03df5d4..e790bc2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -633,8 +633,7 @@ public class FairScheduler extends RMAppAttemptState rmAppAttemptFinalState, boolean keepContainers) { try { writeLock.lock(); - LOG.info( - "Application " + applicationAttemptId + " is done." + " finalState=" + LOG.info("Application " + applicationAttemptId + " is done. finalState=" + rmAppAttemptFinalState); FSAppAttempt attempt = getApplicationAttempt(applicationAttemptId); @@ -644,6 +643,13 @@ public class FairScheduler extends return; } + // Check if the attempt is already stopped and don't stop it twice. + if (attempt.isStopped()) { +LOG.info("Application " + applicationAttemptId + " has already been " ++ "stopped!"); +return; + } + // Release all the running containers for (RMContainer rmContainer : attempt.getLiveContainers()) { if (keepContainers && rmContainer.getState().equals( @@ -1521,6 +1527,13 @@ public class FairScheduler extends try { attempt.getWriteLock().lock(); FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue(); +// Check if the attempt is already stopped: don't move stopped app +// attempt. The attempt has already been removed from all queues. +if (attempt.isStopped()) { + LOG.info("Application " + appId + " is stopped and can't be moved!"); + throw new YarnException("Application " + appId + + " is stopped and can't be moved!"); +} String destQueueName = handleMoveToPlanQueue(queueName); FSLeafQueue targetQueue = queueMgr.getLeafQueue(destQueueName, false); if (targetQueue == null) { @@ -1617,16 +1630,23 @@ public class FairScheduler extends * operations will be atomic. */ private void executeMove(SchedulerApplication app, - FSAppAttempt attempt, FSLeafQueue oldQueue, FSLeafQueue newQueue) { -boolean wasRunnable = oldQueue.removeApp(attempt); + FSAppAttempt attempt, FSLeafQueue oldQueue, FSLeafQueue newQueue) + throws YarnException { +// Check current runs state. Do not remove the attempt from the queue until +// after the check has been performed otherwise it could remove the app +// from a queue without moving it to a new queue. +boolean wasRunnable = oldQueue.isRunnableApp(attempt); // if app was not runnable before, it may be runnable now boolean nowRunnable = maxRunningEnforcer.canAppBeRunnable(newQueue, attempt); if (wasRunnable && !nowRunnable) { - throw new IllegalStateException("Should have already verified that app " + throw new YarnException("Should have already verified that app " + attempt.getApplicationId() + " would be runnable in new queue"); } - + +//
[hadoop] Git Push Summary
Repository: hadoop Updated Branches: refs/heads/yarn-5709 [deleted] f05f45f10 - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[2/3] hadoop git commit: Fix TestLeaderElectorService
Fix TestLeaderElectorService Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5ba48368 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5ba48368 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5ba48368 Branch: refs/heads/yarn-5709 Commit: 5ba483685aa20c236036c84015fcd4e162d927e6 Parents: 4a6ed7e Author: Karthik KambatlaAuthored: Tue Dec 6 20:39:17 2016 -0800 Committer: Karthik Kambatla Committed: Tue Dec 6 20:39:17 2016 -0800 -- .../hadoop/yarn/server/resourcemanager/MockRM.java | 15 +-- .../resourcemanager/TestLeaderElectorService.java| 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5ba48368/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java index 1b354af..1ea2324 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java @@ -125,6 +125,8 @@ public class MockRM extends ResourceManager { private final boolean useNullRMNodeLabelsManager; private boolean disableDrainEventsImplicitly; + private boolean useRealElector = false; + public MockRM() { this(new YarnConfiguration()); } @@ -161,6 +163,11 @@ public class MockRM extends ResourceManager { disableDrainEventsImplicitly = false; } + public MockRM(Configuration conf, boolean useRealElector) { +this(conf); +this.useRealElector = useRealElector; + } + public class MockRMMemoryStateStore extends MemoryRMStateStore { @SuppressWarnings("rawtypes") @Override @@ -195,8 +202,12 @@ public class MockRM extends ResourceManager { } @Override - protected EmbeddedElector createEmbeddedElector() { -return mock(EmbeddedElector.class); + protected EmbeddedElector createEmbeddedElector() throws IOException { +if (useRealElector) { + return mock(EmbeddedElector.class); +} else { + return super.createEmbeddedElector(); +} } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/5ba48368/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestLeaderElectorService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestLeaderElectorService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestLeaderElectorService.java index e58d77e..0c2ee5c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestLeaderElectorService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestLeaderElectorService.java @@ -249,7 +249,7 @@ public class TestLeaderElectorService { private MockRM startRM(String rmId, HAServiceState state) throws Exception{ YarnConfiguration yarnConf = new YarnConfiguration(conf); yarnConf.set(YarnConfiguration.RM_HA_ID, rmId); -MockRM rm = new MockRM(yarnConf); +MockRM rm = new MockRM(yarnConf, true); rm.init(yarnConf); rm.start(); waitFor(rm, state); - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
[1/3] hadoop git commit: Y-5709. Add an interface EmbeddedElector that is extended by both Curator-based and ActiveStandbyElector-based implementations.
Repository: hadoop Updated Branches: refs/heads/yarn-5709 [created] f05f45f10 Y-5709. Add an interface EmbeddedElector that is extended by both Curator-based and ActiveStandbyElector-based implementations. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4a6ed7e1 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4a6ed7e1 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4a6ed7e1 Branch: refs/heads/yarn-5709 Commit: 4a6ed7e11b4183e03f08a90acf1a57199edf4319 Parents: a7288da Author: Karthik KambatlaAuthored: Tue Dec 6 15:32:32 2016 -0800 Committer: Karthik Kambatla Committed: Tue Dec 6 18:57:41 2016 -0800 -- .../hadoop/yarn/conf/YarnConfiguration.java | 14 +- ...ActiveStandbyElectorBasedElectorService.java | 265 +++ .../server/resourcemanager/AdminService.java| 67 ++--- .../CuratorBasedElectorService.java | 135 ++ .../server/resourcemanager/EmbeddedElector.java | 36 +++ .../resourcemanager/EmbeddedElectorService.java | 260 -- .../resourcemanager/LeaderElectorService.java | 129 - .../yarn/server/resourcemanager/RMContext.java | 4 +- .../server/resourcemanager/RMContextImpl.java | 6 +- .../server/resourcemanager/ResourceManager.java | 34 ++- .../yarn/server/resourcemanager/MockRM.java | 12 +- .../TestLeaderElectorService.java | 10 +- .../resourcemanager/TestRMEmbeddedElector.java | 49 ++-- 13 files changed, 531 insertions(+), 490 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/4a6ed7e1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java index fce78c9..055505e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java @@ -29,6 +29,7 @@ import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.ha.ActiveStandbyElector; import org.apache.hadoop.http.HttpConfig; import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.util.StringUtils; @@ -695,9 +696,20 @@ public class YarnConfiguration extends Configuration { public static final String RM_HA_FC_ELECTOR_ZK_RETRIES_KEY = RM_HA_PREFIX + "failover-controller.active-standby-elector.zk.retries"; - @Private + + /** + * Whether to use curator-based elector for leader election. + * + * @deprecated Eventually, we want to default to the curator-based + * implementation and remove the {@link ActiveStandbyElector} based + * implementation. We should remove this config then. + */ + @Unstable + @Deprecated public static final String CURATOR_LEADER_ELECTOR = RM_HA_PREFIX + "curator-leader-elector.enabled"; + @Private + @Unstable public static final boolean DEFAULT_CURATOR_LEADER_ELECTOR_ENABLED = false; http://git-wip-us.apache.org/repos/asf/hadoop/blob/4a6ed7e1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ActiveStandbyElectorBasedElectorService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ActiveStandbyElectorBasedElectorService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ActiveStandbyElectorBasedElectorService.java new file mode 100644 index 000..6be9828 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ActiveStandbyElectorBasedElectorService.java @@ -0,0 +1,265 @@ +/** + * 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
[3/3] hadoop git commit: Y-5709. Patch v2. WiP
Y-5709. Patch v2. WiP Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f05f45f1 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f05f45f1 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f05f45f1 Branch: refs/heads/yarn-5709 Commit: f05f45f1085ab48cb501bfb82aaa96ff8f4d5b2b Parents: 5ba4836 Author: Karthik KambatlaAuthored: Wed Dec 7 11:02:43 2016 -0800 Committer: Karthik Kambatla Committed: Wed Dec 7 11:02:43 2016 -0800 -- .../server/resourcemanager/ResourceManager.java | 2 +- .../yarn/server/resourcemanager/MockRM.java | 24 +++- .../server/resourcemanager/RMHATestBase.java| 4 +- .../TestLeaderElectorService.java | 5 +-- .../yarn/server/resourcemanager/TestRMHA.java | 39 ++-- 5 files changed, 39 insertions(+), 35 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f05f45f1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index 192bbca..3f48cc0 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -278,7 +278,7 @@ public class ResourceManager extends CompositeService implements Recoverable { if (HAUtil.isAutomaticFailoverEnabled(conf) && HAUtil.isAutomaticFailoverEmbedded(conf)) { EmbeddedElector elector = createEmbeddedElector(); -addService(elector); +addIfService(elector); rmContext.setLeaderElectorService(elector); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/f05f45f1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java index 1ea2324..755eb54 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java @@ -136,13 +136,22 @@ public class MockRM extends ResourceManager { } public MockRM(Configuration conf, RMStateStore store) { -this(conf, store, true); +this(conf, store, true, false); } - + + public MockRM(Configuration conf, boolean useRealElector) { +this(conf, null, true, useRealElector); + } + + public MockRM(Configuration conf, RMStateStore store, boolean useRealElector) { +this(conf, store, true, useRealElector); + } + public MockRM(Configuration conf, RMStateStore store, - boolean useNullRMNodeLabelsManager) { + boolean useNullRMNodeLabelsManager, boolean useRealElector) { super(); this.useNullRMNodeLabelsManager = useNullRMNodeLabelsManager; +this.useRealElector = useRealElector; init(conf instanceof YarnConfiguration ? conf : new YarnConfiguration(conf)); if (store != null) { setRMStateStore(store); @@ -163,11 +172,6 @@ public class MockRM extends ResourceManager { disableDrainEventsImplicitly = false; } - public MockRM(Configuration conf, boolean useRealElector) { -this(conf); -this.useRealElector = useRealElector; - } - public class MockRMMemoryStateStore extends MemoryRMStateStore { @SuppressWarnings("rawtypes") @Override @@ -204,9 +208,9 @@ public class MockRM extends ResourceManager { @Override protected EmbeddedElector createEmbeddedElector() throws IOException { if (useRealElector) { - return mock(EmbeddedElector.class); -} else { return
hadoop git commit: YARN-5965. Retrospect ApplicationReport#getApplicationTimeouts. Contributed by Rohith Sharma K S
Repository: hadoop Updated Branches: refs/heads/branch-2 d8b496151 -> a636a8727 YARN-5965. Retrospect ApplicationReport#getApplicationTimeouts. Contributed by Rohith Sharma K S (cherry picked from commit ab923a53fcf55d4d75aa027d46e3c4a659015325) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a636a872 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a636a872 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a636a872 Branch: refs/heads/branch-2 Commit: a636a87270cde7ff3b21a7f29f9c4b72bc310123 Parents: d8b4961 Author: SunilAuthored: Thu Dec 8 00:27:25 2016 +0530 Committer: Sunil G Committed: Thu Dec 8 00:34:45 2016 +0530 -- .../yarn/api/records/ApplicationReport.java | 6 +- .../src/main/proto/yarn_protos.proto| 7 +- .../hadoop/yarn/client/cli/ApplicationCLI.java | 3 +- .../hadoop/yarn/client/cli/TestYarnCLI.java | 7 +- .../impl/pb/ApplicationReportPBImpl.java| 107 +++ .../server/resourcemanager/rmapp/RMAppImpl.java | 13 ++- .../rmapp/TestApplicationLifetimeMonitor.java | 15 ++- 7 files changed, 91 insertions(+), 67 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a636a872/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java index c039514..9e9ec3c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java @@ -25,7 +25,7 @@ import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.yarn.api.ApplicationClientProtocol; import org.apache.hadoop.yarn.util.Records; -import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -451,10 +451,10 @@ public abstract class ApplicationReport { @Public @Unstable - public abstract List getApplicationTimeouts(); + public abstract Map getApplicationTimeouts(); @Private @Unstable public abstract void setApplicationTimeouts( - List timeouts); + Map timeouts); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/a636a872/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto index af7d47a..db72f74 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto @@ -214,7 +214,12 @@ message ApplicationReportProto { optional PriorityProto priority = 23; optional string appNodeLabelExpression = 24; optional string amNodeLabelExpression = 25; - repeated ApplicationTimeoutProto application_timeouts = 26; + repeated AppTimeoutsMapProto appTimeouts = 26; +} + +message AppTimeoutsMapProto { + optional ApplicationTimeoutTypeProto application_timeout_type = 1; + optional ApplicationTimeoutProto application_timeout = 2; } message ApplicationTimeoutProto { http://git-wip-us.apache.org/repos/asf/hadoop/blob/a636a872/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java index 20a65bf..efe5921 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java @@ -714,7 +714,8 @@ public class ApplicationCLI extends YarnCLI { appReportStr.println(appReport.getAppNodeLabelExpression()); appReportStr.print("\tAM container Node Label Expression : ");
hadoop git commit: YARN-5136. Error in handling event type APP_ATTEMPT_REMOVED to the scheduler (Contributed by Wilfred Spiegelenburg via Daniel Templeton)
Repository: hadoop Updated Branches: refs/heads/branch-2 602c99844 -> d8b496151 YARN-5136. Error in handling event type APP_ATTEMPT_REMOVED to the scheduler (Contributed by Wilfred Spiegelenburg via Daniel Templeton) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d8b49615 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d8b49615 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d8b49615 Branch: refs/heads/branch-2 Commit: d8b4961515ae81619b9689140ce02b1b1cd1 Parents: 602c998 Author: Daniel TempletonAuthored: Wed Dec 7 10:59:11 2016 -0800 Committer: Daniel Templeton Committed: Wed Dec 7 11:01:09 2016 -0800 -- .../scheduler/fair/FairScheduler.java | 32 +-- .../scheduler/fair/TestFairScheduler.java | 89 2 files changed, 115 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/d8b49615/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index 9b473f0..6350ac9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -820,8 +820,7 @@ public class FairScheduler extends RMAppAttemptState rmAppAttemptFinalState, boolean keepContainers) { try { writeLock.lock(); - LOG.info( - "Application " + applicationAttemptId + " is done." + " finalState=" + LOG.info("Application " + applicationAttemptId + " is done. finalState=" + rmAppAttemptFinalState); FSAppAttempt attempt = getApplicationAttempt(applicationAttemptId); @@ -831,6 +830,13 @@ public class FairScheduler extends return; } + // Check if the attempt is already stopped and don't stop it twice. + if (attempt.isStopped()) { +LOG.info("Application " + applicationAttemptId + " has already been " ++ "stopped!"); +return; + } + // Release all the running containers for (RMContainer rmContainer : attempt.getLiveContainers()) { if (keepContainers && rmContainer.getState().equals( @@ -1673,6 +1679,13 @@ public class FairScheduler extends try { attempt.getWriteLock().lock(); FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue(); +// Check if the attempt is already stopped: don't move stopped app +// attempt. The attempt has already been removed from all queues. +if (attempt.isStopped()) { + LOG.info("Application " + appId + " is stopped and can't be moved!"); + throw new YarnException("Application " + appId + + " is stopped and can't be moved!"); +} String destQueueName = handleMoveToPlanQueue(queueName); FSLeafQueue targetQueue = queueMgr.getLeafQueue(destQueueName, false); if (targetQueue == null) { @@ -1769,16 +1782,23 @@ public class FairScheduler extends * operations will be atomic. */ private void executeMove(SchedulerApplication app, - FSAppAttempt attempt, FSLeafQueue oldQueue, FSLeafQueue newQueue) { -boolean wasRunnable = oldQueue.removeApp(attempt); + FSAppAttempt attempt, FSLeafQueue oldQueue, FSLeafQueue newQueue) + throws YarnException { +// Check current runs state. Do not remove the attempt from the queue until +// after the check has been performed otherwise it could remove the app +// from a queue without moving it to a new queue. +boolean wasRunnable = oldQueue.isRunnableApp(attempt); // if app was not runnable before, it may be runnable now boolean nowRunnable = maxRunningEnforcer.canAppBeRunnable(newQueue, attempt); if (wasRunnable && !nowRunnable) { - throw new IllegalStateException("Should have already verified that app " + throw new YarnException("Should have already verified that app " + attempt.getApplicationId() + " would be runnable in new queue"); } - + +
hadoop git commit: YARN-5965. Retrospect ApplicationReport#getApplicationTimeouts. Contributed by Rohith Sharma K S
Repository: hadoop Updated Branches: refs/heads/trunk c73e08a6d -> ab923a53f YARN-5965. Retrospect ApplicationReport#getApplicationTimeouts. Contributed by Rohith Sharma K S Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ab923a53 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ab923a53 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ab923a53 Branch: refs/heads/trunk Commit: ab923a53fcf55d4d75aa027d46e3c4a659015325 Parents: c73e08a Author: SunilAuthored: Thu Dec 8 00:27:25 2016 +0530 Committer: Sunil Committed: Thu Dec 8 00:27:25 2016 +0530 -- .../yarn/api/records/ApplicationReport.java | 6 +- .../src/main/proto/yarn_protos.proto| 7 +- .../hadoop/yarn/client/cli/ApplicationCLI.java | 3 +- .../hadoop/yarn/client/cli/TestYarnCLI.java | 7 +- .../impl/pb/ApplicationReportPBImpl.java| 107 +++ .../server/resourcemanager/rmapp/RMAppImpl.java | 13 ++- .../rmapp/TestApplicationLifetimeMonitor.java | 15 ++- 7 files changed, 91 insertions(+), 67 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ab923a53/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java index c039514..9e9ec3c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java @@ -25,7 +25,7 @@ import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.yarn.api.ApplicationClientProtocol; import org.apache.hadoop.yarn.util.Records; -import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -451,10 +451,10 @@ public abstract class ApplicationReport { @Public @Unstable - public abstract List getApplicationTimeouts(); + public abstract Map getApplicationTimeouts(); @Private @Unstable public abstract void setApplicationTimeouts( - List timeouts); + Map timeouts); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ab923a53/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto index 43a661f..5a70298 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto @@ -214,7 +214,12 @@ message ApplicationReportProto { optional PriorityProto priority = 23; optional string appNodeLabelExpression = 24; optional string amNodeLabelExpression = 25; - repeated ApplicationTimeoutProto application_timeouts = 26; + repeated AppTimeoutsMapProto appTimeouts = 26; +} + +message AppTimeoutsMapProto { + optional ApplicationTimeoutTypeProto application_timeout_type = 1; + optional ApplicationTimeoutProto application_timeout = 2; } message ApplicationTimeoutProto { http://git-wip-us.apache.org/repos/asf/hadoop/blob/ab923a53/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java index 20a65bf..efe5921 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java @@ -714,7 +714,8 @@ public class ApplicationCLI extends YarnCLI { appReportStr.println(appReport.getAppNodeLabelExpression()); appReportStr.print("\tAM container Node Label Expression : "); appReportStr.println(appReport.getAmNodeLabelExpression()); - for (ApplicationTimeout timeout :
hadoop git commit: YARN-5932. Retrospect moveApplicationToQueue in align with YARN-5611. Contributed by Sunil G.
Repository: hadoop Updated Branches: refs/heads/branch-2 d2656dc5a -> 602c99844 YARN-5932. Retrospect moveApplicationToQueue in align with YARN-5611. Contributed by Sunil G. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/602c9984 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/602c9984 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/602c9984 Branch: refs/heads/branch-2 Commit: 602c998443785317ae40e8e5f3baedf0b6c28b74 Parents: d2656dc Author: Rohith Sharma K SAuthored: Wed Dec 7 22:43:48 2016 +0530 Committer: Rohith Sharma K S Committed: Wed Dec 7 22:45:25 2016 +0530 -- .../server/resourcemanager/ClientRMService.java | 21 ++-- .../server/resourcemanager/RMAppManager.java| 110 +-- .../resourcemanager/RMAppManagerEvent.java | 11 ++ .../resourcemanager/RMAppManagerEventType.java | 3 +- .../resourcemanager/rmapp/RMAppEventType.java | 1 - .../server/resourcemanager/rmapp/RMAppImpl.java | 48 +--- .../resourcemanager/rmapp/RMAppMoveEvent.java | 44 .../scheduler/AbstractYarnScheduler.java| 18 ++- .../scheduler/YarnScheduler.java| 11 ++ .../scheduler/capacity/AbstractCSQueue.java | 9 ++ .../scheduler/capacity/CSQueue.java | 10 ++ .../scheduler/capacity/CapacityScheduler.java | 27 - .../scheduler/capacity/LeafQueue.java | 19 +++- .../scheduler/capacity/ParentQueue.java | 29 +++-- .../scheduler/fair/FairScheduler.java | 36 +- .../resourcemanager/TestMoveApplication.java| 12 +- .../TestCapacitySchedulerNodeLabelUpdate.java | 1 + 17 files changed, 276 insertions(+), 134 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/602c9984/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java -- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java index 8a0f373..62f938d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java @@ -152,7 +152,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSyst import org.apache.hadoop.yarn.server.resourcemanager.reservation.exceptions.PlanningException; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKillByClientEvent; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent; @@ -174,8 +173,6 @@ import org.apache.hadoop.yarn.util.Records; import org.apache.hadoop.yarn.util.UTCClock; import com.google.common.annotations.VisibleForTesting; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.SettableFuture; /** * The client interface to the Resource Manager. This module handles all the rpc @@ -1164,25 +1161,21 @@ public class ClientRMService extends AbstractService implements + callerUGI.getShortUserName() + " cannot perform operation " + ApplicationAccessType.MODIFY_APP.name() + " on " + applicationId)); } - + // Moves only allowed when app is in a state that means it is tracked by -// the scheduler -if (EnumSet.of(RMAppState.NEW, RMAppState.NEW_SAVING, RMAppState.FAILED, -RMAppState.FINAL_SAVING, RMAppState.FINISHING, RMAppState.FINISHED, -RMAppState.KILLED, RMAppState.KILLING, RMAppState.FAILED) -.contains(application.getState())) { +// the scheduler. Introducing SUBMITTED state also to this list as there +// could be a corner scenario that app may not be in Scheduler in SUBMITTED +// state. +if (!ACTIVE_APP_STATES.contains(application.getState())) { String msg = "App in " + application.getState() + " state cannot be moved.";
hadoop git commit: HDFS-10206. Datanodes not sorted properly by distance when the reader isn't a datanode. (Nandakumar via mingma)
Repository: hadoop Updated Branches: refs/heads/branch-2 3350d0c08 -> d2656dc5a HDFS-10206. Datanodes not sorted properly by distance when the reader isn't a datanode. (Nandakumar via mingma) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d2656dc5 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d2656dc5 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d2656dc5 Branch: refs/heads/branch-2 Commit: d2656dc5a6d4f5e208bc1f9466b4d8c8e105dae3 Parents: 3350d0c Author: Ming MaAuthored: Wed Dec 7 08:27:17 2016 -0800 Committer: Ming Ma Committed: Wed Dec 7 08:27:17 2016 -0800 -- .../org/apache/hadoop/net/NetworkTopology.java | 158 +-- .../server/blockmanagement/DatanodeManager.java | 14 +- .../apache/hadoop/net/TestNetworkTopology.java | 29 +++- 3 files changed, 184 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/d2656dc5/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java -- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java index 14c870d..5751d2b 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java @@ -57,6 +57,10 @@ public class NetworkTopology { public static final Logger LOG = LoggerFactory.getLogger(NetworkTopology.class); + private static final char PATH_SEPARATOR = '/'; + private static final String PATH_SEPARATOR_STR = "/"; + private static final String ROOT = "/"; + public static class InvalidTopologyException extends RuntimeException { private static final long serialVersionUID = 1L; public InvalidTopologyException(String msg) { @@ -916,7 +920,7 @@ public class NetworkTopology { } } - /** convert a network tree to a string */ + /** convert a network tree to a string. */ @Override public String toString() { // print the number of racks @@ -970,19 +974,108 @@ public class NetworkTopology { * @return weight */ protected int getWeight(Node reader, Node node) { -// 0 is local, 1 is same rack, 2 is off rack -// Start off by initializing to off rack -int weight = 2; -if (reader != null) { - if (reader.equals(node)) { -weight = 0; - } else if (isOnSameRack(reader, node)) { -weight = 1; +// 0 is local, 2 is same rack, and each level on each node increases the +//weight by 1 +//Start off by initializing to Integer.MAX_VALUE +int weight = Integer.MAX_VALUE; +if (reader != null && node != null) { + if(reader.equals(node)) { +return 0; + } + int maxReaderLevel = reader.getLevel(); + int maxNodeLevel = node.getLevel(); + int currentLevelToCompare = maxReaderLevel > maxNodeLevel ? + maxNodeLevel : maxReaderLevel; + Node r = reader; + Node n = node; + weight = 0; + while(r != null && r.getLevel() > currentLevelToCompare) { +r = r.getParent(); +weight++; + } + while(n != null && n.getLevel() > currentLevelToCompare) { +n = n.getParent(); +weight++; + } + while(r != null && n != null && !r.equals(n)) { +r = r.getParent(); +n = n.getParent(); +weight+=2; + } +} +return weight; + } + + /** + * Returns an integer weight which specifies how far away node is + * from reader. A lower value signifies that a node is closer. + * It uses network location to calculate the weight + * + * @param reader Node where data will be read + * @param node Replica of data + * @return weight + */ + private static int getWeightUsingNetworkLocation(Node reader, Node node) { +//Start off by initializing to Integer.MAX_VALUE +int weight = Integer.MAX_VALUE; +if(reader != null && node != null) { + String readerPath = normalizeNetworkLocationPath( + reader.getNetworkLocation()); + String nodePath = normalizeNetworkLocationPath( + node.getNetworkLocation()); + + //same rack + if(readerPath.equals(nodePath)) { +if(reader.getName().equals(node.getName())) { + weight = 0; +} else { + weight = 2; +} + } else { +String[] readerPathToken = readerPath.split(PATH_SEPARATOR_STR); +String[] nodePathToken = nodePath.split(PATH_SEPARATOR_STR); +int maxLevelToCompare = readerPathToken.length > nodePathToken.length ? +
hadoop git commit: HDFS-10206. Datanodes not sorted properly by distance when the reader isn't a datanode. (Nandakumar via mingma)
Repository: hadoop Updated Branches: refs/heads/trunk 563480dcc -> c73e08a6d HDFS-10206. Datanodes not sorted properly by distance when the reader isn't a datanode. (Nandakumar via mingma) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c73e08a6 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c73e08a6 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c73e08a6 Branch: refs/heads/trunk Commit: c73e08a6dad46cad14b38a4a586a5cda1622b206 Parents: 563480d Author: Ming MaAuthored: Wed Dec 7 08:26:09 2016 -0800 Committer: Ming Ma Committed: Wed Dec 7 08:26:09 2016 -0800 -- .../org/apache/hadoop/net/NetworkTopology.java | 158 +-- .../server/blockmanagement/DatanodeManager.java | 12 +- .../apache/hadoop/net/TestNetworkTopology.java | 29 +++- 3 files changed, 182 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c73e08a6/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java -- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java index 14c870d..5751d2b 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java @@ -57,6 +57,10 @@ public class NetworkTopology { public static final Logger LOG = LoggerFactory.getLogger(NetworkTopology.class); + private static final char PATH_SEPARATOR = '/'; + private static final String PATH_SEPARATOR_STR = "/"; + private static final String ROOT = "/"; + public static class InvalidTopologyException extends RuntimeException { private static final long serialVersionUID = 1L; public InvalidTopologyException(String msg) { @@ -916,7 +920,7 @@ public class NetworkTopology { } } - /** convert a network tree to a string */ + /** convert a network tree to a string. */ @Override public String toString() { // print the number of racks @@ -970,19 +974,108 @@ public class NetworkTopology { * @return weight */ protected int getWeight(Node reader, Node node) { -// 0 is local, 1 is same rack, 2 is off rack -// Start off by initializing to off rack -int weight = 2; -if (reader != null) { - if (reader.equals(node)) { -weight = 0; - } else if (isOnSameRack(reader, node)) { -weight = 1; +// 0 is local, 2 is same rack, and each level on each node increases the +//weight by 1 +//Start off by initializing to Integer.MAX_VALUE +int weight = Integer.MAX_VALUE; +if (reader != null && node != null) { + if(reader.equals(node)) { +return 0; + } + int maxReaderLevel = reader.getLevel(); + int maxNodeLevel = node.getLevel(); + int currentLevelToCompare = maxReaderLevel > maxNodeLevel ? + maxNodeLevel : maxReaderLevel; + Node r = reader; + Node n = node; + weight = 0; + while(r != null && r.getLevel() > currentLevelToCompare) { +r = r.getParent(); +weight++; + } + while(n != null && n.getLevel() > currentLevelToCompare) { +n = n.getParent(); +weight++; + } + while(r != null && n != null && !r.equals(n)) { +r = r.getParent(); +n = n.getParent(); +weight+=2; + } +} +return weight; + } + + /** + * Returns an integer weight which specifies how far away node is + * from reader. A lower value signifies that a node is closer. + * It uses network location to calculate the weight + * + * @param reader Node where data will be read + * @param node Replica of data + * @return weight + */ + private static int getWeightUsingNetworkLocation(Node reader, Node node) { +//Start off by initializing to Integer.MAX_VALUE +int weight = Integer.MAX_VALUE; +if(reader != null && node != null) { + String readerPath = normalizeNetworkLocationPath( + reader.getNetworkLocation()); + String nodePath = normalizeNetworkLocationPath( + node.getNetworkLocation()); + + //same rack + if(readerPath.equals(nodePath)) { +if(reader.getName().equals(node.getName())) { + weight = 0; +} else { + weight = 2; +} + } else { +String[] readerPathToken = readerPath.split(PATH_SEPARATOR_STR); +String[] nodePathToken = nodePath.split(PATH_SEPARATOR_STR); +int maxLevelToCompare = readerPathToken.length > nodePathToken.length ? +