Description
HadoopAccessorService#getMRTokenRenewerInternal handles getting the delegation token for the JT/RM. OOZIE-1159 modified this slightly and it now tries to parse the JT/RM address to get the hostname. However, if you try to use JT HA (which isn't in vanilla Hadoop), it uses a logical name (e.g. "ha-jt-uri") just like we do with HDFS HA. As such, when HadoopAccessorService tries to do
String addr = NetUtils.createSocketAddr(target).getHostName();
it will get an exception:
Caused by: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ha-jt-uri at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:211) at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:163) at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:152) at org.apache.oozie.service.HadoopAccessorService.getMRTokenRenewerInternal(HadoopAccessorService.java:484) at org.apache.oozie.service.HadoopAccessorService.getMRDelegationTokenRenewer(HadoopAccessorService.java:463) at org.apache.oozie.service.HadoopAccessorService.createJobClient(HadoopAccessorService.java:374) at org.apache.oozie.action.hadoop.JavaActionExecutor.createJobClient(JavaActionExecutor.java:991) at org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:743) ... 10 more
because there isn't a host or port in the logical name.
Once RM HA is done (which will be in vanilla Hadoop), it will use a logical name just like JT HA, and will run into the same problem. I think we can fix this by having it fall back to the old behavior when it gets the IllegalArgumentException.
Attachments
Attachments
Issue Links
- depends upon
-
YARN-1232 Configuration to support multiple RMs
- Closed
- relates to
-
OOZIE-1159 Set the RM token renewer as the full service principal instead of short name
- Closed