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

Kyoung-Rok Jang commented on ARROW-18104:
-----------------------------------------

I solved the issue by setting `$LIBHDFS_OPTS`.

ref: https://github.com/apache/arrow/issues/6880

> Can't connect to HDFS in tmux (kerberos)?
> -----------------------------------------
>
>                 Key: ARROW-18104
>                 URL: https://issues.apache.org/jira/browse/ARROW-18104
>             Project: Apache Arrow
>          Issue Type: Bug
>    Affects Versions: 9.0.0
>            Reporter: Kyoung-Rok Jang
>            Priority: Major
>
> Hello. I'm trying to load `.parquet` files from HDFS path using 
> `pyarrow.fs.HadoopFileSystem`. I'm working in my company's cluster which 
> relies on kerberos. In the main shell the following code works. But strangely 
> the code doesn't work in `tmux` session. I do `kinit` before running this 
> code. One more strange thing is I can perform hdfs commands in tmux without 
> any problem e.g. `hdfs dfs -ls`. What would be the cause? Thanks.
>  
> {code:java}
> // the code that runs in a main shell, but doesn't run in tmux
> from pyarrow import fs
>  
> hdfs = fs.HadoopFileSystem("default", port=0) # so far works in both in the 
> main shell and tmux
> hdfs.create_dir("created_by_pyarrow") # works in the main shell, doesn't work 
> in tmux {code}
>  
> The error I see is as follows:
> {code:java}
> // error
>  2022-10-19 00:06:45,704 WARN ipc.Client: Exception encountered while 
> connecting to the server : javax.security.sasl.SaslException: GSS initiate 
> failed [Caused by GSSException: No valid credentials provided (Mechanism 
> level: Fail to create credential. (63) - No service creds)] 
> hdfsGetPathInfo(created_by_pyarrow): getFileInfo error: KrbApErrException: 
> Fail to create credential. (63) - No service credsjava.io.IOException: 
> DestHost:destPort server_1:9020 , LocalHost:localPort 
> [my_server]/10.168.26.12:0. Failed on local exception: java.io.IOException: 
> javax$ security.sasl.SaslException: GSS initiate failed [Caused by 
> GSSException: No valid credentials provided (Mechanism level: Fail to create 
> credential. (63) - No service creds)] at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>  at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at 
> org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:831) at 
> org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:806) at 
> org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1515) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1457) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1367) at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:228)
>  at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:116)
>  at com.sun.proxy.$Proxy9.getFileInfo(Unknown Source) at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:900)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498) at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359)
>  at com.sun.proxy.$Proxy10.getFileInfo(Unknown Source) at 
> org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1660) at 
> org.apache.hadoop.hdfs.DistributedFileSystem$29.doCall(DistributedFileSystem.java:1583)
>  at 
> org.apache.hadoop.hdfs.DistributedFileSystem$29.doCall(DistributedFileSystem.java:1580)
>  at 
> org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
>  at 
> org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1595)
>  at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1683) Caused by: 
> java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed 
> [Caused by GSSException: No valid credentials provided (Mechanism level: Fail 
> to create credential. (63) - No service creds)] at 
> org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:760) at 
> java.security.AccessController.doPrivileged(Native Method) at 
> javax.security.auth.Subject.doAs(Subject.java:422) at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
>  at 
> org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:723)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:817) 
> at org.apache.hadoop.ipc.Client$Connection.access$3700(Client.java:411) at 
> org.apache.hadoop.ipc.Client.getConnection(Client.java:1572) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1403) ... 21 more Caused by: 
> javax.security.sasl.SaslException: GSS initiate failed [Caused by 
> GSSException: No valid credentials provided (Mechanism level: Fail to create 
> credential. (63) - No service creds)] at 
> com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:211)
>  at 
> org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:408) 
> at 
> org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:617) 
> at org.apache.hadoop.ipc.Client$Connection.access$2300(Client.java:411) at 
> org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:804) at 
> org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:800) at 
> java.security.AccessController.doPrivileged(Native Method) at 
> javax.security.auth.Subject.doAs(Subject.java:422) at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:800) 
> ... 24 more Caused by: GSSException: No valid credentials provided (Mechanism 
> level: Fail to create credential. (63) - No service creds) at 
> sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:770) at 
> sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248) at 
> sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179) at 
> com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:192)
>  ... 33 more Caused by: KrbException: Fail to create credential. (63) - No 
> service creds at 
> sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:162)
>  at sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:458) 
> at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:693) 
> ... 36 more 2022-10-19 00:06:45,710 WARN ipc.Client: Exception encountered 
> while connecting to the server : javax.security.sasl.SaslException: GSS 
> initiate failed [Caused by GSSException: No valid credentials provided 
> (Mechanism level: Fail to create creden tial. (63) - No service creds)] 
> hdfsCreateDirectory(created_by_pyarrow): FileSystem#mkdirs error: 
> KrbApErrException: Fail to create credential. (63) - No service 
> credsjava.io.IOException: DestHost:destPort server_1:9020 , 
> LocalHost:localPort [my_server]/10.168.26.12:0. Failed on local exception: 
> java.io.IOException: javax. security.sasl.SaslException: GSS initiate failed 
> [Caused by GSSException: No valid credentials provided (Mechanism level: Fail 
> to create credential. (63) - No service creds)] at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>  at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at 
> org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:831) at 
> org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:806) at 
> org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1515) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1457) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1367) at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:228)
>  at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:116)
>  at com.sun.proxy.$Proxy9.mkdirs(Unknown Source) at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.mkdirs(ClientNamenodeProtocolTranslatorPB.java:653)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498) at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95)
>  at 
> org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359)
>  at com.sun.proxy.$Proxy10.mkdirs(Unknown Source) at 
> org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2419) at 
> org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2395) at 
> org.apache.hadoop.hdfs.DistributedFileSystem$27.doCall(DistributedFileSystem.java:1325)
>  at 
> org.apache.hadoop.hdfs.DistributedFileSystem$27.doCall(DistributedFileSystem.java:1322)
>  at 
> org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
>  at 
> org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:1339)
>  at 
> org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:1314)
>  at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:2275) Caused by: 
> java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed 
> [Caused by GSSException: No valid credentials provided (Mechanism level: Fail 
> to create credential. (63) - No service creds)] at 
> org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:760) at 
> java.security.AccessController.doPrivileged(Native Method) at 
> javax.security.auth.Subject.doAs(Subject.java:422) at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
>  at 
> org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:723)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:817) 
> at org.apache.hadoop.ipc.Client$Connection.access$3700(Client.java:411) at 
> org.apache.hadoop.ipc.Client.getConnection(Client.java:1572) at 
> org.apache.hadoop.ipc.Client.call(Client.java:1403) ... 23 more Caused by: 
> javax.security.sasl.SaslException: GSS initiate failed [Caused by 
> GSSException: No valid credentials provided (Mechanism level: Fail to create 
> credential. (63) - No service creds)] at 
> com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:211)
>  at 
> org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:408) 
> at 
> org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:617) 
> at org.apache.hadoop.ipc.Client$Connection.access$2300(Client.java:411) at 
> org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:804) at 
> org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:800) at 
> java.security.AccessController.doPrivileged(Native Method) at 
> javax.security.auth.Subject.doAs(Subject.java:422) at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
>  at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:800) 
> ... 26 more Caused by: GSSException: No valid credentials provided (Mechanism 
> level: Fail to create credential. (63) - No service creds) at 
> sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:770) at 
> sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248) at 
> sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179) at 
> com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:192)
>  ... 35 more Caused by: KrbException: Fail to create credential. (63) - No 
> service creds at 
> sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:162)
>  at sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:458) 
> at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:693) 
> ... 38 more 
> --------------------------------------------------------------------------- 
> OSError Traceback (most recent call last) Input In [18], in <cell line: 1>() 
> ----> 1 hdfs.create_dir("created_by_pyarrow") File 
> ~/anaconda3/lib/python3.9/site-packages/pyarrow/_fs.pyx:461, in 
> pyarrow._fs.FileSystem.create_dir() File 
> ~/anaconda3/lib/python3.9/site-packages/pyarrow/error.pxi:114, in 
> pyarrow.lib.check_status() OSError: HDFS create directory failed, errno: 255 
> (Unknown error 255) Please check that you are connecting to the correct HDFS 
> RPC port {code}



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

Reply via email to