生产环境中java api访问HDFS权限问题Permission denied解决方案

java api访问hdfs文件系统未指定访问用户的情况下出现报错

//1、创建hadoop configuration对象
//        Configuration conf = new Configuration();
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://linux121:9000");
        //2、创建hadoop FileSystem对象
//        FileSystem fileSystem = FileSystem.get(new URI("hdfs://linux121:9000"), conf, "root");
        FileSystem fileSystem = FileSystem.get(conf);
        //3、创建文件夹
        fileSystem.mkdirs(new Path("/tp_user"));
        //4、关闭资源
        fileSystem.close();

出现以下报错:

csharp;gutter:true; org.apache.hadoop.security.AccessControlException: Permission denied: user=QI, access=WRITE, inode="/":root:supergroup:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:350) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:251) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:189) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1753) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1737) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1696) at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:60) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:2990) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1096) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB</p> <pre><code> 在未指定访问名的情况下默认是使用当前系统用户名进行访问,会出现权限不够报错异常,hdfs用户访问权限比较鸡肋,不能防止坏人做坏事!! 在生产的情况下,有以下三种方案进行解决: * 指定用户信息获取FileSystem对象 关闭HDFS集群权限校验 * 关闭HDFS集群权限校验 ;gutter:true;
vim hdfs-site.xml
#添加如下属性

dfs.permissions
true

  • 基于HDFS权限本身比较鸡肋的特点,我们可以彻底放弃HDFS的权限校验,如果生产环境中 我们可以考虑借助kerberos以及sentry等安全框架来管理大数据集群安全。所以我们直接修 改HDFS的根目录权限为777

html;gutter:true;
hadoop fs -chmod -R 777 /

Original: https://www.cnblogs.com/qizhang0828/p/15769159.html
Author: zhangqi0828
Title: 生产环境中java api访问HDFS权限问题Permission denied解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539432/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java设计模式之(九)——门面模式

    Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-…

    Java 2023年5月29日
    076
  • 【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别

    1.@ApiParam,就是用于swagger提供开发者文档,文档中生成的注释内容。 2.@RequestParam,是获取前端传递给后端的参数,可以是get方式,也可以是post…

    Java 2023年5月29日
    0100
  • 【源码】按照自己的思路研究Spring AOP源码 ①

    一个例子 从@EnableAspectJAutoProxy注解入手 什么时候会创建代理对象? 方法执行时怎么实现拦截的? 总结 问题 参考 一个例子 // 定义一个切面 packa…

    Java 2023年6月8日
    096
  • api接口基础Day1

    String的常用方法: length():获取字符串的长度(字符个数) public class LengthDemo { public static void main(Str…

    Java 2023年6月13日
    059
  • 20220728-在IDEA中进行Java的断点调试Debug

    断点调试介绍 断点调试是指在程序的某一行设置一个断点,在调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行…

    Java 2023年6月15日
    0100
  • mybatis-plus

    mybatis-plus执行 SQL 分析打印 https://gitee.com/baomidou/mybatis-plus-samples/blob/master/mybati…

    Java 2023年5月30日
    094
  • Python爬虫详解

    1、任务介绍 需求分析爬取豆瓣电影Top250的基本信息,包括电影的名称,豆瓣评分,评价数,电影概况,电影链接等。 https://movie.douban.com/top250 …

    Java 2023年6月14日
    091
  • 手写 HashSet的底层 和 迭代器

    1 package Test.CollectionIterator; 2 import java.util.Iterator; 3 public class MyHashSet2 …

    Java 2023年6月8日
    083
  • 第一个微信小项目

    第一个好友分析: 我们需要用到wxpy这个库,这个库用到时会弹出一个二维码,这个二维码是通过扫码的方式登录微信,以获取信息 1 #导入模块 2 from wxpy import *…

    Java 2023年6月6日
    074
  • 前后端分离 微服务项目 通用后台管理系统

    访问地址 47.93.213.23,如果对该项目有兴趣,可以私聊我。 自己空余时间做的一个系统是前后端分离的微服务项目。 前端使用的是layui组件,后端使用的是spring cl…

    Java 2023年6月5日
    080
  • JDK成长记16:从0分析你不知道的synchronized底层原理(下)

    上一节你了解了什么是CAS、synchronized形成的锁的类型、重量级锁是用户态进程向内核态申请资源加锁过程,HotSpot Java对象结构,以及初步从3个层面分析了下syn…

    Java 2023年6月5日
    0101
  • eclipse开发jsp页面第一行小红点

    The superclass “javax.servlet.http.HttpServlet” was not found on the Java Buil…

    Java 2023年6月9日
    091
  • nginx防盗链接的使用

    以 local.hyperf.com为例 nginx配置文件如下 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP S…

    Java 2023年5月30日
    064
  • 阿里云服务器密钥对解绑后仍然可以登录

    背景:使用阿里云服务器生成的密钥对进行登录,原密钥对已经解绑、删除并且重启实例,现在不但新密钥可以登录,原来的密钥仍可以登录 需求:已经解绑的密钥对不能登录,只有新密钥可以登录 方…

    Java 2023年6月8日
    085
  • 编写 java 程序,为家用电脑 ipv6 自动更新 goddy dns 记录(ddns)

    家里放了一台旧 acer 笔记本电脑,外挂几个硬盘盒,插上几个硬盘,组成硬盘盒。 因笔记本电脑的耗电较小,硬盘盒有自动休眠省电模式,所以长期开机。此笔记本电脑,使用家庭的移动宽带,…

    Java 2023年6月9日
    0105
  • [Java编程思想] 第六章 访问权限控制

    6.1 包:库单元 包内含有一组类,它们在单一的名字空间之下被组织在了一起。 当编写一个Java源代码文件时,此文件通常被称为编译单元。每个编译单元都必须有一个后缀名.java,而…

    Java 2023年6月5日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球