Мне любопытно! Насколько мне известно, HDFS требует, чтобы процессы datanode запускались, и именно поэтому он работает только на серверах. Spark может запускаться локально, но для этого нужен winutils.exe, который является компонентом Hadoop. Но что именно он делает? Как это, что я не могу запустить Hadoop в Windows, но я могу запустить Spark, который построен на Hadoop?Spark on Windows - Что такое winutils и зачем оно нам нужно?
3
A
ответ
4
Я знаю хотя бы одно использование, оно предназначено для запуска команд оболочки в ОС Windows. Вы можете найти его в 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" };
}
Смежные вопросы
- 1. Marshalling - что это такое и зачем оно нам нужно?
- 2. Что такое OWASP? зачем нам это нужно?
- 3. Что такое Clearcase Doctor и зачем нам это нужно?
- 4. Что такое VAPID и зачем оно полезно?
- 5. Что такое сервисное обнаружение и зачем оно вам нужно?
- 6. Что такое NPM и зачем оно мне нужно?
- 7. Что означает делегат? Зачем нам это нужно?
- 8. Что такое локальное хранилище данных? Зачем нам это нужно?
- 9. Что такое «::» и зачем оно полезно?
- 10. Что такое jquery noConflict, зачем нам это нужно?
- 11. Зачем нам нужно targetNamespace?
- 12. Powershell chmod on/tmp/hive для winutils и hadoop/spark
- 13. Зачем нам нужно remove_copy_if?
- 14. Что делает tf.app.flags? зачем нам это нужно?
- 15. Зачем нам нужно создавать макет?
- 16. Что такое сертификат CA и зачем он нам нужен?
- 17. Зачем нам нужно устанавливать SONAR_RUNNER_OPTS?
- 18. Что такое поле «Выравнивание» в двоичных форматах? Зачем это нужно?
- 19. Зачем нам нужно использовать flatMap?
- 20. Что такое функторы и зачем они нам нужны?
- 21. Зачем нам нужно преобразовать Теано?
- 22. Зачем нам нужно блокирование намерений?
- 23. Зачем нам нужно программирование RPC?
- 24. Зачем нам нужно устанавливать virtualenv и virtualenvwrapper
- 25. Зачем нам нужно использовать package.json?
- 26. Каково определение сокета, зачем оно нужно и как оно работает?
- 27. Зачем нам нужно «Set Variable»?
- 28. Зачем нам нужно Явное преобразование
- 29. Что такое обратные вызовы EJB и зачем они нам нужны?
- 30. Что такое объект-компаньон и зачем он нам нужен?
Среди других вещей, похоже, Спарк использует Hadoop, который вызывает команду Unix, такие как CHMOD для создания файлов и каталоги. – Rdesmond
Вы не можете полностью запустить Spark, если вы захватите дистрибутив Hadoop. Вы не можете читать и писать файлы без winutils. –
Да, Spark построен на Hadoop, поэтому имеет смысл использовать некоторые его компоненты. Кроме того, вы не можете выполнять определенные операции без winutils.exe, вопрос в основном касался того, что находится в этом winutils.exe? Какую цель он имеет? –