[ 
https://issues.apache.org/jira/browse/HDFS-14017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16678601#comment-16678601
 ] 

Chen Liang edited comment on HDFS-14017 at 11/7/18 6:23 PM:
------------------------------------------------------------

What did you by a non-default FS? I meant the config fs.defaultFS, shouldn't it 
always be there?

I think  {{dfs.namenode.rpc-address.<nnID>}} values are not VIP but actual 
addresses, this was partly the reason I started making change to 
{{ObserverReadProxyProviderWithIPFailover}}. Currently the code only checks  
{{dfs.namenode.rpc-address.}} configs when defaultFS is determined a logic URI, 
which is not the case for IPFailover, changing this seemed to affect many 
places if I remember correctly (at least many tests will fail). In configured 
setup, fs.defaultFS is a nameservice, and code will automatically replace nnID 
as in {{dfs.namenode.rpc-address.<nnID>}} with that fs.defaultFS nameservice 
id. In IPFailover case, fs.defaultFS is not logical so 
{{dfs.namenode.rpc-address.*}} are ignored completely. In our environment, 
there is configured address for nameservice (which are for Datanodes). This is 
where I needed to tie them together. Also, I have been trying to not explicitly 
match URIs because VIP can be anything in theory.


was (Author: vagarychen):
What did you by a non-default FS? I meant the config fs.defaultFS, shouldn't it 
always be there?

I think  {{dfs.namenode.rpc-address.<nnID>}} values are not VIP but actual 
addresses, this was partly the reason I started making change to 
{{ObserverReadProxyProviderWithIPFailover}}. Currently the code only checks  
{{dfs.namenode.rpc-address.*}} configs when defaultFS is determined a logic 
URI, which is not the case for IPFailover, changing this seemed to affect many 
places if I remember correctly (at least many tests will fail). In configured 
setup, fs.defaultFS is a nameservice, and code will automatically replace nnID 
as in {{dfs.namenode.rpc-address.<nnID>}} with that fs.defaultFS nameservice 
id. In IPFailover case, fs.defaultFS is not logical so 
{{dfs.namenode.rpc-address.*}} are ignored completely. In our environment, 
there is configured address for nameservice (which are for Datanodes). This is 
where I needed to tie them together. Also, I have been trying to not explicitly 
match URIs because VIP can be anything in theory.

> ObserverReadProxyProviderWithIPFailover should work with HA configuration
> -------------------------------------------------------------------------
>
>                 Key: HDFS-14017
>                 URL: https://issues.apache.org/jira/browse/HDFS-14017
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Chen Liang
>            Assignee: Chen Liang
>            Priority: Major
>         Attachments: HDFS-14017-HDFS-12943.001.patch, 
> HDFS-14017-HDFS-12943.002.patch, HDFS-14017-HDFS-12943.003.patch, 
> HDFS-14017-HDFS-12943.004.patch, HDFS-14017-HDFS-12943.005.patch
>
>
> Currently {{ObserverReadProxyProviderWithIPFailover}} extends 
> {{ObserverReadProxyProvider}}, and the only difference is changing the proxy 
> factory to use {{IPFailoverProxyProvider}}. However this is not enough 
> because when calling constructor of {{ObserverReadProxyProvider}} in 
> super(...), the follow line:
> {code:java}
> nameNodeProxies = getProxyAddresses(uri,
>         HdfsClientConfigKeys.DFS_NAMENODE_RPC_ADDRESS_KEY);
> {code}
> will try to resolve the all configured NN addresses to do configured 
> failover. But in the case of IPFailover, this does not really apply.
>  
> A second issue closely related is about delegation token. For example, in 
> current IPFailover setup, say we have a virtual host nn.xyz.com, which points 
> to either of two physical nodes nn1.xyz.com or nn2.xyz.com. In current HDFS, 
> there is always only one DT being exchanged, which has hostname nn.xyz.com. 
> Server only issues this DT, and client only knows the host nn.xyz.com, so all 
> is good. But in Observer read, even with IPFailover, the client will no 
> longer contacting nn.xyz.com, but will actively reaching to nn1.xyz.com and 
> nn2.xyz.com. During this process, current code will look for DT associated 
> with hostname nn1.xyz.com or nn2.xyz.com, which is different from the DT 
> given by NN. causing Token authentication to fail. This happens in 
> {{AbstractDelegationTokenSelector#selectToken}}. New IPFailover proxy 
> provider will need to resolve this as well.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to