
El problema
Estoy intentando instalar Spark en el clúster de Hadoop. Instalé y probé Hadoop. Puedo explorar HDFS y ejecutar el ejemplo de MapReduce. Sin embargo, cuando intenté instalar Spark, no puedo ejecutarlo porque no se inicia con EOFException.
Información del sistema:
- Linux rocoso 8.8
- Núcleo 4.18.0
- hadoop-3.3.6
- spark-3.5.0-bin-sin-hadoop
Configuración:
- node32.cluster - nodo maestro
- node[33-35].cluster - HDFS y nodos de computación
Notas
- Tengo directorios NFS
/opt/
con configuración de Hadoop y Spark y/home
los comparto en todos los nodos, por lo que estoy seguro de que la configuración es la misma. - Tengo usuario
hadoop:hadoop
en todos los nodos.
configuración de hadoop
sitio-core.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node32.cluster:10000</value>
</property>
</configuration>
hdfs-sitio.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/mnt/hadoop/data/name_node</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/mnt/hadoop/data/data_node</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
sitio-mapred.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>
sitio-hilado.xml
<configuration>
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node32</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
<value>true</value>
</property>
</configuration>
Configuración de chispa
spark-defaults.conf
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node32.cluster:9000/spark-logs
spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider
spark.history.fs.logDirectory hdfs://node32.cluster:9000/spark-logs
spark.history.fs.update.interval 10s
spark.history.ui.port 18
chispa-env.sh
export SPARK_DIST_CLASSPATH="$(hadoop classpath)"
Ambiente
export HADOOP_HOME="/opt/hadoop-3.3.6"
export HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop"
export SPARK_HOME="/opt/spark-3.5.0-bin-without-hadoop"
export LD_LIBRARY_PATH="$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH"
Corriendo y problema
$HADOOP_HOME/sbin/start-all.sh
Resultado JPS en el maestro
4069901 ResourceManager
4077965 Master
4068697 SecondaryNameNode
4078614 Worker
4088135 Jps
4067905 NameNode
Resultado JPS en otros nodos
3350467 NodeManager
3357158 Jps
3349966 DataNode
Ejecutar ejemplo
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--num-executors 1 \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.5.0.jar
Registros de errores del nodo
02:41:16.548 [Driver] ERROR org.apache.spark.SparkContext - Error initializing SparkContext.
java.io.IOException: DestHost:destPort node32.cluster:9000 , LocalHost:localPort node34/192.168.100.34:0. Failed on local exception: java.io.IOException: java.io.EOFException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_392]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_392]
...
Ejecute Spark-Shell con el mismo resultado.
spark-shell
Registro de errores
02:47:31.499 [main] ERROR org.apache.spark.SparkContext - Error initializing SparkContext.
java.io.EOFException: End of File Exception between local host is: "node32/192.168.100.32"; destination host is: "node32.cluster":9000; : java.io.EOFException; For more details see: http://wiki.apache.org/hadoop/EOFException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_392]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_392]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_392]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_392]
...
Vi la wiki, pero no pude entender cuál es exactamente la causa raíz.
Conclusión
¿Alguien podría ayudar con este problema?