Thanks everyone for discussing and voting for the issue.
Totally 6 +1s for Approach A (include my own +1).
I would like summary voting solution:

   - Add extra optional field about client hostname in
   RpcHeader#RpcRequestHeaderProto,
   - Router set RpcRequestHeader#clientHostname if necessary,
   - Namenode will get clientHostname when invoke #getRemoteAddress if
   RpcRequestHeader#clientHostname set, otherwise keeps current logic.

I will create new issue to push this feature forward.
Thanks all again.

On Fri, Apr 12, 2019 at 7:31 PM Vinayakumar B <vinayakum...@apache.org>
wrote:

> +1 for approach A.
>
> On Thu, 11 Apr 2019, 12:23 pm Akira Ajisaka, <aajis...@apache.org> wrote:
>
>> The Approach A looks good to me.
>>
>> Thanks,
>> Akira
>>
>> On Thu, Apr 11, 2019 at 2:30 PM Xiaoqiao He <xq.he2...@gmail.com> wrote:
>> >
>> > Hi forks,
>> >
>> > The current implementation of RBF is not sensitive about data locality,
>> > since NameNode could not get real client hostname by invoke
>> > Server#getRemoteAddress when RPC request forward by Router to NameNode.
>> > Therefore, it will lead to several challenges, for instance,
>> >
>> >    - a. Client could have to go for remote read instead of local read,
>> >    Short-Circuit could not be used in most cases.
>> >    - b. Block placement policy could not run as except based on defined
>> >    rack aware. Thus it will loss local node write.
>> >
>> > There are some different solutions to solve data locality issue after
>> > discussion, some of them will change RPC protocol, so we look forward to
>> > furthermore suggestions and votes. HDFS-13248 is tracking the issue.
>> >
>> >    - Approach A: Changing IPC/RPC layer protocol
>> (IpcConnectionContextProto
>> >    or RpcHeader#RpcRequestHeaderProto) and add extra field about client
>> >    hostname. Of course the new field is optional, only input by Router
>> and
>> >    parse by Namenode in generally. This approach is compatibility and
>> Client
>> >    should do nothing after changing.
>> >    - Approach B: Changing ClientProtocol and add extra interface
>> >    create/append/getBlockLocations with additional parameter about
>> client
>> >    hostname. As approach A, it is input by Router and parse by
>> Namenode, and
>> >    also is compatibility.
>> >    - Approach C: Solve write and read locality separately based on
>> current
>> >    interface and no changes, for write, hack client hostname as one of
>> favor
>> >    nodes for addBlocks, for read, reorder targets at Router after
>> Namenode
>> >    returns result to Router.
>> >
>> > As discussion and evaluation in HDFS-13248, we prefer to change IPC/RPC
>> > layer protocol to support RPC data locality. We welcome more
>> suggestions,
>> > votes or just give us feedback to push forward this feature. Thanks.
>> >
>> > Best Regards,
>> > Hexiaoqiao
>> >
>> > reference
>> > [1] https://issues.apache.org/jira/browse/HDFS-13248
>> > [2] https://issues.apache.org/jira/browse/HDFS-10467
>> >
>> > [3] https://issues.apache.org/jira/browse/HDFS-12615
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
>> For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org
>>
>>

Reply via email to