java - started - scala apache
Ejecutando un Job en Spark 0.9.0 arroja un error (7)
Parece que Spark Master no puede asignar ningún trabajador para esta tarea. O bien los trabajadores no han comenzado o están todos ocupados.
Compruebe Spark UI en el nodo maestro (puerto especificado por SPARK_MASTER_WEBUI_PORT
en spark-env.sh
, 8080 de manera predeterminada). Debe tener un aspecto como este:
Para que el clúster funcione correctamente:
- Debe haber algunos trabajadores con estado "Alive"
- Debe haber algunos núcleos disponibles (por ejemplo, si todos los núcleos están ocupados con la tarea congelada, el clúster no aceptará nuevas tareas)
- Debe haber suficiente memoria disponible
Tengo un clúster Apache Spark 0.9.0 instalado en el que intento implementar un código que lee un archivo de HDFS. Este fragmento de código arroja una advertencia y, finalmente, el trabajo falla. Aquí está el código
/**
* running the code would fail
* with a warning
* Initial job has not accepted any resources; check your cluster UI to ensure that
* workers are registered and have sufficient memory
*/
object Main extends App {
val sconf = new SparkConf()
.setMaster("spark://labscs1:7077")
.setAppName("spark scala")
val sctx = new SparkContext(sconf)
sctx.parallelize(1 to 100).count
}
El siguiente es el mensaje de ADVERTENCIA
El trabajo inicial no ha aceptado ningún recurso; verifique la UI del clúster para asegurarse de que los trabajadores estén registrados y tengan suficiente memoria
cómo deshacerse de esto o me faltan algunas configuraciones.
Usted obtiene esto cuando el número de núcleos o la cantidad de RAM (por nodo) que solicita mediante la configuración de spark.cores.max
y spark.executor.memory
resp ''excede lo que está disponible. Por lo tanto, incluso si nadie más está utilizando el clúster y usted especifica que desea usar, digamos 100 GB de RAM por nodo, pero sus nodos solo pueden admitir 90 GB, entonces obtendrá este mensaje de error.
Para ser justos, el mensaje es vago en esta situación, sería más útil si dijera que excede el máximo.
Debe especificar la SPARK_HOME correcta y la dirección IP de su programa de controlador en caso de que Spark no pueda ubicar su servidor Netty jar. Tenga en cuenta que su maestro Spark debe escuchar la dirección IP correcta que usted supone que debe usar. Esto puede hacerse configurando SPARK_MASTER_IP = yourIP en el archivo spark-env.sh.
val conf = new SparkConf()
.setAppName("test")
.setMaster("spark://yourSparkMaster:7077")
.setSparkHome("YourSparkHomeDir")
.set("spark.driver.host", "YourIPAddr")
También asegúrese de que sus trabajadores de chispa puedan comunicarse en ambos sentidos con el conductor. Compruebe si hay firewalls, etc.
Compruebe si hay errores en relación con el nombre de host, la dirección IP y el loopback. Asegúrese de establecer SPARK_LOCAL_IP
y SPARK_MASTER_IP
.
Tuve este problema exacto. Tenía un clúster Spark simple de 1 nodo y recibía este error cuando intentaba ejecutar mi aplicación Spark.
Repasé algunas de las sugerencias anteriores y fue cuando traté de ejecutar el shell Spark contra el clúster y no ser capaz de ver esto en la interfaz de usuario que sospeché que mi clúster no estaba funcionando correctamente.
En mi archivo hosts tuve una entrada, digamos SparkNode
, que hacía referencia a la dirección IP correcta.
conf/spark-env.sh
puse la dirección IP incorrecta en el archivo conf/spark-env.sh
contra la variable SPARK_MASTER_IP
. Cambié esto a SparkNode
y también cambié SPARK_LOCAL_IP
para apuntar a SparkNode
.
Para probar esto abrí la interfaz de usuario usando SparkNode:7077
en el navegador y pude ver una instancia de Spark en ejecución.
Luego usé la sugerencia de Wildfires de ejecutar el shell Spark, de la siguiente manera:
MASTER=spark://SparkNode:7077 bin/spark-shell
Volviendo a la interfaz de usuario, ahora podía ver la ejecución de la aplicación Spark Shell, que antes no podía.
Así que salí del shell Spark y ejecuté mi aplicación usando Spark Submit y ahora funciona correctamente.
Definitivamente vale la pena revisar todas sus entradas de IP y host, esta fue la causa de mi problema.
Tuve un problema similar El trabajo inicial no ha aceptado ningún recurso, lo solucioné especificando la URL de descarga correcta en spark-env.sh o instalando chispa en todos los esclavos.
exportar SPARK_EXECUTOR_URI = http://mirror.fibergrid.in/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
El trabajo inicial no ha aceptado ningún recurso; verifique la UI del clúster para asegurarse de que los trabajadores estén registrados y tengan suficiente memoria