Kyoung-Rok Jang created ARROW-18104:
---------------------------------------

             Summary: Can't connect to HDFS in tmux?
                 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


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? 

 

```sh

from pyarrow import fs

 

hdfs = fs.HadoopFileSystem("default", port=0)

hdfs.create_dir("created_by_pyarrow") # works in the main shell, doesn't work 
in tmux

```

The error I see is as follows:

```

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 abc-nn1.bdp.bdata.ai:9020 , 
LocalHost:localPort asca0x0930.nfra.io/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 abc-nn1.bdp.bdata.ai:9020 , 
LocalHost:localPort asca0x0930.nfra.io/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

```



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

Reply via email to