一.Linux文件/目录权限
http://hi.baidu.com/skyforum/item/9946ef57b371789608be1747,不了解的需要做一个基本的了解。
二. FsAction
- FsAction对应着文件/目录的操作权限。rwx。
- FsAction犀利之处在于枚举类型里的每一个权限与二进制的对应。
- 有了上面的对应,我们可以组合出所有的权限
public enum FsAction { // POSIX style NONE("---"), EXECUTE("--x"), WRITE("-w-"), WRITE_EXECUTE("-wx"), READ("r--"), READ_EXECUTE("r-x"), READ_WRITE("rw-"), ALL("rwx"); private final static FsAction[] vals = values(); //this FsAction是否包含that FsAction public boolean implies(FsAction that) {} //this FsAction和that FsAction 与操作 public FsAction and(FsAction that) {} //this FsAction和that FsAction 或操作 public FsAction or(FsAction that) {} //this FsAction和that FsAction 非操作 public FsAction not() {} }
三. FsPermission
- FsPermission对应着文件/目录的使用者权限,组权限,其他用户权限。
- FsPermission applyUMask(FsPermission umask)方法得到一个去掉了umask权限的新权限。
public class FsPermission implements Writable { private FsAction useraction = null; private FsAction groupaction = null; private FsAction otheraction = null; /** Apply a umask to this permission and return a new one */ public FsPermission applyUMask(FsPermission umask) { return new FsPermission(useraction.and(umask.useraction.not()), groupaction.and(umask.groupaction.not()), otheraction.and(umask.otheraction.not())); } }
四. PermissionStatus
- PermissionStatus描述文件/目录属主,文件组和它的FsPermission。
private String username; private String groupname; private FsPermission permission;
- INode中有一个long型成员变量,代表着PermissionStatus。保存了FsPermission(MODE),文件主号(USER)和用户组号(GROUP)。
private long permission;
五. SerialNumberManager
- Manage name-to-serial-number maps for users and groups.管理着文件属主和文件属主号,文件组和文件组号的对应关系。
- 在持久化信息FSImage中,不保存文件主号和用户组号,它们只是SerialNumberManager分配的,只保存在内存的信息。通过SerialNumberManager得到某文件主的文件主号时,如果找不到文件主号,会往对应关系中添加一条记录。
六. PermissionChecker
- PermissionChecker用于权限检查。
- checkSuperuserPrivilege(UserGroupInformation owner, String supergroup):Verify if the caller has the required permission.
- checkPermission(String path, INodeDirectory root, boolean doCheckOwner,
FsAction ancestorAccess, FsAction parentAccess, FsAction access,
FsAction subAccess):Check whether current user have permissions to access the path.
七. 权限相关类图
相关推荐
hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...
3. `hadoop-lzo-0.4.21-SNAPSHOT-sources.jar`:这个文件包含了Hadoop-LZO的源代码,对于开发者来说非常有用,因为可以直接查看源码来理解其内部工作原理,也可以方便地进行二次开发或调试。 集成Hadoop-LZO到你的...
**HDFS源码分析** 1. **NameNode与DataNode**:HDFS的核心组件包括NameNode和DataNode。NameNode作为元数据管理节点,存储文件系统的命名空间信息和文件的块映射信息。DataNode则是数据存储节点,负责存储实际的...
Hadoop 2.X HDFS源码剖析-高清-完整目录-2016年3月,分享给所有需要的人!
在Java编程环境中,Hadoop分布式文件系统(HDFS)提供了丰富的Java API,使得开发者能够方便地与HDFS进行交互,包括文件的上传、下载、读写等操作。本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 ...
《深入剖析Hadoop 2.8.1源码:分布式系统的智慧结晶》 Hadoop,作为开源的大数据处理框架,自2006年诞生以来,一直是大数据领域的重要支柱。其2.8.1版本是Hadoop发展的一个关键节点,为用户提供了更稳定、高效的...
本文将基于“Hadoop学习总结和源码分析”这一主题,结合提供的文档资源,深入探讨Hadoop的核心组件HDFS(Hadoop Distributed File System)和MapReduce。 首先,我们从“Hadoop学习总结之一:HDFS简介.doc”开始,...
标题 "hdfs-over-ftp-hadoop-0.20.0.rar" 提示我们关注的是一个关于将HDFS(Hadoop Distributed File System)与FTP(File Transfer Protocol)整合的项目,特别适用于版本0.20.0的Hadoop。这个项目可能提供了在...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。这两个部分是Hadoop的核心基石,为大数据处理提供了基础架构。这里我们将深入探讨...
这个hadoop-3.1.3.tar.gz文件是一个包含了Hadoop 3.1.3版本的源码压缩包,对于理解Hadoop的工作原理、进行二次开发或者定制化配置来说,研究源码是非常重要的。 首先,Hadoop的核心组件包括HDFS(Hadoop ...
标题中的“hadoop-common-2.6.0-bin-master”指的是Hadoop Common的2.6.0版本的源码编译后的二进制主目录,这个目录包含了运行Hadoop所需的各种基础工具和库。 在Windows 10环境下,由于操作系统本身的特性和Linux...
在这个案例中,Uber JAR包含了Flink自身所需的依赖以及Hadoop 2.6.5的相关库,使得Flink可以在不需要额外配置Hadoop环境的情况下直接运行。这样做不仅简化了部署流程,还避免了因依赖冲突可能导致的问题。 Flink与...
hadoop源码2.2.0 Apache Hadoop 2.2.0 is the GA release of Apache Hadoop 2.x. Users are encouraged to immediately move to 2.2.0 since this release is significantly more stable and is guaranteed to ...
编译hadoophadoop-3.2.2-src的源码
Hadoop 2.5.2源码分析 Hadoop是一个开源框架,主要用于处理和存储大量数据,它由Apache软件基金会开发并维护。Hadoop 2.5.2是Hadoop发展过程中的一个重要版本,它引入了许多改进和优化,旨在提高系统的稳定性和性能...
hdfs源码剖析 基于hadoop2.6 hdfs源码剖析 基于hadoop2.6
在大数据处理领域,Hadoop是不可或缺的关键组件,其分布式文件系统(HDFS)为海量数据提供了可靠的存储解决方案。本文将详细讲解如何使用Java API来操作HDFS,特别是创建目录的功能。我们将探讨Hadoop的环境配置、...