使用Cloudera虚拟机执行hadoop fs -copyFromLocal报错的原因及解决方法
Hadoop copyFromLocal 报错“'.' : No such file or directory”的原因与解决办法
问题根源
你执行的hadoop fs -copyFromLocal words.txt命令只指定了本地源文件,没有明确声明HDFS的目标路径。此时Hadoop会默认尝试把文件复制到当前HDFS用户的工作目录(也就是/user/你的虚拟机用户名,比如Cloudera QuickStart VM默认用户名是cloudera,对应路径就是/user/cloudera)。如果这个HDFS目录还没有被创建,Hadoop就会报错找不到当前目录(命令里的.代表HDFS的当前工作目录)——这和安全模式完全没关系,是目标路径不存在导致的。
解决步骤
方法1:先创建自己的HDFS用户目录(推荐)
首先执行命令创建你的HDFS用户根目录(以用户名cloudera为例,换成你实际的用户名):
hadoop fs -mkdir -p /user/cloudera
-p参数是确保父目录不存在时也能一起创建,避免报错。
然后再执行复制命令,此时Hadoop会默认把文件放到刚创建的用户目录下:
hadoop fs -copyFromLocal words.txt
或者你也可以明确指定目标路径,更清晰:
hadoop fs -copyFromLocal words.txt /user/cloudera/
方法2:直接指定一个已存在的HDFS目标路径
如果你不想创建用户目录,也可以直接把文件复制到HDFS的根目录(测试场景下可用,生产环境不推荐):
hadoop fs -copyFromLocal words.txt /
或者复制到其他已存在的HDFS目录,比如/tmp:
hadoop fs -copyFromLocal words.txt /tmp/
验证是否成功
复制完成后,用以下命令查看文件是否存在:
# 查看用户目录下的文件 hadoop fs -ls /user/cloudera # 或者查看根目录 hadoop fs -ls / # 查看tmp目录 hadoop fs -ls /tmp
内容的提问来源于stack exchange,提问作者HihaSpyKnocker
相关产品推荐
相关产品推荐

