你好,游客 登录 注册 搜索
背景:
阅读新闻

【dbdao Hadoop 大数据学习】HDFS中的拓展属性

[日期:2016-06-12] 来源:dbDao IT技术玩家博客  作者:郭兆伟 [字体: ]

  拓展属性(缩写为 xattrs)是一个文件系统特性,允许用户应用程序管理额外的元数据到文件和目录。不同于系统级别的inode元数据例如文件权限或修改时间,拓展属性不会被系统解析,并被应用程序用来存储关于inode的额外信息。例如,可以对实例使用拓展属性,来指定一个纯文文档的字符编码(t.dbdao.com)。

Hadoop

  1.1 HDFS拓展属性

  HDFS的拓展属性是在Linux的拓展属性之后的模块。一个额外属性是一个键值对,有一个字符串名称和二进制的值。Xattrs的名称必须是namespace的前缀。例如,一个名称为myXattr的xattr中的用户namespace应该被定义成user.myXattr。多个xattr可以被关联到一个inode。

  1.2 命名空间和权限

  在HDFS中,有5个有效的命名空间:user,trusted,system,security 和raw。每个命名空间有不同的访问限制(t.dbdao.com)。

  User命名空间通常被客户端应用程序使用。在user命名空间中访问拓展属性被相关的文件权限控制。

  Trusted 命名空间只能被HDFS超级用户使用

  System 命名空间被内部HDFS保留使用。这个命名空间不能通过用户空间方法访问,并且为实施内部HDFS特性保留。

  security 命名空间被内部HDFS保留使用。此命名空间一般是不可以通过用户空间的方法。一个特别使用 security 是security.hdfs.unreadable.by.superuser 拓展属性。这个xattr只能被设置到文件,并且其将放置超级用户读取文件的内容。这个超级用户仍然可以读取和修改文件的元数据,例如:所有者,权限,等等。这个xattr可以被任何用户设置和访问,假设是一般文件系统权限。这个xattr也可以写一次,并且一旦被设置无法移除。这个xattr不允许设置一个值(t.dbdao.com)。

  Raw 命名空间是保留内部系统属性,有的时候需要被暴露。例如system 命名空间属性对于用户是不可见的,除了当getXAttr/getXAttrs在 /.reserved/raw HDFS层级中的文件或目录中调用。这个属性只能被超级用户访问。一个例子是 raw命名空间拓展属性被distcp工具使用。在 raw.*拓展属性中存储加密元数据区。所以只要管理员在源和目录使用/.reserved/raw,在加密空间中的加密文件是透明拷贝。

  2.拓展属性的交互

  Hadoop支持通过hadoop fs -getfattr 和 hadoop fs –setfattr来与拓展属性交互。这个命令的风格来自linux中的getfattr(1) 和setfattr(1) 命令(t.dbdao.com)

  2.1 getfattr

  hadoop fs -getfattr [-R] -n name | -d [-e en]

  显示一个文件或目录的拓展属性名称或者值(如果有的话)

-R 递归列出所有文件和目录的熟悉
-n name 转储给定拓展属性名称的值
-d 转储相关路径下所有拓展属性的值
-e <encoding> 在检索值之后进行编码。有效的编码是“text”,“hex”和“base64”.值以text字符串编码被双引号分隔(“),十六进制编码和Base64分别导游0X和0s的前缀。
<path> 文件或目录

  2.2 setfattr

  hadoop fs -setfattr -n name [-v value] | -x name

  设置一个文件或目录的拓展属性名称和值(t.dbdao.com)

-n name 拓展属性名称
-v value 拓展属性的值。对于这个值有3种不同的编码。如果参数被双引号分隔,值在引号里面。如果参数是0x或0X前缀,那么是作为16进制数字。如果是0s或0S开头,那么是作为base64编码。
-x name 移除拓展属性
<path> 文件或目录

  3.配置选项

  HDFS能很好的支持拓展属性,不需要额外的配置。管理员可能潜在的对限制每个inode 的xattr数目和xattrs的大小感兴趣,因为xattrs会对一个inode增加磁盘和内存的消耗(t.dbdao.com)。

  dfs.namenode.xattrs.enabled

  是否在namenode上启用拓展属性。默认是启用的

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

  每个inode中最多拓展属性的数目。默认值是32

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

  拓展属性的名称和值的联合最大大小(byte)。默认限制是 16384 bytes

  本文固定链接:http://t.dbdao.com/archives/hdfs-extended-attributes.html

 

  原文地址:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款