TOP

使用JavaAPI操作HDFS创建目录和权限问题
2019-04-24 00:15:49 】 浏览:901
Tags:使用 JavaAPI 操作 HDFS 创建 目录 权限 问题

一、创建目录

1.首先在虚拟Linux上找到jar包
$HADOOP_HOME/share/hadoop/common/*.jar
$HADOOP_HOME/share/hadoop/common/lib/*.jar
$HADOOP_HOME/share/hadoop/hdfs/*.jar
$HADOOP_HOME/share/hadoop/hdfs/lib/*.jar


2.下载当中所有的jar包然后导入在MyEclipse上

3.示例代码:

package com.stu.demo;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

/*这个错误是因为没用Linux的root用户,权限不够无法创建目录。实例是正确代码,使用root用户。因为虚拟机的HDFS的权限检查没有设置所以你说你是root就是root,无需证明。
*hdfs-site.xml <!--是否开启HDFS的权限检查,默认true-->
* <name>dfs.permissions</name>
* <value>false</value>
* </property>
* Permission denied: user=Сì, access=WRITE, inode="/folder":root:supergroup:d rwx r-x r-x
*/
public class TestMkDir {
@Test
public void testMkdir1() throws Exception {
//指定当前的Hadoop用户
System.setProperty("HADOOP_USER_NAME", "root");
//配置参数,指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.125.111:9000");
//创建一个客服端
FileSystem client = FileSystem.get(conf);

//创建目录
client.mkdirs(new Path("/folder"));

//关闭客户端
client.close();
}
}


二、关于hdfs权限问题

1、示例代码

package com.stu.demo;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

public class Demo {

@Test
public void test01() throws Exception{

//配置参数,指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.125.111:9000");
//创建客服端
FileSystem client = FileSystem.get(conf);
//创建目录
client.mkdirs(new Path("/Demo/demo111"));
//关闭客户端
client.close();
}
}


2、出错信息:org.apache.hadoop.security.AccessControlException: Permission denied: user=Сì, access=WRITE, inode="/Demo/demo223":root:supergroup: d rwx r-x r-x

出错原因:当前用Windows操作所以是本地用户,其他用户是没有写的权限的,所以要修改HDFS的权限。

3、解决方式

第一种方式://指定当前用户为root用户
System.setProperty("HADOOP_USER_NAME", "root");

第二种方式:通过java的-D方式参数,-D可以理解是取参数的,如图所示:

第三种方式:dfs.permissions -->false ; 默认是ture,修改就行。

第四种方式:命令 -chmod 改变hdfs的目录权限

请关注公众号获取更多资料


使用JavaAPI操作HDFS创建目录和权限问题 https://www.cppentry.com/bencandy.php?fid=115&id=220167

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop分布式———分布式存储系.. 下一篇Hadoop3 50070端口访问不到HDFS页..