gpt4 book ai didi

hadoop - Windows 上的 Spark - winutils 到底是什么,我们为什么需要它?

转载 作者:可可西里 更新时间:2023-11-01 14:16:59 27 4
gpt4 key购买 nike

我很好奇!据我所知,HDFS 需要数据节点进程才能运行,这就是它只在服务器上运行的原因。 Spark 可以在本地运行,但需要 winutils.exe,它是 Hadoop 的一个组件。但它到底做了什么?为什么我不能在 Windows 上运行 Hadoop,但是我可以运行基于 Hadoop 构建的 Spark?

最佳答案

我至少知道一种用法,它用于在 Windows 操作系统上运行 shell 命令。你可以在 org.apache.hadoop.util.Shell 中找到它,其他模块依赖于这个类并使用它的方法,例如 getGetPermissionCommand() 方法:

static final String WINUTILS_EXE = "winutils.exe";
...
static {
IOException ioe = null;
String path = null;
File file = null;
// invariant: either there's a valid file and path,
// or there is a cached IO exception.
if (WINDOWS) {
try {
file = getQualifiedBin(WINUTILS_EXE);
path = file.getCanonicalPath();
ioe = null;
} catch (IOException e) {
LOG.warn("Did not find {}: {}", WINUTILS_EXE, e);
// stack trace comes at debug level
LOG.debug("Failed to find " + WINUTILS_EXE, e);
file = null;
path = null;
ioe = e;
}
} else {
// on a non-windows system, the invariant is kept
// by adding an explicit exception.
ioe = new FileNotFoundException(E_NOT_A_WINDOWS_SYSTEM);
}
WINUTILS_PATH = path;
WINUTILS_FILE = file;

WINUTILS = path;
WINUTILS_FAILURE = ioe;
}
...
public static String getWinUtilsPath() {
if (WINUTILS_FAILURE == null) {
return WINUTILS_PATH;
} else {
throw new RuntimeException(WINUTILS_FAILURE.toString(),
WINUTILS_FAILURE);
}
}
...
public static String[] getGetPermissionCommand() {
return (WINDOWS) ? new String[] { getWinUtilsPath(), "ls", "-F" }
: new String[] { "/bin/ls", "-ld" };
}

关于hadoop - Windows 上的 Spark - winutils 到底是什么,我们为什么需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38233228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com