hdfs中的tmp文件夹_0521Hadoop命令无法访问HDFS路径诡异问题解决

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github:

https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

诡异现象

Fayson今天在集群中浏览HDFS数据目录时发现,通过Cloudera Manager的“文件浏览”功能可以正常的浏览某一个HDFS数据目录,如下显示:

6c64e662419db9c6f0055c1858352da4.png

但Fayson在脚本或命令行操作该数据目录时又提示“/tmp/guiyi/123: No such file or directory”,异常如下:

560052444be93a9aa2d1ff0cbca50a8d.png

2

问题分析

在Cloudera Manager上可以正常的浏览该数据目录,但在命令行无法正常访问提示文件不存在,经过一系列操作(如:重启Cloudera Manager、重启HDFS服务均无法解决该问题),继续分析….

猜测可能是由于HDFS数据目录包含特殊字符导致,Fayson使用如下命令查看HDFS路径是否携带特殊字符:

[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi | cat -A

af829adc79e51ba11464e9514abaa693.png

通过如上命令可以看到在/tmp/guyiyi/123路径后看到存在特殊字符“^[”,由此可以推断是HDFS路径包含了特殊字符导致的问题。

3

问题解决

在上面我们定位到HDFS路径中包含特殊字符导致命令行无法正常访问HDFS路径(这里只是hadoop命令的影响,也有可能会影响Hive无法正常的获取表的数据),那接下来可以通过如下步骤解决该问题:

1.使用hadoop命令将/tmp/guiyi目录下的所有数据目录列出到一个shell脚本

[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi > test.sh
[root@cdh05 ~]# cat -A test.sh 

787682e9125dfdc66310b3cad092701b.png

2.在上一步test.sh脚本的基础上较该脚本修改为如下:

[root@cdh05 ~]# vim test.sh 
hadoop fs -mv /tmp/guiyi/123^[ /tmp/guiyi/123

a644a2f451c14ebbaf1169d3821f57c4.png

注意:这里为什么是在test.sh的基础上修改,是因为“^[”字符在Linux通过拷贝的方式则认为普通字符,不是不可见的特殊字符。

3.执行上述修改后的脚本将/tmp/guiyi/123^[ 目录修改为/tmp/guiyi/123

[root@cdh05 ~]# sh test.sh 
[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi
[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi | cat -A
[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi/123

ee1cbcca5fe2c8a68c26085efdbd3d23.png

可以看到此时/tmp/guiyi/123的HDFS路径已可以正常访问。

4

总结

1.在使用脚本创建HDFS目录或文件时一定要注意特殊字符问题(特别是在window上编写好的脚本拷贝至Linux服务器时,需要检查文件中是否包含特殊字符)

2.在Linux中使用vim进入编辑状态后使用ctrl+c、ctrl+v会产生上述问题中的特殊字符,因此在编辑时需要注意。

3.可以通过cat -A命令查看文件中是否包含特殊字符

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

ea57c33a1ed475cff15a3aef6aa5aad9.gif

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值