Skip to content

Commit 654718b

Browse files
author
majin.nathan
committed
Introduce scheduler module and external resource container
1 parent 74f6d7a commit 654718b

File tree

16 files changed

+80
-45
lines changed

16 files changed

+80
-45
lines changed

amoro-ams/src/main/java/org/apache/amoro/server/AmoroServiceContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.apache.amoro.server.resource.ContainerMetadata;
4545
import org.apache.amoro.server.resource.DefaultOptimizerManager;
4646
import org.apache.amoro.server.resource.OptimizerManager;
47-
import org.apache.amoro.server.resource.ResourceContainers;
47+
import org.apache.amoro.server.resource.InternalContainers;
4848
import org.apache.amoro.server.table.DefaultTableManager;
4949
import org.apache.amoro.server.table.DefaultTableService;
5050
import org.apache.amoro.server.table.RuntimeHandlerChain;
@@ -528,7 +528,7 @@ private void initContainerConfig() {
528528
containerList.add(container);
529529
}
530530
}
531-
ResourceContainers.init(containerList);
531+
InternalContainers.init(containerList);
532532
}
533533
}
534534

amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.apache.amoro.server.resource.ContainerMetadata;
2828
import org.apache.amoro.server.resource.OptimizerInstance;
2929
import org.apache.amoro.server.resource.OptimizerManager;
30-
import org.apache.amoro.server.resource.ResourceContainers;
30+
import org.apache.amoro.server.resource.InternalContainers;
3131
import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions;
3232

3333
import java.util.List;
@@ -67,7 +67,7 @@ public void releaseOptimizer(Context ctx) {
6767
"The resource ID %s has not been indexed" + " to any optimizer.", resourceId));
6868
Resource resource = optimizerManager.getResource(resourceId);
6969
resource.getProperties().putAll(optimizerInstances.get(0).getProperties());
70-
ResourceContainers.get(resource.getContainerName()).releaseOptimizer(resource);
70+
InternalContainers.get(resource.getContainerName()).releaseOptimizer(resource);
7171
optimizerManager.deleteResource(resourceId);
7272
optimizerManager.deleteOptimizer(resource.getGroupName(), resourceId);
7373
ctx.json(OkResponse.of("Success to release optimizer"));
@@ -85,7 +85,7 @@ public void createOptimizer(Context ctx) {
8585
.setProperties(resourceGroup.getProperties())
8686
.setThreadCount(parallelism)
8787
.build();
88-
ResourceContainers.get(resource.getContainerName()).requestResource(resource);
88+
InternalContainers.get(resource.getContainerName()).requestResource(resource);
8989
optimizerManager.createResource(resource);
9090
ctx.json(OkResponse.of("success to create optimizer"));
9191
}
@@ -94,7 +94,7 @@ public void createOptimizer(Context ctx) {
9494
public void getContainers(Context ctx) {
9595
ctx.json(
9696
OkResponse.of(
97-
ResourceContainers.getMetadataList().stream()
97+
InternalContainers.getMetadataList().stream()
9898
.map(ContainerMetadata::getName)
9999
.collect(Collectors.toList())));
100100
}

amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.apache.amoro.server.resource.ContainerMetadata;
3333
import org.apache.amoro.server.resource.OptimizerInstance;
3434
import org.apache.amoro.server.resource.OptimizerManager;
35-
import org.apache.amoro.server.resource.ResourceContainers;
35+
import org.apache.amoro.server.resource.InternalContainers;
3636
import org.apache.amoro.server.table.TableManager;
3737
import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions;
3838
import org.apache.commons.lang3.StringUtils;
@@ -159,7 +159,7 @@ public void getOptimizerGroups(Context ctx) {
159159
optimizerManager.listResourceGroups().stream()
160160
.filter(
161161
resourceGroup ->
162-
!ResourceContainers.EXTERNAL_CONTAINER_NAME.equals(
162+
!InternalContainers.UNMANAGED_CONTAINER_NAME.equals(
163163
resourceGroup.getContainer()))
164164
.map(
165165
e -> {
@@ -209,7 +209,7 @@ public void releaseOptimizer(Context ctx) {
209209
"The resource ID %s has not been indexed" + " to any optimizer.", resourceId));
210210
Resource resource = optimizerManager.getResource(resourceId);
211211
resource.getProperties().putAll(optimizerInstances.get(0).getProperties());
212-
ResourceContainers.get(resource.getContainerName()).releaseOptimizer(resource);
212+
InternalContainers.get(resource.getContainerName()).releaseOptimizer(resource);
213213
optimizerManager.deleteResource(resourceId);
214214
optimizerManager.deleteOptimizer(resource.getGroupName(), resourceId);
215215
ctx.json(OkResponse.of("Success to release optimizer"));
@@ -228,7 +228,7 @@ public void scaleOutOptimizer(Context ctx) {
228228
.setProperties(resourceGroup.getProperties())
229229
.setThreadCount(parallelism)
230230
.build();
231-
ResourceContainers.get(resource.getContainerName()).requestResource(resource);
231+
InternalContainers.get(resource.getContainerName()).requestResource(resource);
232232
optimizerManager.createResource(resource);
233233
ctx.json(OkResponse.of("success to scaleOut optimizer"));
234234
}
@@ -303,7 +303,7 @@ public void deleteCheckResourceGroup(Context ctx) {
303303
public void getContainers(Context ctx) {
304304
ctx.json(
305305
OkResponse.of(
306-
ResourceContainers.getMetadataList().stream()
306+
InternalContainers.getMetadataList().stream()
307307
.map(ContainerMetadata::getName)
308308
.collect(Collectors.toList())));
309309
}

amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/SettingController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.apache.amoro.server.dashboard.response.OkResponse;
2626
import org.apache.amoro.server.resource.ContainerMetadata;
2727
import org.apache.amoro.server.resource.OptimizerManager;
28-
import org.apache.amoro.server.resource.ResourceContainers;
28+
import org.apache.amoro.server.resource.InternalContainers;
2929
import org.glassfish.jersey.internal.guava.Sets;
3030

3131
import java.util.ArrayList;
@@ -72,7 +72,7 @@ private void putSetting(Map<String, String> settingMap, String key, Object value
7272

7373
/** Get container settings. */
7474
public void getContainerSetting(Context ctx) {
75-
List<ContainerMetadata> containerMetas = ResourceContainers.getMetadataList();
75+
List<ContainerMetadata> containerMetas = InternalContainers.getMetadataList();
7676
List<Map<String, Object>> result = new ArrayList<>();
7777
Objects.requireNonNull(containerMetas)
7878
.forEach(

amoro-ams/src/main/java/org/apache/amoro/server/manager/AbstractResourceContainer.java renamed to amoro-ams/src/main/java/org/apache/amoro/server/manager/AbstractOptimizerContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
package org.apache.amoro.server.manager;
2020

2121
import org.apache.amoro.OptimizerProperties;
22+
import org.apache.amoro.resource.InternalResourceContainer;
2223
import org.apache.amoro.resource.Resource;
23-
import org.apache.amoro.resource.ResourceContainer;
2424
import org.apache.amoro.resource.ResourceStatus;
2525
import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions;
2626
import org.apache.commons.lang3.StringUtils;
@@ -30,7 +30,7 @@
3030
import java.util.List;
3131
import java.util.Map;
3232

33-
public abstract class AbstractResourceContainer implements ResourceContainer {
33+
public abstract class AbstractOptimizerContainer implements InternalResourceContainer {
3434
private String containerName;
3535
private Map<String, String> containerProperties;
3636

amoro-ams/src/main/java/org/apache/amoro/server/manager/FlinkOptimizerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
import java.util.regex.Pattern;
8080
import java.util.stream.Collectors;
8181

82-
public class FlinkOptimizerContainer extends AbstractResourceContainer {
82+
public class FlinkOptimizerContainer extends AbstractOptimizerContainer {
8383
private static final Logger LOG = LoggerFactory.getLogger(FlinkOptimizerContainer.class);
8484

8585
public static final String FLINK_HOME_PROPERTY = "flink-home";

amoro-ams/src/main/java/org/apache/amoro/server/manager/KubernetesOptimizerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
import java.util.stream.Collectors;
5757

5858
/** Kubernetes Optimizer Container with Standalone Optimizer */
59-
public class KubernetesOptimizerContainer extends AbstractResourceContainer {
59+
public class KubernetesOptimizerContainer extends AbstractOptimizerContainer {
6060

6161
private static final Logger LOG = LoggerFactory.getLogger(KubernetesOptimizerContainer.class);
6262

amoro-ams/src/main/java/org/apache/amoro/server/manager/LocalOptimizerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.Collections;
2828
import java.util.Map;
2929

30-
public class LocalOptimizerContainer extends AbstractResourceContainer {
30+
public class LocalOptimizerContainer extends AbstractOptimizerContainer {
3131

3232
private static final Logger LOG = LoggerFactory.getLogger(LocalOptimizerContainer.class);
3333

amoro-ams/src/main/java/org/apache/amoro/server/manager/SparkOptimizerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import java.util.regex.Pattern;
4141
import java.util.stream.Collectors;
4242

43-
public class SparkOptimizerContainer extends AbstractResourceContainer {
43+
public class SparkOptimizerContainer extends AbstractOptimizerContainer {
4444
private static final Logger LOG = LoggerFactory.getLogger(SparkOptimizerContainer.class);
4545

4646
public static final String SPARK_HOME_PROPERTY = "spark-home";

amoro-ams/src/main/java/org/apache/amoro/server/resource/ResourceContainers.java renamed to amoro-ams/src/main/java/org/apache/amoro/server/resource/InternalContainers.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package org.apache.amoro.server.resource;
2020

21+
import org.apache.amoro.resource.InternalResourceContainer;
2122
import org.apache.amoro.resource.ResourceContainer;
2223
import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions;
2324
import org.apache.amoro.shade.guava32.com.google.common.collect.Maps;
@@ -27,15 +28,15 @@
2728
import java.util.Optional;
2829
import java.util.stream.Collectors;
2930

30-
public class ResourceContainers {
31-
public static final String EXTERNAL_CONTAINER_NAME = "external";
31+
public class InternalContainers {
32+
public static final String UNMANAGED_CONTAINER_NAME = "unmanaged";
3233
private static final Map<String, ContainerWrapper> globalContainers = Maps.newHashMap();
3334
private static volatile boolean isInitialized = false;
3435

3536
static {
36-
ContainerMetadata metadata = new ContainerMetadata(EXTERNAL_CONTAINER_NAME, "");
37+
ContainerMetadata metadata = new ContainerMetadata(UNMANAGED_CONTAINER_NAME, "");
3738
ContainerWrapper externalContainer = new ContainerWrapper(metadata, null);
38-
globalContainers.put(EXTERNAL_CONTAINER_NAME, externalContainer);
39+
globalContainers.put(UNMANAGED_CONTAINER_NAME, externalContainer);
3940
}
4041

4142
public static void init(List<ContainerMetadata> containerList) {
@@ -46,7 +47,7 @@ public static void init(List<ContainerMetadata> containerList) {
4647
isInitialized = true;
4748
}
4849

49-
public static ResourceContainer get(String name) {
50+
public static InternalResourceContainer get(String name) {
5051
checkInitialized();
5152
return Optional.ofNullable(globalContainers.get(name))
5253
.map(ContainerWrapper::getContainer)
@@ -70,31 +71,31 @@ public static boolean contains(String name) {
7071
}
7172

7273
private static class ContainerWrapper {
73-
private final ResourceContainer container;
74+
private final InternalResourceContainer container;
7475
private final ContainerMetadata metadata;
7576

7677
public ContainerWrapper(ContainerMetadata metadata) {
7778
this.metadata = metadata;
7879
this.container = loadResourceContainer(metadata.getImplClass());
7980
}
8081

81-
ContainerWrapper(ContainerMetadata metadata, ResourceContainer container) {
82+
ContainerWrapper(ContainerMetadata metadata, InternalResourceContainer container) {
8283
this.metadata = metadata;
8384
this.container = container;
8485
}
8586

86-
public ResourceContainer getContainer() {
87+
public InternalResourceContainer getContainer() {
8788
return container;
8889
}
8990

9091
public ContainerMetadata getMetadata() {
9192
return metadata;
9293
}
9394

94-
private ResourceContainer loadResourceContainer(String implClass) {
95+
private InternalResourceContainer loadResourceContainer(String implClass) {
9596
try {
9697
Class<?> clazz = Class.forName(implClass);
97-
ResourceContainer resourceContainer = (ResourceContainer) clazz.newInstance();
98+
InternalResourceContainer resourceContainer = (InternalResourceContainer) clazz.newInstance();
9899
resourceContainer.init(metadata.getName(), metadata.getProperties());
99100
return resourceContainer;
100101
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {

amoro-ams/src/test/java/org/apache/amoro/server/AmsEnvironment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.apache.amoro.server.catalog.DefaultCatalogManager;
3333
import org.apache.amoro.server.catalog.ServerCatalog;
3434
import org.apache.amoro.server.resource.OptimizerManager;
35-
import org.apache.amoro.server.resource.ResourceContainers;
35+
import org.apache.amoro.server.resource.InternalContainers;
3636
import org.apache.amoro.server.table.DefaultTableService;
3737
import org.apache.amoro.shade.guava32.com.google.common.collect.Maps;
3838
import org.apache.amoro.shade.guava32.com.google.common.io.MoreFiles;
@@ -310,7 +310,7 @@ public void stopOptimizer() {
310310
.listOptimizers()
311311
.forEach(
312312
resource -> {
313-
ResourceContainers.get(resource.getContainerName()).releaseOptimizer(resource);
313+
InternalContainers.get(resource.getContainerName()).releaseOptimizer(resource);
314314
});
315315
}
316316

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.apache.amoro.resource;
2+
3+
import org.apache.amoro.process.TableProcess;
4+
import org.apache.amoro.process.TableProcessState;
5+
6+
public interface ExternalResourceContainer {
7+
8+
Resource submit(TableProcess<TableProcessState> process);
9+
10+
void release(String resourceId);
11+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.apache.amoro.resource;
2+
3+
public interface InternalResourceContainer extends ResourceContainer {
4+
5+
/**
6+
* Start a new optimizer.
7+
*
8+
* @param resource resource information to start the optimizer
9+
*/
10+
void requestResource(Resource resource);
11+
12+
/**
13+
* Release a optimizer
14+
*
15+
* @param resource resource information to release the optimizer
16+
*/
17+
void releaseOptimizer(Resource resource);
18+
}

amoro-common/src/main/java/org/apache/amoro/resource/ResourceContainer.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,5 @@ public interface ResourceContainer {
3131
*/
3232
void init(String name, Map<String, String> containerProperties);
3333

34-
/**
35-
* Start a new optimizer.
36-
*
37-
* @param resource resource information to start the optimizer
38-
*/
39-
void requestResource(Resource resource);
40-
41-
/**
42-
* Release a optimizer
43-
*
44-
* @param resource resource information to release the optimizer
45-
*/
46-
void releaseOptimizer(Resource resource);
47-
4834
ResourceStatus getStatus(String resourceId);
4935
}

amoro-scheduler/pom.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.apache.amoro</groupId>
8+
<artifactId>amoro-parent</artifactId>
9+
<version>0.8-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>amoro-scheduler</artifactId>
13+
14+
<properties>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
</properties>
17+
18+
</project>

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<module>amoro-common</module>
5050
<module>amoro-web</module>
5151
<module>amoro-ams</module>
52+
<module>amoro-scheduler</module>
5253
<module>amoro-optimizer</module>
5354
<module>amoro-metrics</module>
5455
<module>amoro-format-iceberg</module>

0 commit comments

Comments
 (0)