Class RasNode

    • Constructor Detail

      • RasNode

        public RasNode​(String nodeId,
                       SupervisorDetails sup,
                       Cluster cluster,
                       Map<String,​WorkerSlot> workerIdToWorker,
                       Map<String,​Map<String,​Collection<ExecutorDetails>>> assignmentMap)
        Create a new node.
        Parameters:
        nodeId - the id of the node.
        sup - the supervisor this is for.
        cluster - the cluster this is a part of.
        workerIdToWorker - the mapping of slots already assigned to this node.
        assignmentMap - the mapping of executors already assigned to this node.
    • Method Detail

      • getId

        public String getId()
      • getHostname

        public String getHostname()
      • getFreeSlotsId

        public Collection<String> getFreeSlotsId()
        Get the IDs of all free slots on this node.
        Returns:
        the ids of the free slots.
      • getUsedSlots

        public Collection<WorkerSlot> getUsedSlots​(String topId)
        Get slots used by the given topology.
        Parameters:
        topId - the id of the topology to get.
        Returns:
        the slots currently assigned to that topology on this node.
      • isAlive

        public boolean isAlive()
      • getRunningTopologies

        public Collection<String> getRunningTopologies()
        Get a collection of the topology ids currently running on this node.
      • isTotallyFree

        public boolean isTotallyFree()
      • totalSlotsFree

        public int totalSlotsFree()
      • totalSlotsUsed

        public int totalSlotsUsed()
      • totalSlotsUsed

        public int totalSlotsUsed​(String topId)
      • totalSlots

        public int totalSlots()
      • freeAllSlots

        public void freeAllSlots()
        Free all slots on this node. This will update the Cluster too.
      • freeSingleExecutor

        public void freeSingleExecutor​(ExecutorDetails exec,
                                       TopologyDetails topo)
        frees a single executor.
        Parameters:
        exec - is the executor to free
        topo - the topology the executor is a part of
      • free

        public void free​(WorkerSlot ws)
        Frees a single slot in this node.
        Parameters:
        ws - the slot to free
      • assign

        public void assign​(WorkerSlot target,
                           TopologyDetails td,
                           Collection<ExecutorDetails> executors)
        Assigns a worker to a node.
        Parameters:
        target - the worker slot to assign the executors
        td - the topology the executors are from
        executors - executors to assign to the specified worker slot
      • assignSingleExecutor

        public void assignSingleExecutor​(WorkerSlot ws,
                                         ExecutorDetails exec,
                                         TopologyDetails td)
        Assign a single executor to a slot, even if other things are in the slot.
        Parameters:
        ws - the slot to assign it to.
        exec - the executor to assign.
        td - the topology for the executor.
      • wouldFit

        public boolean wouldFit​(WorkerSlot ws,
                                ExecutorDetails exec,
                                TopologyDetails td)
        Would scheduling exec in ws fit with the current resource constraints.
        Parameters:
        ws - the slot to possibly put exec in
        exec - the executor to possibly place in ws
        td - the topology exec is a part of
        Returns:
        true if it would fit else false
      • couldEverFit

        public boolean couldEverFit​(ExecutorDetails exec,
                                    TopologyDetails td)
        Is there any possibility that exec could ever fit on this node.
        Parameters:
        exec - the executor to schedule
        td - the topology the executor is a part of
        Returns:
        true if there is the possibility it might fit, no guarantee that it will, or false if there is no way it would ever fit.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • getAvailableMemoryResources

        public double getAvailableMemoryResources()
        Gets the available memory resources for this node.
        Returns:
        the available memory for this node
      • getTotalAvailableResources

        public NormalizedResourceOffer getTotalAvailableResources()
        Gets all available resources for this node.
        Returns:
        All of the available resources.
      • getTotalMemoryResources

        public double getTotalMemoryResources()
        Gets the total memory resources for this node.
        Returns:
        the total memory for this node
      • getAvailableCpuResources

        public double getAvailableCpuResources()
        Gets the available cpu resources for this node.
        Returns:
        the available cpu for this node
      • getTotalCpuResources

        public double getTotalCpuResources()
        Gets the total cpu resources for this node.
        Returns:
        the total cpu for this node