Reduce RPC packet size for homogeneous arrays, such as the array responses to
listStatus() and getBlockLocations()
------------------------------------------------------------------------------------------------------------------
Key: HADOOP-7158
URL: https://issues.apache.org/jira/browse/HADOOP-7158
Project: Hadoop Common
Issue Type: Improvement
Components: io
Affects Versions: 0.22.0
Reporter: Matt Foley
Assignee: Matt Foley
While commenting on HADOOP-6949, which proposes a big improvement in the RPC
wire format for arrays of primitives, Konstantin Shvachko said:
"Can/should we extend this to arrays of non-primitive types? This should
benefit return types for calls like listStatus() and getBlockLocations() on a
large directory."
The improvement for primitive arrays is based on not type-labeling every
element in the array, so the array in question must be strictly homogenous; it
cannot have subtypes of the assignable type. For instance, it could not be
applied to heartbeat responses of DatanodeCommand[], whose array elements carry
subtypes of DatanodeCommand, each of which must be type-labeled independently.
However, as Konstantin points out, it could really help lengthy response arrays
for things like listStatus() and getBlockLocations().
I will attach a prototype implementation to this Jira, for discussion.
However, since it can't be automatically applied to all arrays passing through
RPC, I'll just providing the wrapper type. By using it, a caller is asserting
that the array is strictly homogeneous in the above sense.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira