HDFS的扩展属性
概述
扩展属性(Extended attribute)允许对文件添加与之相关的额外的元数据。和系统层级的元数据(文件访问权限,修改时间等)不同,扩展属性是被应用添加存储的,可以是文件的额外描述。HDFS的扩展属性,是引申自linux文件系统的扩展属性,是一种name-value的存储结构,name是string类型,value是binary。在HDFS中,扩展属性的name需要用namespace来做前缀,例如"user.encodingType",一个文件可以有多个扩展属性。HDFS的扩展属性是存储在namenode中,并且随着文件的删除被移除。
Namespace和permission
上面我们说到,扩展属性的name必须是以namespace作为前缀,在HDFS中有五个可用的namespace:user, trusted, system, security, raw。不同的namespace有不同的权限准则。
- user: 扩展属性的权限和文件的权限相同
- trusted: HDFS超级用户使用
- system: HDFS内部保留使用,用来实现HDFS的功能
- security: HDFS内部保留使用, 有一个特殊用法,“security.hdfs.unreadable.by.superuser”属性,可以组织超级用户读取文件内容,这个属性被设置之后就不能被移除,并且不设置value只。
- raw: 内部系统需要暴露的的一些属性使用