HDFS中的扩展属性(Extended Attributes in HDFS)
Posted 程序猿码码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS中的扩展属性(Extended Attributes in HDFS)相关的知识,希望对你有一定的参考价值。
Apache Hadoop 2.9.0
请查看原文:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html
(如果转发,请标明出处)
概述
扩展属性(缩写为xattrs )是一种文件系统功能,允许用户应用程序将其他元数据与文件或目录相关联。与系统级节点(inode)元数据(如文件权限或修改时间)不同,扩展属性不会由系统解释,而是由应用程序用来存储有关节点(inode)的其他信息,例如,可以使用扩展属性来指定纯文本文档的字符编码。
HDFS扩展属性
HDFS中的扩展属性是根据Linux的扩展属性建模的(请查看Linux 手册中的attr(5))。一个扩展属性就是一个name-value pair,name是string类型,value是二进制值。Xattrs names必须以命名空间为前缀,例如,在user命名空间中,一个xattr的name是myXattr ,那么name最终会是user.myXattr。多个xattrs 可以关联到一个inode上。
命名空间和权限
在HDFS中,有5个有效的命名空间:user, trusted, system, security, 和 raw。每个命名空间都有不同的使用限制。
① user命名空间通常被客户端应用程序使用。对user命名空间中扩展属性的访问由相应的文件权限控制。
② trusted 命名空间只有HDFS超级用户可用。
③ system命名是HDFS内部保留使用的,此命名空间无法通过userspace 方法访问,并保留用于实现HDFS内部功能。
④ security 命名空间也是HDFS内部保留使用。此命名空间通常无法通过userspace方法访问。security 的一个特殊用途是security.hdfs.unreadable.by.superuser 扩展属性,此xattr只能在文件上设置,它将阻止超级用户读取文件的内容,但是超级用户依然能够读取或者修改文件的元数据,例如所有者,权限等等。假定有正常的文件系统权限,任何用户都可以设置和访问xattr,xattr也是一次写入,设置后无法删除,同时xattr不允许设置value。
⑤ raw 命名空间保留给有时需要公开的内部系统属性。与system 命名空间属性类似,它们对用户不可见,除非在HDFS /.reserved/raw目录层次结构上的文件或者目录上调用getXAttr/getXAttrs。这些属性只能被超级用户访问。distcp 是一个使用raw命名空间扩展属性的例子。加密区元数据存储在raw.*的扩展属性中,只要管理员在源和目标中使用/.reserved/raw目录名,加密区域中的加密文件是透明复制的。
与扩展属性交互
Hadoop shell通过 hadoop fs -getfattr 和hadoop fs -setfattr来支持和扩展属性交互。这些命令是根据Linux getfatter ( 1 )和setfatter ( 1 )命令设置样式的。
getfattr
hadoop fs -getfattr [-R] -n name | -d [-e en] <path>
显示一个文件或者目录的扩展属性names和values。
-R |
递归列出所有文件和目录的属性 |
-n name |
显示name的扩展属性值 |
-d |
显示所有目录名字相关的扩展属性值 |
-e <encoding> |
检索值后的编码。有效的编码是“text”, “hex”, and “base64”。Values被编码到一个用双引号括起来 (")的文本字符串,编码为十六进制和base64的值分别以0x和0s作为前缀。 |
<path> |
文件或目录
|
setfattr
hadoop fs -setfattr -n name [-v value] | -x name <path>
为一个文件或者目录设置扩展属性的name和value。
-n name |
扩展属性名 |
-v value |
扩展属性值,目前有三种不同的编码方式. 如果参数用双引号括起来,则该值是引号内的字符串。如果参数的前缀为0X或0X,则该参数将被视为十六进制数。如果引数以0或0开头,则视为base64编码。 |
-x name |
删除扩展属性 |
<path> |
文件或目录 |
配置选项
HDFS支持开箱即用的扩展属性,无需额外配置。管理员可能需要关心限制每个信息节点的xattr数量和xattr大小的选项,因为xattr会增加inode在磁盘上和内存中的空间消耗。
① dfs.namenode.xattrs.enabled
是否在NameNode上启用对扩展属性的支持。默认,扩展属性是启用的。
② dfs.namenode.fs-limits.max-xattrs-per-inode
每个inode上的最大扩展属性个数。默认,是32。
③ dfs.namenode.fs-limits.max-xattr-size
扩展属性的name和value组合的最大大小(以字节为单位),默认是16384 字节。
------------------- 全文完 ----------------------------
以上是关于HDFS中的扩展属性(Extended Attributes in HDFS)的主要内容,如果未能解决你的问题,请参考以下文章
关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得
用 TensorFlow Extended 实现可扩展快速且高效的 BERT 部署
用 TensorFlow Extended 实现可扩展快速且高效的 BERT 部署
自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter
自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter