[
https://issues.apache.org/jira/browse/ARROW-18104?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kyoung-Rok Jang closed ARROW-18104.
-----------------------------------
Resolution: Information Provided
> 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)