前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0521-Hadoop命令无法访问HDFS路径诡异问题解决

0521-Hadoop命令无法访问HDFS路径诡异问题解决

作者头像
Fayson
发布2019-11-27 18:50:46
1.4K0
发布2019-11-27 18:50:46
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1

诡异现象

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

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

2

问题分析

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

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

代码语言:javascript
复制
[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi | cat -A

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

3

问题解决

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

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

代码语言:javascript
复制
[root@cdh05 ~]# hadoop fs -ls /tmp/guiyi > test.sh
[root@cdh05 ~]# cat -A test.sh 

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

代码语言:javascript
复制
[root@cdh05 ~]# vim test.sh 
hadoop fs -mv /tmp/guiyi/123^[ /tmp/guiyi/123

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

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

代码语言:javascript
复制
[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

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

4

总结

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档