instalar - Error de instalación/instalación de Hadoop en Windows
hadoop windows (2)
Estoy intentando instalar Apache Hadoop 2.7.1 en Windows x64 (8.1 y Server 2012 R2), pero estoy fallando en el objetivo:
[INFO] Apache Hadoop Common ............................... FAILURE [ 37.925 s]
En los últimos días, creo que seguí los pasos de todos los tutoriales, como HadoopOnWindows , o este . Hice todos los requisitos previos, pero como busqué en Google, los más relevantes para mi problema son los siguientes:
- Establezca la ruta a MSBuild.exe como: C: / Windows / Microsoft.NET / Framework64 / v4.0.30319; en el camino
- Establecer ruta a CMake
- Instale Microsoft SDK 7.1 y ejecute con su Microsoft SDK 7.1 CMD
- Intenté construir: hadoop-common / src / main / winutils / libwinutils.sln y hadoop-common / src / main / winutils / winutils.sln con Visual Studio 2013, pero la creación falla debido a errores de compilación. Visual Studio 2010 ni siquiera quiere abrirlos. No sé cómo corregir los errores de compilación (en caso de que este sea el problema)
Otra persona, problema similar
Algunos de los temas similares que estoy siguiendo son estos: uno , dos , tres , cuatro . Intenté principalmente todas las sugerencias, pero aún se rompe.
Error
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:11 min
[INFO] Finished at: 2015-07-08T15:18:29+02:00
[INFO] Final Memory: 69M/269M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c
ompile-ms-winutils) on project hadoop-common: Command execution failed. Process
exited with an error: 1 (Exit value: 1) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :hadoop-common
Ayuda
No tengo idea de qué hacer a continuación, siento que intenté todo. Ayúdeme a resolver este error y continúe con la instalación de Hadoop en Windows.
ACTUALIZACIÓN 1 Al examinar la pila de errores más de cerca, vi que no se encontró el archivo Microsoft.Cpp.props . Además, faltaba toda la carpeta Program Files (x86) / MSBuild . Por lo tanto, instalé Visual Studio 2010 y solucionó este problema.
Por supuesto, surge un nuevo problema. Puedo construir libwinutils , pero no winutils . Recibo muchos errores de LNK2001 :
Error 48 error LNK1120: 18 unresolved externals C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/x64/Release/winutils.exe winutils
Error 36 error LNK2001: unresolved external symbol BuildServiceSecurityDescriptor C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 32 error LNK2001: unresolved external symbol ChownImpl C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 40 error LNK2001: unresolved external symbol CreateEnvironmentBlock C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 44 error LNK2001: unresolved external symbol CreateLogonTokenForUser C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 41 error LNK2001: unresolved external symbol DestroyEnvironmentBlock C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 37 error LNK2001: unresolved external symbol EnableImpersonatePrivileges C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 34 error LNK2001: unresolved external symbol GetSecureJobObjectName C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 38 error LNK2001: unresolved external symbol KillTask C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 43 error LNK2001: unresolved external symbol LoadUserProfileForLogon C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 35 error LNK2001: unresolved external symbol LogDebugMessage C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 46 error LNK2001: unresolved external symbol LookupKerberosAuthenticationPackageId C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 31 error LNK2001: unresolved external symbol MIDL_user_allocate C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/hadoopwinutilsvc_s.obj winutils
Error 30 error LNK2001: unresolved external symbol MIDL_user_free C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/hadoopwinutilsvc_s.obj winutils
Error 47 error LNK2001: unresolved external symbol RegisterWithLsa C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 33 error LNK2001: unresolved external symbol SplitStringIgnoreSpaceW C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
Error 42 error LNK2001: unresolved external symbol UnloadProfileForLogon C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 45 error LNK2001: unresolved external symbol UnregisterWithLsa C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/task.obj winutils
Error 39 error LNK2001: unresolved external symbol wsceConfigRelativePath C:/hdfs/hadoop-common-project/hadoop-common/src/main/winutils/service.obj winutils
ACTUALIZACIÓN 2 La respuesta de @tiho resolvió el problema mencionado anteriormente (y estoy muy agradecido, ya que me tomó 4 días). Ahora, un nuevo problema nuevo, al objetivo:
[INFO] Apache Hadoop KMS .................................. FAILURE [ 1.531 s]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (dist) on project hadoop-kms: An Ant BuildException has occured: java.net.UnknownHostException: archive.apache.org
[ERROR] around Ant part ...<get dest="downloads/apache-tomcat-6.0.41.tar.gz" skipexisting="true" verbose="true" src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache tomcat-6.0.41.tar.gz"/>... @ 5:182 in C:/hadoop-2.7.1-src/hadoop-common project/hadoop-kms/target/antrun/build-main.xml: Unknown host archive.apache.org.
Encontré una falta de solución al problema anterior. Lo descargué manualmente, agregué a las carpetas:
C: / hadoop-2.7.1-src / hadoop-common-project / hadoop-kms / descargas
C: / hadoop-2.7.1-src / hadoop-hdfs-project / hadoop-hdfs-httpfs / descargas
y eliminado de los archivos:
C: / hadoop-2.7.1-src / hadoop-common-project / hadoop-kms / target / antrun / build-main.xml
C: / hadoop-2.7.1-src / hadoop-hdfs-project / hadoop-hdfs-httpfs / target / antrun / build-main.xml
las siguientes líneas de código:
<mkdir dir="downloads"/>
<get dest="downloads/apache-tomcat-6.0.41.tar.gz" skipexisting="true" verbose="true" src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz"/>
Tenga en cuenta que también estoy usando proxy, he configurado el proxy en settings.xml y configuré PATH en MAVEN_OPTS, como se sugiere en la misma respuesta de @tiho. ¿Este es el problema? además de las opciones sugeridas allí, también he agregado una contraseña y un nombre de usuario a MAVEN_OPTS.
Tenga en cuenta que puedo acceder a: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz utilizando mi navegador.
Pero todavía tengo curiosidad de cómo resolver el problema correctamente, porque este problema continúa apareciendo, y tengo que volver a hacer el mismo trabajo.
Actualización 3 Dicho esto, el momento más feliz de esta semana:
[INFO] ------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------
[INFO] Total time: 21:05 min
[INFO] Finished at: 2015-07-10T11:33:17+02:00
[INFO] Final Memory: 228M/672M
[INFO] ------------------------------------------------
Me tomó todo el día lograr construirlo ... Microsoft obviamente tiene muchos problemas con la compatibilidad con versiones anteriores. Ayudaría si Hadoop se mudara a una cadena de herramientas más reciente.
Estos son los pasos clave que tuve que realizar (más allá de los mencionados en el documento). Esto está utilizando el compilador SDK de Windows en lugar de VS 2010 (se supone que es posible con VS 2010 pero no lo he probado):
- Desinstalar Visual Studio 2013 (recomendaría desinstalar cualquier Visual Studio> = 2010) - esto es para deshacerse del error
MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault(''$(VCTargetsPath)'',''$(MSBuildExtensionsPath32)/Microsoft.Cpp/v4.0/V120/'))"
- Desinstalar Visual Studio C ++ 2010 Redistributable (x64 + x86) - para evitar un error al instalar Windows SDK 7.1
- Desinstale completamente .NET Framework 4.5 - para evitar el error durante la conversión a COFF: archivo no válido o corrupto
- Reiniciar
- Instalar .NET Framework 4.0
- Instalar Windows SDK 7.1
Agregué a mi PATH (en el shell de Windows SDK) la carpeta bin de mi instalación de Git (para herramientas GNU), la carpeta bin de CMake y la carpeta que contiene protoc.exe. Además (pero la mayoría de la gente no debería necesitarlo), tuve que configurar Maven para usar mi proxy HTTP, primero editando settings.xml
como se indica en la documentación de Maven, pero también definiendo la variable de entorno MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port
, ya que de lo contrario hubo un tiempo de espera en algún momento durante la compilación.
Tenga en cuenta que noté una buena cantidad de advertencias durante la compilación: sospecho que algunas de ellas se deben a que usan Java SDK 1.8 en lugar de 1.7. Sin embargo, después de ver finalmente un BUILD SUCCESS
, no tuve ganas de volver a intentarlo con 1.7.
Pude construirlo con la edición de comunidad de Visual Studio 2015.
Así es como lo he construido:
Mi entorno
Aquí está mi lista de compras:
- Windows 10
- JDK 1.8.0_51
- Maven 3.3.3
- Findbugs 1.3.9 (No he usado esto)
- ProtocolBuffer 2.5.0 (No elegí el último y más grande aquí - tiene que ser 2.5.0)
- CMake 3.3.0
- Visual Studio 2015 Community Edition
- GnuWin32 0.6.3 - un poco doloroso de instalar, pero también lo es cygwin
- zlib 1.2.8
- conexión a Internet
Variables de entorno del sistema de Windows
- JAVA_HOME = "C: / Archivos de programa / Java / jdk1.8.0_51"
- MAVEN_HOME = c: / apache-maven-3.3.3
(asegúrese de señalar lo anterior a su versión JDK y a la instalación de Maven)
Agregué lo siguiente a mi variable de ruta del entorno del sistema de Windows:
;% MAVEN_HOME% / bin; C: / Windows / Microsoft.NET / Framework64 / v4.0.30319; c: / zlib
La ruta extraña "C: / Windows / Microsoft.NET / Framework64 / v4.0.30319" es la ubicación de MSBuild.exe, que se requiere durante el proceso de compilación.
Protoc Buffers 2.5.0
Oh no, ¿otro build solo de Unix / Linux? Descargué el paquete de google denominado protoc-2.5.0-win32.zip. Luego extrajo el archivo binario (protoc.exe) a c: / windows / system32 - solo una forma perezosa de ponerlo en la ruta.
No estoy 100% seguro del efecto de tener un componente win32 para esta compilación win64. Pero: "Hadoop 0.23+ requiere que los búferes de protocolo JAR (protobufs.jar) estén en el classpath de los clientes y servidores; los binarios nativos son necesarios para compilar esto y versiones posteriores de Hadoop". - http://wiki.apache.org/hadoop/ProtocolBuffers .
Así que entiendo que el ejecutable de win32 se usa solo durante el proceso de compilación (el equivalente de jar debe estar empaquetado en la compilación).
Si se utiliza de alguna manera para compilar el código nativo, es posible que nos hayamos quedado con algunos punteros fuera de servicio. Volveré a esto cuando pueda.
Afinando las fuentes de Hadoop
Bueno, esto fue necesario para permitir construir para ejecutar. No debería afectar la calidad de la construcción en sí, pero tengamos en cuenta que el resultado es un uso no oficial, no compatible, en su propio hadoop de riesgo, destinado a un entorno de desarrollo.
Migración de proyectos VS
Los siguientes archivos deben abrirse con Visual Studio 2015:
/ hadoop-common-project / hadoop-common / src / main / winutils / winutils.vcxproj / hadoop-common-project / hadoop-common / src / main / native / native.vcxproj
Visual Studio se quejará de que sean de una versión anterior. Todo lo que tienes que hacer es guardar todo y cerrar.
Habilitación de la generación de proyectos cmake VS 2015 para hdfs
En la línea 441 de / hadoop-hdfs-project / hadoop-hdfs / pom.xml, edite el valor else como el siguiente:
<propiedad condicional = "generador" value = "Visual Studio 10" else = "Visual Studio 14 2015 Win64">
(el valor de "valor" se aplica a win32; es posible que desee editarlo si compila para win32).
Edificándolo
Debería intentar encontrar en Windows el "Símbolo del sistema de desarrollo para VS2015". Aún me pregunto qué tiene de especial esto, pero el hecho es que solo funcionará con eso.
Más variables de entorno Esas deberían hacerse en el símbolo del sistema:
establecer plataforma = x64
establecer ZLIB_HOME = C: / zlib / include (a diferencia de las instrucciones oficiales, esto debería apuntar a la carpeta de inclusión).
Finalmente construyéndolo
Vaya a la carpeta fuente de hadoop y emita:
paquete mvn -Pist, native-win -DskipTests -Dtar
¿Qué sigue?
Siga los documentos oficiales para configurar su instancia de hadoop y ponerla en funcionamiento.
Trataré de mantener un enlace con los archivos binarios en mi blog:
http://kplitzkahran.blogspot.co.uk/2015/08/hadoop-271-for-windows-10-binary-build.html