前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FSDirectory详解

FSDirectory详解

作者头像
zeekling
发布2024-04-01 08:49:35
580
发布2024-04-01 08:49:35
举报

简介

Namenode最重要的两个功能之一就是维护整个文件系统的目录树(即命名空间namesystem) 。 HDFS文件系统的命名空间(namespace) , 也就是以“/”为根的整个目录树, 是通过FSDirectory类来管理的。 FSNamesystem也提供了管理目录树结构的方法。 FSNamesystem中的方法多是调用FSDirectory类的实现。FSNamesystem在FSDirectory类方法的基础上添加了editlog日志记录的功能。

FSDirectory的操作则全部是在内存中进行的, 并不进行editlog的日志记录。

参数

参数

默认值

描述

dfs.permissions.enabled

true

是否开启权限管理

dfs.permissions.superusergroup

supergroup

超级用户组

dfs.namenode.acls.enabled

true

设置为true以启用对HDFS ACL(访问控制列表)的支持。3.3.1版本默认启用ACL

dfs.namenode.posix.acl.inheritance.enabled

true

是否启用POSIX格式的ACL权限

dfs.namenode.xattrs.enabled

true

是否支持扩展namenode的属性。

dfs.namenode.fs-limits.max-xattr-size

16384

以字节为单位的扩展属性的名称和值的最大组合大小。它应该大于0,小于或等于32768。

dfs.namenode.accesstime.precision

3600000

HDFS文件访问时间的精确值,默认为1小时。当为0时,表示禁用。

dfs.quota.by.storage.type.enabled

true

如果为true,则启用基于存储类型的配额。

dfs.ls.limit

1000

限制ls打印的文件数。如果小于或等于零,最多将打印 DFS_LIST_LIMIT_DEFAULT (= 1000)。

dfs.content-summary.limit

5000

在一个锁定周期中允许的最大内容摘要计数。0或负数意味着没有限制。

dfs.content-summary.sleep-microsec

500

在内容汇总计算中,两次请求锁的时间。

dfs.namenode.fs-limits.max-component-length

255

定义路径中每个组件中UTF-8编码的最大字节数。0的值将禁用检查。

dfs.namenode.fs-limits.max-directory-items

1024*1024

定义目录可能包含的最大项目数。无法将属性设置为小于1或大于6400000的值。

dfs.namenode.fs-limits.max-xattrs-per-inode

32

每个索引节点的扩展属性的最大数目。

dfs.protected.subdirectories.enable

false

是否保护 fs.protected.directories 上设置的目录的子目录。

dfs.namenode.name.cache.threshold

10

经常访问的文件访问次数超过了这个阈值,缓存在FSDirectory nameCache中。

dfs.namenode.quota.init-threads

12

quota初始化并发线程的数量。

常量

  • INodeDirectory rootDir: 整个文件系统目录树的根节点, 是INodeDirectory类型的 。
  • FSNamesystem namesystem: Namenode的门面类, 这个类主要支持对数据块进行操作的一些方法, 例如addBlock()。
  • INodeMap inodeMap: 记录根目录下所有的INode,并维护INodeId ->INode的映射关系。
  • ReentrantReadWriteLock dirLock: 对目录树以及inodeMap字段操作的锁。
  • NameCache nameCache: 将常用的name缓存下来, 以降低byte[]的使用, 并降低JVM heap的使用。
  • SortedSet protectedDirectories:使用 dfs.namenode.protected.directories 设置保护的一组目录。 这些目录不能被删除,除非它们是空的。
  • FSEditLog editLog: 用于写editlog的类。
  • HdfsFileStatus[] reservedStatuses: 待定。
  • INodeAttributeProvider attributeProvider:用于实现权限管理。

待续。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024.03.31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 参数
  • 常量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档