Repository: hadoop Updated Branches: refs/heads/trunk a8dae0047 -> cadbc8b57
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java new file mode 100644 index 0000000..e4825ea --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java @@ -0,0 +1,35 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.submarine.client.cli.yarnservice; + +import org.apache.hadoop.yarn.submarine.common.MockClientContext; +import org.apache.hadoop.yarn.submarine.runtimes.RuntimeFactory; +import org.apache.hadoop.yarn.submarine.runtimes.common.MemorySubmarineStorage; +import org.apache.hadoop.yarn.submarine.runtimes.yarnservice.YarnServiceRuntimeFactory; + +public class YarnServiceCliTestUtils { + public static MockClientContext getMockClientContext() { + MockClientContext mockClientContext = new MockClientContext(); + RuntimeFactory runtimeFactory = new YarnServiceRuntimeFactory( + mockClientContext); + mockClientContext.setRuntimeFactory(runtimeFactory); + runtimeFactory.setSubmarineStorage(new MemorySubmarineStorage()); + return mockClientContext; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java new file mode 100644 index 0000000..5c06ddc --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java @@ -0,0 +1,56 @@ +/** + * 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.submarine.common; + +import org.apache.hadoop.yarn.submarine.common.fs.MockRemoteDirectoryManager; +import org.apache.hadoop.yarn.submarine.common.fs.RemoteDirectoryManager; +import org.apache.hadoop.yarn.client.api.YarnClient; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.service.client.ServiceClient; +import org.apache.hadoop.yarn.util.resource.ResourceUtils; + +import java.io.IOException; + +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class MockClientContext extends ClientContext { + private MockRemoteDirectoryManager remoteDirectoryMgr = + new MockRemoteDirectoryManager(); + + @Override + public RemoteDirectoryManager getRemoteDirectoryManager() { + return remoteDirectoryMgr; + } + + @Override + public synchronized YarnClient getOrCreateYarnClient() { + YarnClient client = mock(YarnClient.class); + try { + when(client.getResourceTypeInfo()).thenReturn( + ResourceUtils.getResourcesTypeInfo()); + } catch (YarnException e) { + fail(e.getMessage()); + } catch (IOException e) { + fail(e.getMessage()); + } + return client; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java new file mode 100644 index 0000000..a195b59 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java @@ -0,0 +1,83 @@ +/** + * 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.submarine.common.fs; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; + +import java.io.File; +import java.io.IOException; + +public class MockRemoteDirectoryManager implements RemoteDirectoryManager { + private File jobsParentDir = null; + private File modelParentDir = null; + + @Override + public Path getJobStagingArea(String jobName, boolean create) + throws IOException { + if (jobsParentDir == null && create) { + jobsParentDir = new File( + "target/_staging_area_" + System.currentTimeMillis()); + if (!jobsParentDir.mkdirs()) { + throw new IOException( + "Failed to mkdirs for" + jobsParentDir.getAbsolutePath()); + } + } + + File jobDir = new File(jobsParentDir.getAbsolutePath(), jobName); + if (create && !jobDir.exists()) { + if (!jobDir.mkdirs()) { + throw new IOException("Failed to mkdirs for " + jobDir.getAbsolutePath()); + } + } + return new Path(jobDir.getAbsolutePath()); + } + + @Override + public Path getJobCheckpointDir(String jobName, boolean create) + throws IOException { + return null; + } + + @Override + public Path getModelDir(String modelName, boolean create) throws IOException { + if (modelParentDir == null && create) { + modelParentDir = new File( + "target/_models_" + System.currentTimeMillis()); + if (!modelParentDir.mkdirs()) { + throw new IOException( + "Failed to mkdirs for " + modelParentDir.getAbsolutePath()); + } + } + + File modelDir = new File(modelParentDir.getAbsolutePath(), modelName); + if (create) { + if (!modelDir.exists() && !modelDir.mkdirs()) { + throw new IOException("Failed to mkdirs for " + modelDir.getAbsolutePath()); + } + } + return new Path(modelDir.getAbsolutePath()); + } + + @Override + public FileSystem getFileSystem() throws IOException { + return FileSystem.getLocal(new Configuration()); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java new file mode 100644 index 0000000..013614e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.submarine.runtimes.common; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class MemorySubmarineStorage extends SubmarineStorage { + private Map<String, Map<String, String>> jobsInfo = new HashMap<>(); + private Map<String, Map<String, Map<String, String>>> modelsInfo = + new HashMap<>(); + + @Override + public synchronized void addNewJob(String jobName, Map<String, String> jobInfo) + throws IOException { + jobsInfo.put(jobName, jobInfo); + } + + @Override + public synchronized Map<String, String> getJobInfoByName(String jobName) + throws IOException { + Map<String, String> info = jobsInfo.get(jobName); + if (info == null) { + throw new IOException("Failed to find job=" + jobName); + } + return info; + } + + @Override + public synchronized void addNewModel(String modelName, String version, + Map<String, String> modelInfo) throws IOException { + if (!modelsInfo.containsKey(modelName)) { + modelsInfo.put(modelName, new HashMap<>()); + } + modelsInfo.get(modelName).put(version, modelInfo); + } + + @Override + public synchronized Map<String, String> getModelInfoByName(String modelName, + String version) throws IOException { + + boolean notFound = false; + Map<String, String> info = null; + try { + info = modelsInfo.get(modelName).get(version); + } catch (NullPointerException e) { + notFound = true; + } + + if (notFound || info == null) { + throw new IOException( + "Failed to find, model=" + modelName + " version=" + version); + } + + return info; + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java new file mode 100644 index 0000000..52a68b3 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java @@ -0,0 +1,73 @@ +/** + * Licensed 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. See accompanying LICENSE file. + */ + +package org.apache.hadoop.yarn.submarine.runtimes.common; + +import org.apache.hadoop.yarn.submarine.common.ClientContext; +import org.apache.hadoop.yarn.submarine.common.fs.MockRemoteDirectoryManager; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class TestFSBasedSubmarineStorage { + private Map<String, String> getMap(String prefix) { + Map<String, String> map = new HashMap<>(); + map.put(prefix + "1", "1"); + map.put(prefix + "2", "2"); + map.put(prefix + "3", "3"); + map.put(prefix + "4", "4"); + return map; + } + + private void compareMap(Map<String, String> map1, Map<String, String> map2) { + Assert.assertEquals(map1.size(), map2.size()); + for (String k : map1.keySet()) { + Assert.assertEquals(map1.get(k), map2.get(k)); + } + } + + @Test + public void testStorageOps() throws IOException { + MockRemoteDirectoryManager remoteDirectoryManager = new MockRemoteDirectoryManager(); + ClientContext clientContext = mock(ClientContext.class); + when(clientContext.getRemoteDirectoryManager()).thenReturn(remoteDirectoryManager); + FSBasedSubmarineStorageImpl storage = new FSBasedSubmarineStorageImpl( + clientContext); + storage.addNewJob("job1", getMap("job1")); + storage.addNewJob("job2", getMap("job2")); + storage.addNewJob("job3", getMap("job3")); + storage.addNewJob("job4", new HashMap<>()); + storage.addNewModel("model1", "1.0", getMap("model1_1.0")); + storage.addNewModel("model1", "2.0.0", getMap("model1_2.0.0")); + storage.addNewModel("model2", null, getMap("model1_default")); + storage.addNewModel("model2", "1.0", getMap("model2_1.0")); + + // create a new storage and read it back. + storage = new FSBasedSubmarineStorageImpl( + clientContext); + compareMap(getMap("job1"), storage.getJobInfoByName("job1")); + compareMap(getMap("job2"), storage.getJobInfoByName("job2")); + compareMap(getMap("job3"), storage.getJobInfoByName("job3")); + compareMap(new HashMap<>(), storage.getJobInfoByName("job4")); + compareMap(getMap("model1_1.0"), storage.getModelInfoByName("model1", "1.0")); + compareMap(getMap("model1_2.0.0"), storage.getModelInfoByName("model1", "2.0.0")); + compareMap(getMap("model2_1.0"), storage.getModelInfoByName("model2", "1.0")); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java new file mode 100644 index 0000000..d7dc874 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java @@ -0,0 +1,42 @@ +/** + * Licensed 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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. See accompanying LICENSE file. + */ + +package org.apache.hadoop.yarn.submarine.runtimes.yarnservice; + +import org.codehaus.jettison.json.JSONException; +import org.junit.Assert; +import org.junit.Test; + +public class TestTFConfigGenerator { + @Test + public void testSimpleDistributedTFConfigGenerator() throws JSONException { + String json = YarnServiceUtils.getTFConfigEnv("worker", 5, 3, "wtan", + "tf-job-001", "example.com"); + String expected = + "{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\",\\\"worker-1.wtan.tf-job-001.example.com:8000\\\",\\\"worker-2.wtan.tf-job-001.example.com:8000\\\",\\\"worker-3.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\",\\\"ps-1.wtan.tf-job-001.example.com:8000\\\",\\\"ps-2.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{ \\\"type\\\":\\\"worker\\\", \\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}"; + Assert.assertEquals(expected, json); + + json = YarnServiceUtils.getTFConfigEnv("ps", 5, 3, "wtan", "tf-job-001", + "example.com"); + expected = + "{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\",\\\"worker-1.wtan.tf-job-001.example.com:8000\\\",\\\"worker-2.wtan.tf-job-001.example.com:8000\\\",\\\"worker-3.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\",\\\"ps-1.wtan.tf-job-001.example.com:8000\\\",\\\"ps-2.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{ \\\"type\\\":\\\"ps\\\", \\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}"; + Assert.assertEquals(expected, json); + + json = YarnServiceUtils.getTFConfigEnv("master", 2, 1, "wtan", "tf-job-001", + "example.com"); + expected = + "{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{ \\\"type\\\":\\\"master\\\", \\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}"; + Assert.assertEquals(expected, json); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml new file mode 100644 index 0000000..50ec146 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> +<!-- + Licensed 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. See accompanying LICENSE file. +--> + +<!-- Put site-specific property overrides in this file. --> + +<configuration> + +</configuration> http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml new file mode 100644 index 0000000..50ec146 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> +<!-- + Licensed 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. See accompanying LICENSE file. +--> + +<!-- Put site-specific property overrides in this file. --> + +<configuration> + +</configuration> http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml index 490e9ad..4c03f3c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml @@ -37,6 +37,7 @@ <module>hadoop-yarn-applications-distributedshell</module> <module>hadoop-yarn-applications-unmanaged-am-launcher</module> <module>hadoop-yarn-services</module> + <module>hadoop-yarn-submarine</module> </modules> <profiles> --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org