Package org.apache.storm.container
Class DefaultResourceIsolationManager
java.lang.Object
org.apache.storm.container.DefaultResourceIsolationManager
- All Implemented Interfaces:
- ResourceIsolationInterface
- Direct Known Subclasses:
- CgroupManager
This is the default class to manage worker processes, including launching, killing, profiling and etc.
- 
Field SummaryFields
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionbooleanareAllProcessesDead(String user, String workerId) Check if all the processes are dead.voidThis function will be called when the worker needs to shutdown.voidKill the given worker forcefully.getAllPids(String workerId) Get all the pids that are a part of the container.longgetMemoryUsage(String user, String workerId, int port) Get the current memory usage of the a given worker.longGet the amount of free memory in MB.booleanThis class doesn't really manage resources.voidKill the given worker.voidlaunchWorkerProcess(String user, String topologyId, Map<String, Object> topoConf, int port, String workerId, List<String> command, Map<String, String> env, String logPrefix, ExitCodeCallback processExitCallback, File targetDir) After reserving resources for the worker (i.e.voidCalled when starting up.voidreserveResourcesForWorker(String workerId, Integer workerMemory, Integer workerCpu, String numaId) This function should be used prior to starting the worker to reserve resources for the worker.booleanrunProfilingCommand(String user, String workerId, List<String> command, Map<String, String> env, String logPrefix, File targetDir) Run profiling command.
- 
Field Details- 
conf
- 
runAsUserprotected boolean runAsUser
 
- 
- 
Constructor Details- 
DefaultResourceIsolationManagerpublic DefaultResourceIsolationManager()
 
- 
- 
Method Details- 
prepareDescription copied from interface:ResourceIsolationInterfaceCalled when starting up.- Specified by:
- preparein interface- ResourceIsolationInterface
- Parameters:
- conf- the cluster config
- Throws:
- IOException- on any error.
 
- 
reserveResourcesForWorkerpublic void reserveResourcesForWorker(String workerId, Integer workerMemory, Integer workerCpu, String numaId) Description copied from interface:ResourceIsolationInterfaceThis function should be used prior to starting the worker to reserve resources for the worker.- Specified by:
- reserveResourcesForWorkerin interface- ResourceIsolationInterface
- Parameters:
- workerId- worker id of the worker to start
- workerMemory- the amount of memory for the worker or null if not enforced
- workerCpu- the amount of cpu for the worker or null if not enforced
- numaId- NUMA zone if applicable the worker should be bound to
 
- 
cleanupDescription copied from interface:ResourceIsolationInterfaceThis function will be called when the worker needs to shutdown. This function should include logic to clean up after a worker is shutdown.- Specified by:
- cleanupin interface- ResourceIsolationInterface
- Parameters:
- user- the user of the worker
- workerId- worker id to shutdown and clean up after
- port- the port of the worker
- Throws:
- IOException
 
- 
launchWorkerProcesspublic void launchWorkerProcess(String user, String topologyId, Map<String, Object> topoConf, int port, String workerId, List<String> command, Map<String, throws IOExceptionString> env, String logPrefix, ExitCodeCallback processExitCallback, File targetDir) Description copied from interface:ResourceIsolationInterfaceAfter reserving resources for the worker (i.e. calling reserveResourcesForWorker), this function can be used to launch worker process.- Specified by:
- launchWorkerProcessin interface- ResourceIsolationInterface
- Parameters:
- user- the user who runs the command as
- topologyId- the Id of the topology
- topoConf- the topology configuration
- port- the port where the worker is on
- workerId- the Id of the worker
- command- the command to run
- env- the environment to run the command
- logPrefix- the prefix to include in the logs
- processExitCallback- a callback for when the process exits
- targetDir- the working directory to run the command in
- Throws:
- IOException- on I/O exception
 
- 
getMemoryUsageDescription copied from interface:ResourceIsolationInterfaceGet the current memory usage of the a given worker.- Specified by:
- getMemoryUsagein interface- ResourceIsolationInterface
- Parameters:
- user- the user that the worker is running as
- workerId- the id of the worker
- port- the port of the worker
- Returns:
- the amount of memory the worker is using in bytes or -1 if not supported
- Throws:
- IOException- on I/O exception
 
- 
getSystemFreeMemoryMbDescription copied from interface:ResourceIsolationInterfaceGet the amount of free memory in MB. This might not be the entire box, it might be within a parent resource group.- Specified by:
- getSystemFreeMemoryMbin interface- ResourceIsolationInterface
- Returns:
- The amount of memory in MB that are free on the system.
- Throws:
- IOException- on I/O exception
 
- 
killDescription copied from interface:ResourceIsolationInterfaceKill the given worker.- Specified by:
- killin interface- ResourceIsolationInterface
- Parameters:
- user- the user that the worker is running as
- workerId- the id of the worker to kill
- Throws:
- IOException- on I/O exception
 
- 
forceKillDescription copied from interface:ResourceIsolationInterfaceKill the given worker forcefully.- Specified by:
- forceKillin interface- ResourceIsolationInterface
- Parameters:
- user- the user that the worker is running as
- workerId- the id of the worker to kill
- Throws:
- IOException- on I/O exception
 
- 
getAllPidsGet all the pids that are a part of the container.- Returns:
- all of the pids that are a part of this container
- Throws:
- IOException
 
- 
areAllProcessesDeadDescription copied from interface:ResourceIsolationInterfaceCheck if all the processes are dead.- Specified by:
- areAllProcessesDeadin interface- ResourceIsolationInterface
- Parameters:
- user- the user that the processes are running as
- workerId- the id of the worker to kill
- Returns:
- true if all the processed are dead; false otherwise
- Throws:
- IOException- on I/O exception
 
- 
runProfilingCommandpublic boolean runProfilingCommand(String user, String workerId, List<String> command, Map<String, String> env, String logPrefix, File targetDir) throws IOException, InterruptedExceptionDescription copied from interface:ResourceIsolationInterfaceRun profiling command.- Specified by:
- runProfilingCommandin interface- ResourceIsolationInterface
- Parameters:
- user- the user that the worker is running as
- workerId- the id of the worker
- command- the command to run
- env- the environment to run the command
- logPrefix- the prefix to include in the logs
- targetDir- the working directory to run the command in
- Returns:
- true if succeeds; false otherwise
- Throws:
- IOException- on I/O exception
- InterruptedException- if interrupted
 
- 
isResourceManagedpublic boolean isResourceManaged()This class doesn't really manage resources.- Specified by:
- isResourceManagedin interface- ResourceIsolationInterface
- Returns:
- false
 
 
-