Java HDFS权限被拒绝
我正在尝试从java启动MapReduce作业。但是,当我尝试提交作业时,我得到了Java HDFS权限被拒绝,java,hadoop,mapreduce,permission-denied,Java,Hadoop,Mapreduce,Permission Denied,我正在尝试从java启动MapReduce作业。但是,当我尝试提交作业时,我得到了权限被拒绝异常。我能够从命令行运行hdfs dfs-ls/,没有任何错误。但是它在我的java程序中不起作用 这是我的密码 public static void main(String[] args) { Configuration conf=new Configuration(); conf.set("mapreduce.map.class","org.apache.hadoop.conf.Te
权限被拒绝
异常。我能够从命令行运行hdfs dfs-ls/
,没有任何错误。但是它在我的java程序中不起作用
这是我的密码
public static void main(String[] args) {
Configuration conf=new Configuration();
conf.set("mapreduce.map.class","org.apache.hadoop.conf.TestMapper");
conf.set("mapreduce.reduce.class","org.apache.hadoop.conf.TestReducer");
conf.set("mapreduce.framework.name","yarn");
conf.set("hadoop.security.group.mapping","org.apache.hadoop.security.ShellBasedUnixGroupsMapping");
conf.set("fs.default.name","hdfs://master:9000");
conf.set("dfs.permission","false");
conf.set("yarn.nodemanager.aux-services","mapreduce_shuffle");
conf.set("yarn.resourcemanager.resource-tracker.address","master:8025");
conf.set("yarn.resourcemanager.scheduler.address","master:8030");
conf.set("yarn.resourcemanager.address","master:8040");
conf.set("yarn.nodemanager.localizer.address","master:8060");
Job job=null;
try {
job = Job.getInstance(conf, "Test Map Reduce");
job.setJarByClass(RunJob.class);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(Text.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
TextInputFormat.setInputPaths(job, new Path("/input.txt"));
TextOutputFormat.setOutputPath(job, new Path("/output"));
job.submit();
}
但我有以下例外
org.apache.hadoop.security.AccessControlException: Permission denied: user=manthosh, access=EXECUTE, inode="/tmp":hduser:supergroup:drwxrwx---
这个解决方案行不通
我缺少什么?是dfs.permissions(注意事项),我建议您在conf/*.xml文件中设置这些属性,而不是在代码中设置。检查这些属性在配置文件中是否设置为final。因为如果是这样,你不能从任何应用程序更新它们。