无法从本地文件系统中的文件复制到的Hadoop/HDFS上的Cloudera
问题描述:
上fedora25安装Cloudera的HDC之后,我可以创建文件夹,而不是文件我也不能从我的本地文件系统HDFS复制数据。无法从本地文件系统中的文件复制到的Hadoop/HDFS上的Cloudera
这是命令我使用:
sudo -u hdfs hadoop fs -copyFromLocal /home/mohammed/Documents/bbc.txt /kareem/corpora/
,这是我从终端获得:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
copyFromLocal: '/home/mohammed/Documents/bbc.txt': No such file or directory
如何解决这个问题?
你的帮助是高度赞赏!
答
问题是您的本地路径/home/mohammed
无法访问,因为您要运行整个命令的用户是hdfs
。由于hdfs
本地Linux用户无法进入/home/mohammed
,命令抛出一个No such file or directory
错误并退出其作为生活在无法找到或阅读提供的文件的结果。
在大多数打包的HDFS安装中,hdfs
用户通常是分布式文件系统的超级用户,管理命令通常以该用户的身份运行。但是,在使用hdfs
用户为常规用户设置权限和所有权后,可以并且应该以常规用户的身份完成数据处理工作。
对于你的情况,你可以做以下为您mohammed
用户,如果这个帐户还具有sudo的特权:
# Superuser-provisioning part (do once)
# Ensure the HDFS directory exists by creating it as a superuser
~> sudo -u hdfs hadoop fs -mkdir -p /kareem/corpora
# Ensure also the HDFS-home path exists by creating it as a superuser
~> sudo -u hdfs hadoop fs -mkdir -p /user/mohammed
# Grant ownership entirely to user mohammed for both paths
~> sudo -u hdfs hadoop fs -chown -R mohammed:mohammed /kareem /user/mohammed
# Final usage part (continue or repeat as many times) without superuser
# Upload the local file (note the absence of sudo)
~> hadoop fs -copyFromLocal -f /home/mohammed/Documents/bbc.txt /kareem/corpora/
# Now read it, etc., all done as the regular non-'hdfs' user
~> hadoop fs -text /home/mohammed/Documents/bbc.txt
没有'/家庭/穆罕默德/文档/ bbc.txt'文件是否存在,并有机会获得给hdfs用户? – mrsrinivas