Hadoop and MapR

 

hadoop fs and hadoop dfs command

StackOverflow - Difference between “hadoop fs” and “hdfs dfs”

hadoop fs <args>

fs 处理通用文件系统相关操作,它可以指向任何文件系统,因此,当处理不同的文件系统时,如 Local FS、HDFS、(S)FTP、S3 等,可以使用它。

hadoop dfs <args>

dfs 特定于 HDFS,适用于与 HDFS 相关的操作。该命令已被弃用,应该使用 hdfs dfs 代替。

hdfs dfs <args>

hadoop dfs 相同,即适用于与 HDFS 相关的所有操作,并且是推荐的命令。因此,即使使用 hadoop dfs,系统也会查找 hdfs 并将命令委托给 hdfs dfs

  • hdfs command guide

hadoop mfs command

hadoop mfs <args>

hadoop mfs 命令可以显示目录信息和内容,创建符号链接和硬链接,设置、获取和删除文件和目录的访问控制表达式 (Access Control Expression, ACE),设置目录的压缩选项和块大小。

hadoop mfs command example

hadoop mfs -ls <path>

列出由 <path> 指定的目录中的文件。 hadoop mfs -ls 命令对应于标准 hadoop fs -ls 命令,但提供了以下附加信息:

  • Volume indicator v before POSIX mode bits
  • 每个文件使用的块
  • 每个块所在的服务器
  • 是否为每个文件启用压缩
  • 是否为每个文件启用加密
  • 是否为每个文件启用 (A) 或禁用 (U) 审核

如果指定的路径是卷 (Volume),则在 POSIX 模式位之前的给出的文件类型是 v

如果给定文件或目录设置了 ACE 和 POSIX 模式位,则模式位最后会有一个加号 (+),如果文件或目录上的 ACE 为空字符串,则没有加号。

hadoop mfs -getace [-R] <path>

返回给定文件或目录的访问权限,包括 POSIX 模式位和 ACE。当指定了 -R 时启用递归。

管理 MapR 文件和目录的 ACE

Access Control Expression (ACE) 允许为用户、组和角色的组合定义对文件和目录的访问控制 (白名单和黑名单)。如果未设置 ACE,则 POSIX 模式位用于控制对文件或目录的访问。

当设置 ACE 时,MapR 会设置或重置相应的 POSIX 模式位以匹配 ACE 授予的访问权限。

  • 如果同时设置了 ACE 和 POSIX 模式位,则使用 ACE 或 POSIX 模式位授予访问权限。
  • 如果未设置 ACE,则使用 POSIX 模式位授予访问权限。
  • 如果 ACE 和 POSIX 模式位均未设置,则拒绝访问。

文件或目录的 owner (以及 mapr 和 root 用户) 可以使用 hadoop mfs 命令设置、修改和删除该文件或目录的 ACE。

设置 ACE 后,默认情况下也会设置相应的 POSIX 模式位。Ownerowning group 的 POSIX 模式位会通过相应的 ACE 推导得出。仅当给出 "p" 作为 ACE 的值时,才会设置 others 的 POSIX 模式位。

Type ACE POSIX Mode Bits
File readfile r
File writefile w
File executefile x
Directory readdir r
Directory addchild w
Directory deletechild w
Directory lookupdir x

注意:使用 chmod 更改 POSIX 模式位不会更改相应的 ACE 设置,并且可能会导致权限冲突。

可以在目录上同时设置文件和目录 ACE,但只有目录 ACE 用于确定对目录的访问。目录上的文件 ACE 用作该目录下新建文件的默认 ACE 设置。

默认情况下,当在父目录上设置 ACE 时:

  • 该父目录下现有文件和子目录的权限保持不变。
  • 该父目录下的新建文件继承父目录的文件 ACE 和相应的 POSIX 模式位。否则,新建文件将使用默认 ACE,即空字符串 (""),表示没有人有权读、写或执行该文件,POSIX 模式位以传统方式在文件上设置。
  • 该父目录下的新建子目录从父目录继承目录和文件 ACE 以及相应的 POSIX 模式位。