[ 
https://issues.apache.org/jira/browse/HBASE-29482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Junegunn Choi resolved HBASE-29482.
-----------------------------------
    Fix Version/s: 2.7.0
                   3.0.0-beta-2
                   2.6.4
                   2.5.13
       Resolution: Fixed

> Bulkload fails with viewfs authentication error
> -----------------------------------------------
>
>                 Key: HBASE-29482
>                 URL: https://issues.apache.org/jira/browse/HBASE-29482
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Jaehui Lee
>            Assignee: Jaehui Lee
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 2.7.0, 3.0.0-beta-2, 2.6.4, 2.5.13
>
>
> When performing a bulkload operation where the HFiles are located on a remote 
> federated HDFS and accessed via ViewFS paths, authentication error occurs.
> {code:java}
> 2025-07-22T17:38:45,248 WARN  
> [RpcServer.default.FPBQ.Fifo.handler=26,queue=2,port=16020] ipc.Client: 
> Exception encountered while connecting to the server {server}
> org.apache.hadoop.security.AccessControlException: Client cannot authenticate 
> via:[TOKEN, KERBEROS]
>         at 
> org.apache.hadoop.security.SaslRpcClient.selectSaslClient(SaslRpcClient.java:179)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:399) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:578) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.Client$Connection.access$2100(Client.java:364) 
> ~[hadoop-common-3.4.1.jar:?]
>         at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:799) 
> ~[hadoop-common-3.4.1.jar:?]
>         at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:795) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> java.security.AccessController.doPrivileged(AccessController.java:714) ~[?:?]
>         at javax.security.auth.Subject.doAs(Subject.java:525) ~[?:?]
>         at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:795) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:364) 
> ~[hadoop-common-3.4.1.jar:?]
>         at org.apache.hadoop.ipc.Client.getConnection(Client.java:1649) 
> ~[hadoop-common-3.4.1.jar:?]
>         at org.apache.hadoop.ipc.Client.call(Client.java:1473) 
> ~[hadoop-common-3.4.1.jar:?]
>         at org.apache.hadoop.ipc.Client.call(Client.java:1426) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:258)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:139)
>  ~[hadoop-common-3.4.1.jar:?]
>         at jdk.proxy2.$Proxy32.checkAccess(Unknown Source) ~[?:?]
>         at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.lambda$checkAccess$93(ClientNamenodeProtocolTranslatorPB.java:1464)
>  ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> org.apache.hadoop.ipc.internal.ShadedProtobufHelper.ipc(ShadedProtobufHelper.java:160)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.checkAccess(ClientNamenodeProtocolTranslatorPB.java:1464)
>  ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>  ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
>         at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:437)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:170)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:162)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:100)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:366)
>  ~[hadoop-common-3.4.1.jar:?]
>         at jdk.proxy2.$Proxy33.checkAccess(Unknown Source) ~[?:?]
>         at org.apache.hadoop.hdfs.DFSClient.checkAccess(DFSClient.java:2987) 
> ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hdfs.DistributedFileSystem$66.doCall(DistributedFileSystem.java:3247)
>  ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hdfs.DistributedFileSystem$66.doCall(DistributedFileSystem.java:3244)
>  ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hdfs.DistributedFileSystem.access(DistributedFileSystem.java:3257)
>  ~[hadoop-hdfs-client-3.4.1.jar:?]
>         at 
> org.apache.hadoop.fs.FilterFileSystem.access(FilterFileSystem.java:473) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.fs.viewfs.ChRootedFileSystem.access(ChRootedFileSystem.java:256)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.fs.viewfs.ViewFileSystem.access(ViewFileSystem.java:581) 
> ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.assertBulkLoadHFileOk(HStore.java:607)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.bulkLoadHFiles(HRegion.java:6737)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager$1.run(SecureBulkLoadManager.java:288)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager$1.run(SecureBulkLoadManager.java:263)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
>         at javax.security.auth.Subject.doAs(Subject.java:453) ~[?:?]
>         at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1930)
>  ~[hadoop-common-3.4.1.jar:?]
>         at 
> org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager.secureBulkLoadHFiles(SecureBulkLoadManager.java:263)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.bulkLoadHFile(RSRpcServices.java:2443)
>  ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:45008)
>  ~[hbase-protocol-shaded-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:415) 
> ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124) 
> ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102) 
> ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]
>         at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82) 
> ~[hbase-server-2.5.11-hadoop3.jar:2.5.11-hadoop3]  {code}
> This happens because ViewFileSystem cannot generate delegation tokens 
> properly for federated HDFS accessed through ViewFS paths.
> Without the delegation token, authentication fails when [checking READ_WRITE 
> permissions on the path where HFiles are 
> stored|https://github.com/apache/hbase/blob/a699d3032887cec9c39868dd93aa7ba84a9b8e03/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java#L619].
> The simplest solution is to use the resolved HDFS paths instead of ViewFS 
> paths when performing the bulkload.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to