FSDirectory详解:配置和变量 #24
44
hdfs/FSDirectory详解.md
Normal file
44
hdfs/FSDirectory详解.md
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
## 简介
|
||||
|
||||
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<ByteArray> nameCache: 将常用的name缓存下来, 以降低byte[]的使用, 并降低JVM heap的使用。
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user