hadoop/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/StorageContainerLocationProtocol.proto

132 lines
3.7 KiB
Protocol Buffer

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* These .proto interfaces are private and unstable.
* Please see http://wiki.apache.org/hadoop/Compatibility
* for what changes are allowed for a *unstable* .proto interface.
*/
option java_package = "org.apache.hadoop.ozone.protocol.proto";
option java_outer_classname = "StorageContainerLocationProtocolProtos";
option java_generic_services = true;
option java_generate_equals_and_hash = true;
package hadoop.hdfs;
import "hdfs.proto";
import "Ozone.proto";
/**
* keys - batch of object keys to find
*/
message GetStorageContainerLocationsRequestProto {
repeated string keys = 1;
}
/**
* locatedContainers - for each requested hash, nodes that currently host the
* container for that object key hash
*/
message GetStorageContainerLocationsResponseProto {
repeated LocatedContainerProto locatedContainers = 1;
}
/**
* Holds the nodes that currently host the container for an object key.
*/
message LocatedContainerProto {
required string key = 1;
required string matchedKeyPrefix = 2;
required string containerName = 3;
repeated DatanodeInfoProto locations = 4;
required DatanodeInfoProto leader = 5;
}
/**
* Request send to SCM asking where the container should be created.
*/
message ContainerRequestProto {
required string containerName = 1;
// Ozone only support replciation of either 1 or 3.
enum ReplicationFactor {
ONE = 1;
THREE = 3;
}
required ReplicationFactor replicationFactor = 2;
}
/**
* Reply from SCM indicating that the container.
*/
message ContainerResponseProto {
enum Error {
success = 1;
errorContainerAlreadyExists = 2;
errorContainerMissing = 3;
}
required Error errorCode = 1;
required hadoop.hdfs.ozone.Pipeline pipeline = 2;
optional string errorMessage = 3;
}
message GetContainerRequestProto {
required string containerName = 1;
}
message GetContainerResponseProto {
required hadoop.hdfs.ozone.Pipeline pipeline = 1;
}
message DeleteContainerRequestProto {
required string containerName = 1;
}
message DeleteContainerResponseProto {
// Empty response
}
/**
* Protocol used from an HDFS node to StorageContainerManager. See the request
* and response messages for details of the RPC calls.
*/
service StorageContainerLocationProtocolService {
/**
* Find the set of nodes that currently host the container of an object, as
* identified by the object key hash. This method supports batch lookup by
* passing multiple key hashes.
*/
rpc getStorageContainerLocations(GetStorageContainerLocationsRequestProto)
returns(GetStorageContainerLocationsResponseProto);
/**
* Creates a container entry in SCM.
*/
rpc allocateContainer(ContainerRequestProto) returns (ContainerResponseProto);
/**
* Returns the pipeline for a given container.
*/
rpc getContainer(GetContainerRequestProto) returns (GetContainerResponseProto);
/**
* Deletes a container in SCM.
*/
rpc deleteContainer(DeleteContainerRequestProto) returns (DeleteContainerResponseProto);
}