千家信息网

HDFS中exists函数的作用是什么

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这期内容当中小编将会给大家带来有关HDFS中exists函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。/***/public boolean exi
千家信息网最后更新 2024年11月26日HDFS中exists函数的作用是什么

这期内容当中小编将会给大家带来有关HDFS中exists函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

/**

*/

public boolean exists(String src) throws IOException {

return namesystem.exists(new UTF8(src));//直接调用namesystem.

}

那下面我们来看看namesystem是如何来判断的。

public boolean exists(UTF8 src) {

if (dir.getFile(src) != null || dir.isDir(src)) {

return true;//从这可以看到,要么确实存在,如果不存在且是目录也可以。

} else {

return false;

}

}

先分析getFile(...)函数。

-----------------------------------------

public Block[] getFile(UTF8 src) {

waitForReady();

synchronized (rootDir) {

INode targetNode = rootDir.getNode(src.toString());//获取节点

if (targetNode == null) {

return null;//节点不存在

} else {

return targetNode.blocks;//节点存在,返回文件块信息

}

}

}

----------继续分析getNode

INode getNode(String target) {

if (! target.startsWith("/") || target.length() == 0) {

return null;//路径是否规范

} else if (parent == null && "/".equals(target)) {

return this;//是否为根目录

} else {

Vector components = new Vector();

int start = 0;

int slashid = 0;

while (start < target.length() && (slashid = target.indexOf('/', start)) >= 0) {

components.add(target.substring(start, slashid));

start = slashid + 1;

}

if (start < target.length()) {

components.add(target.substring(start));

}

return getNode(components, 0);//开启递归查找模式

}

}

---------

INode getNode(Vector components, int index) {

if (! name.equals((String) components.elementAt(index))) {

return null;//当前INode的名字是否OK?

}

if (index == components.size()-1) {

return this;//已经到了最后一个item

}

// Check with children

INode child = (INode) children.get(components.elementAt(index+1));//根据文件名从children中查找对应INode,然后再递归查找

if (child == null) {

return null;

} else {

return child.getNode(components, index+1);

}

}

-------------好,然后分析isDir函数

public boolean isDir(UTF8 src) {

synchronized (rootDir) {

INode node = rootDir.getNode(normalizePath(src));

return node != null && node.isDir();

}

}

上述就是小编为大家分享的HDFS中exists函数的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0