Saltar al contenido

Spark en Windows: ¿qué es exactamente winutils y por qué lo necesitamos?

Solución:

Sé de al menos un uso, es para ejecutar comandos de shell en el sistema operativo Windows. Lo puedes encontrar en org.apache.hadoop.util.Shell, otros módulos dependen de esta clase y usan sus métodos, por ejemplo getGetPermissionCommand() método:

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" };
}

Aunque la respuesta de Max cubre el lugar real al que se refiere. Permítanme darles una breve descripción de por qué lo necesitan en Windows:

De la propia página de Confluence de Hadoop:

Hadoop requiere bibliotecas nativas en Windows para funcionar correctamente, lo que incluye el acceso al sistema de archivos file: //, donde Hadoop usa algunas API de Windows para implementar permisos de acceso a archivos similares a posix.

Esto se implementa en HADOOP.DLL y WINUTILS.EXE.

En particular,% HADOOP_HOME% BIN WINUTILS.EXE debe ser localizable

Y creo que debería poder ejecutar Spark y Hadoop en Windows.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *