hadoop2.7.2学习笔记05-hadoop文件系统API定义-hadoop文件系统模型

来源:互联网 发布:tm域名商标骗局 编辑:程序博客网 时间:2024/06/05 05:03

  这一章继续用专业的符号语言说废话。。。

  1、路径和路径元素(paths and path elements)

  路径由路径元素组成,所有的路径包括到文件的路径、到目录的路径和到链接的路径。

  路径的元素不能是空字符串也不能是{"", ".", "..", "/"}

  路径的元素不能包含{'/', ':'}

  当路径元素无效时,需要抛出InvalidPathException。

 

  有效的路径元素:List[String]

  如果路径中的某个路径元素是被禁用的字符,那么整个路径将会是无效路径。用符号语言表示为

forall e in pe: not (e in {'/', ':'})not pe in {"", ".",  "..", "/"}

  有效的路径:List<PathElement>

  只有路径包含的所有路径元素都是有效元素,路径才是有效的。用符号语言表示为

def valid-path(pe): forall pe in Path: valid-path-element(pe)
  空数列表示的路径,[]是根路径,用字符串"/"表示

  方法parent(path:Path):Path返回父路径,该操作可用符号语言表示为

def parent(pe) : pe[0:-1]
  该操作的前提条件(preconditions)是

path != []


  文件名:路径->路径元素

  路径的最后一个路径元素叫做文件名

def filename(p) : p[-1]

  前提条件是

p != []

 

  childElements:(Path p,Path q):Path

  方法childElements:(Path p,Path q):Path返回路径p中接在路径q后面的所有路径元素

def childElements(p, q): p[len(q):]
  前提条件是:

# The path 'q' must be at the head of the path 'p'q == p[:len(q)]


  ancestors(Path):List[Path]

  将会返回路径的所有祖先路径。

  2、定义文件系统

  一个文件系统包含一个目录的集合,一个路径的字典和一个链接的字典(字典就是python中的dictionary)

(Directories:set[Path], Files:[Path:List[byte]], Symlinks:set[Path])
  访问方法返回文件系统的特定元素

def FS.Directories  = FS.Directoriesdef file(FS) = FS.Filesdef symlinks(FS) = FS.Symlinksdef filenames(FS) = keys(FS.Files)
  路径的集合限定了解析路径的方法和目录、链接

def paths(FS) = FS.Directories + filenames(FS) + FS.Symlinks)
  如果路径在这个集合中,那么它是存在的

def exists(FS, p) = p in paths(FS)
  根节点"/"必须存在

def isRoot(p) = p == ["/"].forall FS in FileSystems : ["/"] in FS.Directories
  路径可以指向一个目录

isDir(FS, p): p in FS.Directories
  文件系统中存在以目录为前缀的路径。

forall p in paths(FS) : isRoot(p) or isDir(FS, parent(p))
  目录可以有子节点

def children(FS, p) = {q for q in paths(FS) where parent(q) == p}
  路径D或它的祖先在路径P之下,则P是D的父辈

def isDescendant(P, D) = parent(D) == P where isDescendant(P, parent(D))
  路径P的子元素,是所有以它为前缀的路径的集合

def descendants(FS, D) = {p for p in paths(FS) where isDescendant(D, p)}
  路径可以指向文件,路径是key

def isFile(FS, p) =  p in FS.Files
  路径可以是一个链接

def isSymlink(FS, p) = p in symlinks(FS)
  路径的长度是它指向的数据的长度,如果是目录的话长度是0

  3、user home

  用户home目录是文件系统的一部分,它来自用户进程的userid

def getHomeDirectory(FS) : Path
  一个路径只能指向一个目标(目录、文件或链接)

FS.Directories  ^ keys(data(FS)) == {}FS.Directories  ^ symlinks(FS) == {}keys(data(FS))(FS) ^ symlinks(FS) == {}


0 0
原创粉丝点击