hadoop使用HDFS报错:ls: `.': No such file or directory
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop使用HDFS报错:ls: `.': No such file or directory相关的知识,希望对你有一定的参考价值。
参考技术A安装好的Hadoop系统验证是否安装成功时使用命令:
结果报错:解决方法
hadoop fs -ls 命令的完整语法是:hadoop fs -ls [path]
默认情况下当你未指定[path] 时,hadoop会在HDFS里面将路径扩展为/home/[username];这样的话[username]就会被执行命令的Linux用户名替代。因此,当执行此命令时,hadoop fs -ls ,你看到的报错,ls: \'.\'no suck file or directory ,因为Hadoop正在寻找这路径/home/longting(Linux用户名),但是这条路径在HDFS中不存在。所以你可以这样做:
这样,你就明确指定了[path]并且是HDFS的根,它会自定被认为是HDFS的根目录。另外,当你想查看指定文件系统的路径,需要使用file:///url方案。
参考文献
https://blog.csdn.net/longting_/article/details/84023601
hadoop 使用 kerberos 认证后,hadoop fs -ls 命令hdfs dfs -ls 无法使用
版本:阿里云Centos 8.0、hadoop 3.1.3、kerberos 1.18
在启用了kerberos认证的hdfs安全集群输入:
[root@singlenode ~]# hadoop fs -ls /
2022-02-05 19:53:57,765 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
ls: DestHost:destPort singlenode:8020 , LocalHost:localPort singlenode/172.31.xxx.xx:0. Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
错误信息如下:
2022-02-05 19:53:57,765 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
ls: DestHost:destPort singlenode:8020 , LocalHost:localPort singlenode/172.31.xxx.xx:0. Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
可以看到是未认证错误
查看klist
[root@singlenode ~]# klist
Ticket cache: KCM:0
Default principal: hdfs/hadoop@EXAMPLE.COM
Valid starting Expires Service principal
02/05/2022 20:13:11 02/06/2022 20:13:11 krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 02/05/2022 20:13:11
发现又有认证?
解决方法:
shell 指定票券缓存在 /tmp/krb5cc_$UID 即可解决
[root@singlenode ~]# kinit -c /tmp/krb5cc_$UID hdfs/hadoop
此方法缓存的票券用 klist 是看不到的,请使用以下命令查看:
[root@singlenode ~]# klist -c /tmp/krb5cc_$UID
当然也得用以下的 kdestroy
[root@singlenode ~]# kdestroy -c /tmp/krb5cc_$UID
原因分析:
猜测可能是因为Kerberos版本过高,1.15版本好像不存在此问题,新版本Kerberos默认票券缓存在 KCM:0
[root@singlenode ~]# klist
Ticket cache: KCM:0
Default principal: hdfs/hadoop@EXAMPLE.COM
Valid starting Expires Service principal
02/05/2022 20:13:11 02/06/2022 20:13:11 krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 02/05/2022 20:13:11
可能hadoop默认去 /tmp/ 目录下找,尝试过修改 /etc/krb5.conf :注释掉 default_ccache_name,或者指定为 FILE:/tmp/krb5cc_%uid 都没有效果
贴一下本人的 /etc/krb5.conf :
# To opt out of the system crypto-policies configuration of krb5, remove the
# symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = EXAMPLE.COM
KRB5CCNAME = FILE:/tmp/krb5cc_%uid
default_ccache_name = FILE:/tmp/krb5cc_%uid
[realms]
EXAMPLE.COM =
kdc = singlenode
admin_server = singlenode
[domain_realm]
#.example.com = EXAMPLE.COM
#example.com = EXAMPLE.COM
以上是关于hadoop使用HDFS报错:ls: `.': No such file or directory的主要内容,如果未能解决你的问题,请参考以下文章
hadoop 错误:util.NativeCodeLoader(hdfs dfs -ls 不起作用!)
Hadoop hdfs 显示 ls: `/home/hduser/input/': No such file or directory 错误