@InterfaceAudience.Public @InterfaceStability.Stable public abstract class Resource extends Object implements Comparable<Resource>
Resource
models a set of computer resources in the
cluster.
Currently it models both memory and CPU.
The unit for memory is megabytes. CPU is modeled with virtual cores (vcores), a unit for expressing parallelism. A node's capacity should be configured with virtual cores equal to its number of physical cores. A container should be requested with the number of cores it can saturate, i.e. the average number of threads it expects to have runnable at a time.
Virtual cores take integer values and thus currently CPU-scheduling is very coarse. A complementary axis for CPU requests that represents processing power will likely be added in the future to enable finer-grained resource configuration.
Typically, applications request Resource
of suitable
capability to run their component tasks.
Modifier and Type | Field and Description |
---|---|
protected static int |
NUM_MANDATORY_RESOURCES |
protected org.apache.hadoop.yarn.api.records.ResourceInformation[] |
resources |
Constructor and Description |
---|
Resource() |
Modifier and Type | Method and Description |
---|---|
protected static int |
castToIntSafely(long value)
Convert long to int for a resource value safely.
|
int |
compareTo(Resource other) |
boolean |
equals(Object obj) |
abstract int |
getMemory()
Deprecated.
|
long |
getMemorySize()
Get memory of the resource.
|
org.apache.hadoop.yarn.api.records.ResourceInformation |
getResourceInformation(String resource)
Get ResourceInformation for a specified resource.
|
long |
getResourceValue(String resource)
Get the value for a specified resource.
|
abstract int |
getVirtualCores()
Get number of virtual cpu cores of the resource.
|
int |
hashCode() |
protected static org.apache.hadoop.yarn.api.records.ResourceInformation |
newDefaultInformation(String name,
String unit,
long value)
Create ResourceInformation with basic fields.
|
static Resource |
newInstance(int memory,
int vCores) |
static Resource |
newInstance(long memory,
int vCores) |
static Resource |
newInstance(long memory,
int vCores,
Map<String,Long> others)
Create a new
Resource instance with the given CPU and memory
values and additional resource values as set in the others
parameter. |
abstract void |
setMemory(int memory)
Deprecated.
|
void |
setMemorySize(long memory)
Set memory of the resource.
|
void |
setResourceInformation(String resource,
org.apache.hadoop.yarn.api.records.ResourceInformation resourceInformation)
Set the ResourceInformation object for a particular resource.
|
void |
setResourceValue(String resource,
long value)
Set the value of a resource in the ResourceInformation object.
|
abstract void |
setVirtualCores(int vCores)
Set number of virtual cpu cores of the resource.
|
protected void |
throwExceptionWhenArrayOutOfBound(int index) |
String |
toString() |
protected org.apache.hadoop.yarn.api.records.ResourceInformation[] resources
protected static final int NUM_MANDATORY_RESOURCES
@InterfaceAudience.Public @InterfaceStability.Stable public static Resource newInstance(int memory, int vCores)
@InterfaceAudience.Public @InterfaceStability.Stable public static Resource newInstance(long memory, int vCores)
@InterfaceAudience.Public @InterfaceStability.Stable public static Resource newInstance(long memory, int vCores, Map<String,Long> others)
Resource
instance with the given CPU and memory
values and additional resource values as set in the others
parameter. Note that the CPU and memory settings in the others
parameter will be ignored.memory
- the memory valuevCores
- the CPU valueothers
- a map of other resource values indexed by resource nameResource
instance with the given resource values@InterfaceAudience.Public @Deprecated public abstract int getMemory()
getMemorySize()
instead
Get memory of the resource. Note - while memory has
never had a unit specified, all YARN configurations have specified memory
in MB. The assumption has been that the daemons and applications are always
using the same units. With the introduction of the ResourceInformation
class we have support for units - so this function will continue to return
memory but in the units of MB@InterfaceAudience.Public @InterfaceStability.Stable public long getMemorySize()
@InterfaceAudience.Public @Deprecated public abstract void setMemory(int memory)
memory
- memory(in MB) of the resource@InterfaceAudience.Public @InterfaceStability.Stable public void setMemorySize(long memory)
memory
- memory of the resource@InterfaceAudience.Public @InterfaceStability.Evolving public abstract int getVirtualCores()
@InterfaceAudience.Public @InterfaceStability.Evolving public abstract void setVirtualCores(int vCores)
vCores
- number of virtual cpu cores of the resource@InterfaceAudience.Public @InterfaceStability.Unstable public org.apache.hadoop.yarn.api.records.ResourceInformation getResourceInformation(String resource) throws ResourceNotFoundException
resource
- name of the resourceResourceNotFoundException
- if the resource can't be found@InterfaceAudience.Public @InterfaceStability.Unstable public long getResourceValue(String resource) throws ResourceNotFoundException
resource
- name of the resourceResourceNotFoundException
- if the resource can't be found@InterfaceAudience.Public @InterfaceStability.Unstable public void setResourceInformation(String resource, org.apache.hadoop.yarn.api.records.ResourceInformation resourceInformation) throws ResourceNotFoundException
resource
- the resource for which the ResourceInformation is providedresourceInformation
- ResourceInformation objectResourceNotFoundException
- if the resource is not found@InterfaceAudience.Public @InterfaceStability.Unstable public void setResourceValue(String resource, long value) throws ResourceNotFoundException
resource
- the resource for which the value is provided.value
- the value to setResourceNotFoundException
- if the resource is not foundprotected void throwExceptionWhenArrayOutOfBound(int index)
public int compareTo(Resource other)
compareTo
in interface Comparable<Resource>
protected static int castToIntSafely(long value)
value
- long resource valueprotected static org.apache.hadoop.yarn.api.records.ResourceInformation newDefaultInformation(String name, String unit, long value)
name
- Resource Type Nameunit
- Default unit of provided resource typevalue
- Value associated with giveb resourceCopyright © 2019 Apache Software Foundation. All rights reserved.