我已经在本地windows机器上的linux中安装了Hadoop/YARN。在同一台windows机器(不在VM中)上,我已经安装了Spark。在windows上运行spark时,我可以读取HDFS中存储的文件(在linux中)。
val lines = sc.textFile("hdfs://MyIP:9000/Data/sample.txt")当保存一个用于HDFS saveAsTextFile("hdfs://MyIP:9000/Data/Output")的文件时,我得到以下错误:
org.apache.hadoop.security.AccessControlException:权限被拒绝: user=LocalWindowsUser,access=WRITE,inode="/Data":hadoop:supergroup:drwxr-xr-x。
我想,这是因为Windows和linux用户是不同的,windows用户没有在Linux中编写文件的权限。
使用spark将文件从windows存储到HDFS (linux )的正确方法是什么?
发布于 2018-09-16 21:06:08
您的问题是,您用写模式访问HDFS所使用的用户名没有权限。
目录/Data具有rwxr-xr-x权限。这转化为模式755。您的用户名是LocalWindowsUser,它具有读取和执行权限。
可能的解决办法:
Soution 1:由于这是一个由您完全控制的本地系统,请更改权限以允许每个人访问。在VM中以用户hadoop的身份执行此命令:
hdfs dfs -chmod -R 777 /Data
解决方案2:在Windows中创建一个环境变量并设置用户名:
set HADOOP_USER_NAME=hadoop
用户名实际上应该是用户hdfs。如果必要的话也试一试。
https://stackoverflow.com/questions/52356284
复制相似问题