Search in sources :

Example 1 with WeaveSpecification

use of com.continuuity.weave.api.WeaveSpecification in project weave by continuuity.

the class WeaveContainerMain method main.

/**
   * Main method for launching a {@link WeaveContainerService} which runs
   * a {@link com.continuuity.weave.api.WeaveRunnable}.
   */
public static void main(final String[] args) throws Exception {
    // Try to load the secure store from localized file, which AM requested RM to localize it for this container.
    loadSecureStore();
    String zkConnectStr = System.getenv(EnvKeys.WEAVE_ZK_CONNECT);
    File weaveSpecFile = new File(Constants.Files.WEAVE_SPEC);
    RunId appRunId = RunIds.fromString(System.getenv(EnvKeys.WEAVE_APP_RUN_ID));
    RunId runId = RunIds.fromString(System.getenv(EnvKeys.WEAVE_RUN_ID));
    String runnableName = System.getenv(EnvKeys.WEAVE_RUNNABLE_NAME);
    int instanceId = Integer.parseInt(System.getenv(EnvKeys.WEAVE_INSTANCE_ID));
    int instanceCount = Integer.parseInt(System.getenv(EnvKeys.WEAVE_INSTANCE_COUNT));
    ZKClientService zkClientService = ZKClientServices.delegate(ZKClients.reWatchOnExpire(ZKClients.retryOnFailure(ZKClientService.Builder.of(zkConnectStr).build(), RetryStrategies.fixDelay(1, TimeUnit.SECONDS))));
    DiscoveryService discoveryService = new ZKDiscoveryService(zkClientService);
    WeaveSpecification weaveSpec = loadWeaveSpec(weaveSpecFile);
    renameLocalFiles(weaveSpec.getRunnables().get(runnableName));
    WeaveRunnableSpecification runnableSpec = weaveSpec.getRunnables().get(runnableName).getRunnableSpecification();
    ContainerInfo containerInfo = new EnvContainerInfo();
    Arguments arguments = decodeArgs();
    BasicWeaveContext context = new BasicWeaveContext(runId, appRunId, containerInfo.getHost(), arguments.getRunnableArguments().get(runnableName).toArray(new String[0]), arguments.getArguments().toArray(new String[0]), runnableSpec, instanceId, discoveryService, instanceCount, containerInfo.getMemoryMB(), containerInfo.getVirtualCores());
    Configuration conf = new YarnConfiguration(new HdfsConfiguration(new Configuration()));
    Service service = new WeaveContainerService(context, containerInfo, getContainerZKClient(zkClientService, appRunId, runnableName), runId, runnableSpec, getClassLoader(), createAppLocation(conf));
    new WeaveContainerMain().doMain(zkClientService, service);
}
Also used : YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) Configuration(org.apache.hadoop.conf.Configuration) HdfsConfiguration(org.apache.hadoop.hdfs.HdfsConfiguration) EnvContainerInfo(com.continuuity.weave.internal.EnvContainerInfo) Arguments(com.continuuity.weave.internal.Arguments) DiscoveryService(com.continuuity.weave.discovery.DiscoveryService) ZKDiscoveryService(com.continuuity.weave.discovery.ZKDiscoveryService) ZKClientService(com.continuuity.weave.zookeeper.ZKClientService) Service(com.google.common.util.concurrent.Service) WeaveSpecification(com.continuuity.weave.api.WeaveSpecification) HdfsConfiguration(org.apache.hadoop.hdfs.HdfsConfiguration) WeaveRunnableSpecification(com.continuuity.weave.api.WeaveRunnableSpecification) ZKDiscoveryService(com.continuuity.weave.discovery.ZKDiscoveryService) ZKClientService(com.continuuity.weave.zookeeper.ZKClientService) YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) EnvContainerInfo(com.continuuity.weave.internal.EnvContainerInfo) ContainerInfo(com.continuuity.weave.internal.ContainerInfo) BasicWeaveContext(com.continuuity.weave.internal.BasicWeaveContext) RunId(com.continuuity.weave.api.RunId) DiscoveryService(com.continuuity.weave.discovery.DiscoveryService) ZKDiscoveryService(com.continuuity.weave.discovery.ZKDiscoveryService) LocalFile(com.continuuity.weave.api.LocalFile) File(java.io.File)

Example 2 with WeaveSpecification

use of com.continuuity.weave.api.WeaveSpecification in project weave by continuuity.

the class WeaveSpecificationTest method testAnyOrder.

@Test
public void testAnyOrder() {
    WeaveSpecification spec = WeaveSpecification.Builder.with().setName("Testing").withRunnable().add("r1", new DummyRunnable()).noLocalFiles().add("r2", new DummyRunnable()).noLocalFiles().add("r3", new DummyRunnable()).noLocalFiles().anyOrder().build();
    Assert.assertEquals(3, spec.getRunnables().size());
    List<WeaveSpecification.Order> orders = spec.getOrders();
    Assert.assertEquals(1, orders.size());
    Assert.assertEquals(ImmutableSet.of("r1", "r2", "r3"), orders.get(0).getNames());
}
Also used : WeaveSpecification(com.continuuity.weave.api.WeaveSpecification) Test(org.junit.Test)

Example 3 with WeaveSpecification

use of com.continuuity.weave.api.WeaveSpecification in project weave by continuuity.

the class WeaveSpecificationCodec method serialize.

@Override
public JsonElement serialize(WeaveSpecification src, Type typeOfSrc, JsonSerializationContext context) {
    JsonObject json = new JsonObject();
    json.addProperty("name", src.getName());
    json.add("runnables", context.serialize(src.getRunnables(), new TypeToken<Map<String, RuntimeSpecification>>() {
    }.getType()));
    json.add("orders", context.serialize(src.getOrders(), new TypeToken<List<WeaveSpecification.Order>>() {
    }.getType()));
    EventHandlerSpecification eventHandler = src.getEventHandler();
    if (eventHandler != null) {
        json.add("handler", context.serialize(eventHandler, EventHandlerSpecification.class));
    }
    return json;
}
Also used : JsonObject(com.google.gson.JsonObject) List(java.util.List) WeaveSpecification(com.continuuity.weave.api.WeaveSpecification) DefaultWeaveSpecification(com.continuuity.weave.internal.DefaultWeaveSpecification) EventHandlerSpecification(com.continuuity.weave.api.EventHandlerSpecification) DefaultEventHandlerSpecification(com.continuuity.weave.internal.DefaultEventHandlerSpecification) Map(java.util.Map)

Example 4 with WeaveSpecification

use of com.continuuity.weave.api.WeaveSpecification in project weave by continuuity.

the class YarnWeaveRunnerService method prepare.

@Override
public WeavePreparer prepare(WeaveApplication application) {
    Preconditions.checkState(isRunning(), "Service not start. Please call start() first.");
    final WeaveSpecification weaveSpec = application.configure();
    final String appName = weaveSpec.getName();
    return new YarnWeavePreparer(yarnConfig, weaveSpec, yarnAppClient, zkClientService, locationFactory, Suppliers.ofInstance(jvmOptions), new YarnWeaveControllerFactory() {

        @Override
        public YarnWeaveController create(RunId runId, Iterable<LogHandler> logHandlers, Callable<ProcessController<YarnApplicationReport>> startUp) {
            ZKClient zkClient = ZKClients.namespace(zkClientService, "/" + appName);
            YarnWeaveController controller = listenController(new YarnWeaveController(runId, zkClient, logHandlers, startUp));
            synchronized (YarnWeaveRunnerService.this) {
                Preconditions.checkArgument(!controllers.contains(appName, runId), "Application %s with runId %s is already running.", appName, runId);
                controllers.put(appName, runId, controller);
            }
            return controller;
        }
    });
}
Also used : LogHandler(com.continuuity.weave.api.logging.LogHandler) ProcessController(com.continuuity.weave.internal.ProcessController) ZKClient(com.continuuity.weave.zookeeper.ZKClient) WeaveSpecification(com.continuuity.weave.api.WeaveSpecification) RunId(com.continuuity.weave.api.RunId)

Example 5 with WeaveSpecification

use of com.continuuity.weave.api.WeaveSpecification in project weave by continuuity.

the class WeaveSpecificationTest method testOrder.

@Test
public void testOrder() {
    WeaveSpecification spec = WeaveSpecification.Builder.with().setName("Testing").withRunnable().add("r1", new DummyRunnable()).noLocalFiles().add("r2", new DummyRunnable()).noLocalFiles().add("r3", new DummyRunnable()).noLocalFiles().add("r4", new DummyRunnable()).noLocalFiles().withOrder().begin("r1", "r2").nextWhenStarted("r3").build();
    Assert.assertEquals(4, spec.getRunnables().size());
    List<WeaveSpecification.Order> orders = spec.getOrders();
    Assert.assertEquals(3, orders.size());
    Assert.assertEquals(ImmutableSet.of("r1", "r2"), orders.get(0).getNames());
    Assert.assertEquals(ImmutableSet.of("r3"), orders.get(1).getNames());
    Assert.assertEquals(ImmutableSet.of("r4"), orders.get(2).getNames());
}
Also used : WeaveSpecification(com.continuuity.weave.api.WeaveSpecification) Test(org.junit.Test)

Aggregations

WeaveSpecification (com.continuuity.weave.api.WeaveSpecification)5 RunId (com.continuuity.weave.api.RunId)2 Test (org.junit.Test)2 EventHandlerSpecification (com.continuuity.weave.api.EventHandlerSpecification)1 LocalFile (com.continuuity.weave.api.LocalFile)1 WeaveRunnableSpecification (com.continuuity.weave.api.WeaveRunnableSpecification)1 LogHandler (com.continuuity.weave.api.logging.LogHandler)1 DiscoveryService (com.continuuity.weave.discovery.DiscoveryService)1 ZKDiscoveryService (com.continuuity.weave.discovery.ZKDiscoveryService)1 Arguments (com.continuuity.weave.internal.Arguments)1 BasicWeaveContext (com.continuuity.weave.internal.BasicWeaveContext)1 ContainerInfo (com.continuuity.weave.internal.ContainerInfo)1 DefaultEventHandlerSpecification (com.continuuity.weave.internal.DefaultEventHandlerSpecification)1 DefaultWeaveSpecification (com.continuuity.weave.internal.DefaultWeaveSpecification)1 EnvContainerInfo (com.continuuity.weave.internal.EnvContainerInfo)1 ProcessController (com.continuuity.weave.internal.ProcessController)1 ZKClient (com.continuuity.weave.zookeeper.ZKClient)1 ZKClientService (com.continuuity.weave.zookeeper.ZKClientService)1 Service (com.google.common.util.concurrent.Service)1 JsonObject (com.google.gson.JsonObject)1