log4j.logger.org.apache.spark.storage.BlockManagerMasterEndpoint=INFO
BlockManagerMasterEndpoint — BlockManagerMaster RPC Endpoint
BlockManagerMasterEndpoint
is the RpcEndpoint for BlockManagerMaster to track status of the BlockManagers on the executors for a Spark application.
Note
|
It is used to register the BlockManagerMaster RPC endpoint when creating SparkEnv.
|
Name | Description |
---|---|
Collection of Used in |
Tip
|
Enable Add the following line to Refer to Logging. |
Removing Shuffle Blocks — removeShuffle
Internal Method
Caution
|
FIXME |
UpdateBlockInfo
class UpdateBlockInfo(
var blockManagerId: BlockManagerId,
var blockId: BlockId,
var storageLevel: StorageLevel,
var memSize: Long,
var diskSize: Long)
Caution
|
FIXME |
RemoveExecutor
RemoveExecutor(execId: String)
When RemoveExecutor
is received, executor execId
is removed and the response true
sent back.
Note
|
RemoveExecutor is posted when BlockManagerMaster removes an executor.
|
BlockManagerHeartbeat
Caution
|
FIXME |
GetLocations
GetLocations(blockId: BlockId)
When GetLocations
comes in, the internal getLocations method is executed and the result becomes the response sent back.
Note
|
GetLocations is used to get the block locations of a single block.
|
RegisterBlockManager Event
RegisterBlockManager(
blockManagerId: BlockManagerId,
maxMemSize: Long,
sender: RpcEndpointRef)
When RegisterBlockManager
is received, the internal register method is executed.
Note
|
RegisterBlockManager is posted when BlockManagerMaster registers a BlockManager .
|
register
Method
register(id: BlockManagerId, maxMemSize: Long, slaveEndpoint: RpcEndpointRef): Unit
register
records the current time and registers BlockManager
by id
if it has not been already registered (using the internal blockManagerInfo
registry).
Note
|
register is executed when RegisterBlockManager has been received.
|
Registering a BlockManager
can only happen once for an executor (identified by BlockManagerId.executorId
using the internal blockManagerIdByExecutor
registry).
If another BlockManager
has earlier been registered for the executor, you should see the following ERROR message in the logs:
ERROR Got two different block manager registrations on same executor - will replace old one [oldId] with new one [id]
And then executor is removed.
You should see the following INFO message in the logs:
INFO Registering block manager [hostPort] with [bytes] RAM, [id]
The BlockManager
is recorded in the internal registries: blockManagerIdByExecutor
and blockManagerInfo
.
Caution
|
FIXME Why does blockManagerInfo require a new System.currentTimeMillis() since time was already recorded?
|
In either case, SparkListenerBlockManagerAdded is posted (to listenerBus).
Note
|
The method can only be executed on the driver where listenerBus is available.
|
Caution
|
FIXME Describe listenerBus + omnigraffle it.
|
Other RPC Messages
-
GetLocationsMultipleBlockIds
-
GetPeers
-
GetRpcHostPortForExecutor
-
GetMemoryStatus
-
GetStorageStatus
-
GetBlockStatus
-
GetMatchingBlockIds
-
RemoveRdd
-
RemoveShuffle
-
RemoveBroadcast
-
RemoveBlock
-
StopBlockManagerMaster
-
BlockManagerHeartbeat
-
HasCachedBlocks
Removing Executor — removeExecutor
Method
removeExecutor(execId: String)
removeExecutor
prints the following INFO message to the logs:
INFO BlockManagerMasterEndpoint: Trying to remove executor [execId] from BlockManagerMaster.
If the execId
executor is found in the internal blockManagerIdByExecutor
registry, the BlockManager
for the executor is removed.
Note
|
removeExecutor is executed when BlockManagerMasterEndpoint receives a RemoveExecutor or registers a new BlockManager (and another BlockManager was already registered that is replaced by the new one).
|
Removing BlockManager — removeBlockManager
Method
removeBlockManager(blockManagerId: BlockManagerId)
removeBlockManager
looks up blockManagerId
and removes the executor it was working on from the internal blockManagerIdByExecutor
as well as from blockManagerInfo
.
Note
|
removeBlockManager is a private helper method that is exclusively used while removing an executor.
|
It then goes over all the blocks for the BlockManager
, and removes the executor for each block from blockLocations
registry.
SparkListenerBlockManagerRemoved(System.currentTimeMillis(), blockManagerId) is posted to listenerBus.
You should then see the following INFO message in the logs:
INFO BlockManagerMasterEndpoint: Removing block manager [blockManagerId]