本地Java代码访问hadoop集群时错误Access denied for user ??. Superuser privilege is required错误解决办法

hadoop集群搭建好之后,本地通过java api访问hadoop集群,java代码如下

package ch4;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;

public class FileSystemOperationDemo3 {

	public static void main(String[] args) throws IOException {
		Configuration conf = new Configuration();
		String dfspath = "hdfs://cmaster:8020/TestDir";
		Path pathdir = new Path(dfspath);
		Path file = new Path(pathdir + "test.txt");
		FileSystem fs = pathdir.getFileSystem(conf);
		fs.mkdirs(pathdir);
		System.out.println("Write to" + conf.get("fs.default.name"));
		// d盘下需要存在log.txt文件
		fs.copyFromLocalFile(new Path("d://log.txt"), file);
		fs.copyToLocalFile(file, new Path("e://"));

		boolean bn = fs.rename(file, new Path(
				"hdfs://cmaster:8020/TestDir/renamelog.txt"));
		System.out.println(bn);
		DistributedFileSystem hdfs = (DistributedFileSystem) fs;
		DatanodeInfo[] dataNodeStatus = hdfs.getDataNodeStats();
		for (DatanodeInfo datanodeInfo : dataNodeStatus) {
			System.out.println("DataNode节点的名字" + datanodeInfo.getHostName());
		}
		boolean bndel = fs.delete(pathdir, true);
		System.out.println("删除HDFS目录及文件:" + bndel);
		fs.close();
	}
}

程序运行错误图
上图是运行错误的结果图,从画横线的地方可以看出是权限错误,出现Access denied for user Administrator. Superuser privilege is required的错误信息:

首先在Linux下输入:hadoop fs -chmod 777 / 命令,开启权限(可读可写可执行)
可以有用这种解决方式:点击跳转到目标链接
也可以用另一种方式:由于是访问权限问题,我们在访问Hadoop的时候加入System.setProperty("HADOOP_USER_NAME", "root");
其中的“root”是具有访问hadoop集群权限的用户名,即管理员权限。在这里插入图片描述

修改完代码让我们来运行以下代码,看看能否访问hadoop服务

在这里插入图片描述
代码运行成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值