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)