Get desktop application:
View/edit binary Protocol Buffers messages
* Protocol used from client to the Datanode. See the request and response for details of rpc call.
* Delete the block pool from the datanode.
* blockPool - block pool to be deleted force - if false, delete the block pool only if it is empty. if true, delete the block pool even if it has blocks.
* void response
(message has no fields)
* Retrieves the path names of the block file and metadata file stored on the local file system.
* Gets the file information where block and its metadata is stored block - block for which path information is being requested token - block token This message is deprecated in favor of file descriptor passing.
* block - block for which file path information is being returned localPath - file path where the block data is stored localMetaPath - file path where the block meta data is stored This message is deprecated in favor of file descriptor passing.
* Retrieve additional HDFS-specific metadata about a set of blocks stored on the local file system.
* blocks - list of ExtendedBlocks on which we are querying additional info tokens - list of access tokens corresponding to list of ExtendedBlocks
* volumeIds - id of each volume, potentially multiple bytes volumeIndexes - for each block, an index into volumeIds specifying the volume on which it is located. If block is not present on any volume, index is set to MAX_INT.
* Returns the visible length of the replica
* block - block for which visible length is requested
* length - visible length of the block
* Refresh the list of federated namenodes from updated configuration. Adds new namenodes and stops the deleted namenodes.
* void request
(message has no fields)
* void response
(message has no fields)
void response
(message has no fields)
default as a bogus id
the set of datanodes to use for the block
bits set using CacheFlag
void response
(message has no fields)
(message has no fields)
bits set using CreateFlag
void response
(message has no fields)
default to GRANDFATHER_INODE_ID
void response
(message has no fields)
bits set using CreateFlag
Short: Only 16 bits used
void response
(message has no fields)
void response
(message has no fields)
(message has no fields)
no parameters
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
file name
range start offset
range length
no parameters
(message has no fields)
no input paramters
(message has no fields)
void response
(message has no fields)
No parameters
(message has no fields)
no input parameters
(message has no fields)
void response
(message has no fields)
bits set using CacheFlag
(message has no fields)
void response
(message has no fields)
no parameters
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
no parameters
(message has no fields)
response
no parameters
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
void response
(message has no fields)
Short: Only 16 bits used
void response
(message has no fields)
void response
(message has no fields)
Used in: , , , ,
* Block access token information
Used in:
Key identifier
Expiry time in milliseconds
Key secret
* explanatory text which may be useful to log on the client side
* If the server chooses to agree to the request of a client for short-circuit access, it will send a response message with the relevant file descriptors attached. In the body of the message, this version number will be set to the specific version number of the block data that the client is about to read.
* Block information
Used in:
* Block and datanodes where is it located
Used in:
Block
Datanodes with replicas of the block
Storages with replicas of the block
* List of block with locations
Used in:
Used in:
Used in: , , ,
Used in:
Ignore pool resource limits
Used in:
Used in: , ,
Used in:
Used in: ,
* Command returned from primary to checkpointing namenode. This command has checkpoint signature that identifies checkpoint transaction and is needed for further communication related to checkpointing.
Used in:
Unique signature to identify checkpoint transation
If true, return transfer image to primary upon the completion of checkpoint
* Unique signature to identify checkpoint transactions.
Used in:
Used in: ,
* Checksum algorithms/types used in HDFS Make sure this enum's integer values match enum values' id properties defined in org.apache.hadoop.util.DataChecksum.Type
Used in: , ,
Used in: , ,
* Message sent from the client to the DN after reading the entire read request.
* Summary of a file or directory
Used in:
* Contains a list of paths corresponding to corrupt files and a cookie used for iterative calls to NameNode.listCorruptFileBlocks.
Used in:
Create a file
Truncate/overwrite a file. Same as POSIX O_TRUNC
Append to a file
Used in:
Used in:
* Identifies a Datanode
Used in: ,
IP address
hostname
UUID assigned to the Datanode. For
upgraded clusters this is the same as the original StorageID of the Datanode.
data streaming port
datanode http port
ipc server port
datanode https port
* The status of a Datanode
Used in: , , , , , , ,
Used in:
* DatanodeInfo array
type of the datanode report
Used in:
* Directory listing
Used in:
* ECSchema options entry
Used in:
* ECSchema for erasurecoding
Used in:
Used in: , ,
Actually a byte - only 8 bits used
* EC policy state.
Used in:
* Current key and set of block keys at the namenode.
* Extended block idenfies a block
Used in: , , , , , , , , , , ,
Block pool id - gloablly unique across clusters
the local id within a pool
len does not belong in ebid
* File or Directory permision - same spec as posix
Used in: , , , , ,
Actually a short - only 16bits used
* HDFS Server Defaults
Used in:
Actually a short - only 16 bits used
* Status of a file, directory or symlink Optionally includes a file's block locations if requested by client on the rpc call.
Used in: , , , , ,
local name of inode encoded java UTF8
Optional fields for symlink
if symlink, target encoded java UTF8
Optional fields for file
only 16bits used
suppled only if asked by client
Optional field for fileId
default as an invalid id
Optional field for erasure coding
Used in:
* The connection context is sent as part of the connection establishment. It establishes the context for ALL Rpc calls within the connection.
UserInfo beyond what is determined as part of security handshake at connection time (kerberos, tokens etc).
Protocol name for next rpc layer. The client created a proxy with this protocol name
* A LocatedBlock gives information about a block and its location.
Used in: , , , , , ,
offset of first byte of block in the file
Locations ordered by proximity to client ip
true if all replicas of a block are corrupt, else false
if a location in locs is cached
striped block related fields
used for striped block to indicate block index for each storage
each internal block has a block token
* A set of file blocks and their locations.
Used in: ,
Optional field for erasure coding
* Command sent from one namenode to another namenode.
Used in:
Base command
Check point command
* Information sent by a namenode to identify itself to the primary namenode.
host:port of the namenode RPC address
host:port of the namenode http server
Node information
Namenode role
Used in:
* Namespace information that describes namespace on a namenode
Used in:
Software revision version (e.g. an svn or git revision)
Retained for backward compatibility
block pool used by the namespace
Node information
Software version number (e.g. 2.0.0)
Used in:
* In order to get short-circuit access to block data, clients must set this to the highest version of the block data that they can understand. Currently 1 is the only version, but more versions may exist in the future if the on-disk format changes.
* The requested checksum mechanism for this block write.
Used in:
pipeline set up for failed PIPELINE_SETUP_APPEND recovery
data streaming
pipeline setup for failed data streaming recovery
close the block and pipeline
Recover a failed PIPELINE_CLOSE
pipeline set up for block creation
transfer RBW for adding datanodes
transfer Finalized for adding datanodes
All fields must be fixed-length!
* Sent as part of the BlockOpResponseProto for READ_BLOCK and COPY_BLOCK operations.
Used in:
* The offset into the block at which the first packet will start. This is necessary since reads will align backwards to a checksum chunk boundary.
* Block that needs to be recovered with at a given location
New genstamp post recovery
Block to be recovered
* Enumeration of editlogs available on a remote namenode
* Editlog information with available transactions
Used in:
Starting available edit log transaction
Ending available edit log transaction
* State of a block replica at a datanode
State of a replica when it is not modified
State of replica that is being written to
State of replica that is waiting to be recovered
State of replica that is under recovery
State of replica that is created for replication
* This message is the header for the Protobuf Rpc Engine when sending a RPC request from RPC client to the RPC server. The actual request (serialized as protobuf) follows this request. No special header is needed for the Rpc Response for Protobuf Rpc Engine. The normal RPC response header (see RpcHeader.proto) are sufficient.
* Name of the RPC method
* RPCs for a particular interface (ie protocol) are done using a IPC connection that is setup using rpcProxy. The rpcProxy's has a declared protocol name that is sent form client to server at connection time. Each Rpc call also sends a protocol name (called declaringClassprotocolName). This name is usually the same as the connection protocol name except in some cases. For example metaProtocols such ProtocolInfoProto which get metainfo about the protocol reuse the connection but need to indicate that the actual protocol is different (i.e. the protocol is ProtocolInfoProto) since they reuse the connection; in this case the declaringClassProtocolName field is set to the ProtocolInfoProto
* protocol version of class declaring the called method
* RpcKind determine the rpcEngine and the serialization of the rpc request
Used in:
Used for built in calls by tests
Use WritableRpcEngine
Use ProtobufRpcEngine
the header for the RpcRequest
a sequence number that is sent back in response
Globally unique client ID
clientId + callId uniquely identifies a request retry count, 1 means this is the first retry
Used in:
The final RPC Packet
not implemented yet
close the rpc connection
* Rpc Response Header +------------------------------------------------------------------+ | Rpc total response length in bytes (4 bytes int) | | (sum of next two parts) | +------------------------------------------------------------------+ | RpcResponseHeaderProto - serialized delimited ie has len | +------------------------------------------------------------------+ | if request is successful: | | - RpcResponse - The actual rpc response bytes follow | | the response header | | This response is serialized based on RpcKindProto | | if request fails : | | The rpc response header contains the necessary info | +------------------------------------------------------------------+ Note that rpc response header is also used when connection setup fails. Ie the response looks like a rpc response with a fake callId.
* RpcStastus - success or failure The reponseHeader's errDetail, exceptionClassName and errMsg contains further details on the error
callId used in Request
Sent if success or fail
if request fails
if request fails, often contains strack trace
in case of error
Globally unique client ID
Used in:
Non-fatal Rpc error - connection left open for future rpc calls
RPC Failed - rpc app threw exception
Rpc error - no such method
Rpc error - no such protocol
Rpc error on server side
error serializign response
Rpc protocol version mismatch
Fatal Server side Rpc error - connection closed
unknown Fatal error
IPC layer serilization type invalid
fields of RpcHeader are invalid
could not deserilize rpc request
Ipc Layer version mismatch
Auth failed
Used in:
RPC succeeded
RPC or error - connection left open for future calls
Fatal error - connection closed
Used in:
Used in:
Used in:
* Snapshot diff report entry
Used in:
* Snapshot diff report
Used in:
full path of the directory where snapshots were taken
* Information related to a snapshot TODO: add more information
TODO: do we need access time?
* Snapshottable directory listing
Used in:
* Status of a snapshottable directory: besides the normal information for a directory status, also include snapshot quota, number of snapshots, and the full path of the parent directory.
Used in:
Fields specific for snapshottable directory
Used in: , , ,
Quick restart
Reserved
Reserved
Reserved
* Common node information shared by all the nodes in the cluster
Used in: , ,
Layout version of the file system
File system namespace ID
ID of the cluster
File system creation time
* Types of recognized storage media.
Used in:
* A list of storage IDs.
* Security token identifier
Used in: , , , , , ,
* Spec for UserInformationProto is specified in ProtoUtil#makeIpcConnectionContext
Used in:
* void request
(message has no fields)
* Version response from namenode.