使用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的目录权限

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值