private List<Protos.Resource> getWorkerRequiredResources(long workerCpus, long workerMem) {
   List<Protos.Resource> resources = getCoreRequiredResouces(workerCpus, workerMem);
   // Set worker rcp port, web ui port, data port as range resources for this task.
   // By default, it would require 29998, 29999, 30000 ports for worker process.
   resources.add(
       Protos.Resource.newBuilder()
           .setName(Constants.MESOS_RESOURCE_PORTS)
           .setType(Protos.Value.Type.RANGES)
           .setRanges(
               Protos.Value.Ranges.newBuilder()
                   .addRange(
                       Protos.Value.Range.newBuilder()
                           .setBegin(Configuration.getLong(PropertyKey.WORKER_RPC_PORT))
                           .setEnd(Configuration.getLong(PropertyKey.WORKER_RPC_PORT)))
                   .addRange(
                       Protos.Value.Range.newBuilder()
                           .setBegin(Configuration.getLong(PropertyKey.WORKER_DATA_PORT))
                           .setEnd(Configuration.getLong(PropertyKey.WORKER_DATA_PORT)))
                   .addRange(
                       (Protos.Value.Range.newBuilder()
                           .setBegin(Configuration.getLong(PropertyKey.WORKER_WEB_PORT))
                           .setEnd(Configuration.getLong(PropertyKey.WORKER_WEB_PORT)))))
           .build());
   return resources;
 }
Exemple #2
0
  protected Protos.Resource rangeResource(String name, long begin, long end) {
    // For a given named resource and value,
    // find and return the role that matches the name and exceeds the value.
    // Give preference to reserved offers first (those whose roles do not match "*")
    List<Protos.Resource> reservedResources = new LinkedList<>();
    for (Protos.Resource resource : offer.getResourcesList()) {
      if (resource.hasRole() && !resource.getRole().equals("*")) {
        reservedResources.add(resource);
      }
    }

    String role = "*";
    for (Protos.Resource resource : reservedResources) {
      if (resource.getName() == name) {
        Protos.Value.Ranges ranges = resource.getRanges();
        for (Protos.Value.Range range : ranges.getRangeList()) {
          if (range.getBegin() <= begin && range.getEnd() >= end) {
            role = resource.getRole();
            break;
          }
        }
      }
    }

    return Protos.Resource.newBuilder()
        .setType(Protos.Value.Type.RANGES)
        .setName(name)
        .setRanges(
            Protos.Value.Ranges.newBuilder()
                .addRange(Protos.Value.Range.newBuilder().setBegin(begin).setEnd(end))
                .build())
        .setRole(role)
        .build();
  }
 public static Protos.Resource portRange(long beginPort, long endPort) {
   Protos.Value.Range singlePortRange =
       Protos.Value.Range.newBuilder().setBegin(beginPort).setEnd(endPort).build();
   return Protos.Resource.newBuilder()
       .setName("ports")
       .setType(Protos.Value.Type.RANGES)
       .setRanges(Protos.Value.Ranges.newBuilder().addRange(singlePortRange))
       .build();
 }