Problemas conocidos de clústeres de Apache Spark en HDInsight

En este documento se hace un seguimiento de todos los problemas conocidos de la versión preliminar pública de HDInsight Spark.

Sesión interactiva con pérdidas de Apache Livy

Cuando se reinicia Apache Livy (desde Apache Ambari o debido al reinicio de la máquina virtual del nodo principal 0) con una sesión interactiva aún activa, se pierde una sesión de trabajo interactiva. Como resultado, los nuevos trabajos se pueden detener en el estado Aceptado.

Mitigación:

Utilice el procedimiento siguiente para encontrar una solución para el problema:

  1. SSH en el nodo principal. Para más información, consulte Uso de SSH con HDInsight.

  2. Ejecute el siguiente comando para buscar los identificadores de aplicación de los trabajos interactivos iniciados mediante Livy.

    yarn application –list
    

    Los nombres de trabajo predeterminados serán Livy si se iniciaron con una sesión interactiva de Livy sin especificar ningún nombre. Para la sesión de Livy que inició Jupyter Notebook, el nombre del trabajo empieza por remotesparkmagics_*.

  3. Ejecute el comando siguiente para terminar esos trabajos.

    yarn application –kill <Application ID>
    

Los nuevos trabajos empezarán a ejecutarse.

No se ha iniciado el servidor de historial de Spark

El servidor de historial de Spark no se inicia automáticamente después de crear un clúster.

Mitigación:

Inicie el servidor de historial manualmente desde Ambari.

Problemas con permisos en el directorio de registros de Spark

hdiuser obtiene el siguiente error al enviar un trabajo mediante spark-submit:

java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)

Y no se escribe ningún registro del controlador.

Mitigación:

  1. Agregue hdiuser al grupo de Hadoop.
  2. Proporcione 777 permisos en /var/log/spark después de crear el clúster.
  3. Actualice la ubicación del registro spark con Ambari para que sea un directorio con 777 permisos.
  4. Ejecute spark-submit como sudo.

No se admite el conector Spark-Phoenix

Los clústeres de HDInsight Spark no son compatibles con el conector Spark-Phoenix.

Mitigación:

Debe usar el conector Spark-HBase en su lugar. Para instrucciones, consulte el artículo sobre el uso del conector Spark-HBase.

A continuación, se muestran algunos problemas conocidos relacionados con los cuadernos de Jupyter Notebook.

Cuadernos que tienen caracteres no ASCII en los nombres de archivo

No utilice caracteres que no sean ASCII en los nombres de archivo de los cuadernos de Jupyter. Si intenta cargar un archivo a través de la interfaz de usuario de Jupyter, que tiene un nombre de archivo que no es ASCII, se produce un error sin ningún mensaje. Jupyter no permite cargar el archivo, pero tampoco produce un error visible.

Error al cargar cuadernos con tamaños mayores

Es posible que aparezca un error Error loading notebook al cargar cuadernos de mayor tamaño.

Mitigación:

El hecho de recibir este error no implica que los datos estén dañados o perdidos. Los cuadernos siguen aún en el disco en /var/lib/jupytery se puede conectar mediante SSH al clúster para acceder ellos. Para más información, consulte Uso de SSH con HDInsight.

Cuando se haya conectado al clúster mediante SSH, puede copiar sus cuadernos desde el clúster en la máquina local (mediante SCP o WinSCP) como copia de seguridad para impedir la pérdida de datos importantes en el cuaderno. A continuación, puede aplicar túneles SSH al nodo principal del puerto 8001 para tener acceso a Jupyter sin pasar por la puerta de enlace. Desde ahí, puede borrar la salida del cuaderno y volver a guardarla para minimizar el tamaño de este.

Para evitar que este error ocurra en el futuro, debe seguir algunos procedimientos recomendados:

  • Es importante mantener reducido el tamaño del bloc de notas. Las salidas de los trabajos de Spark que se envían a Jupyter de vuelta se conservan en el bloc de notas. En general, con Jupyter no se recomienda ejecutar .collect() en RDD o tramas de datos de gran tamaño; en su lugar, si desea ojear el contenido de un RDD, considere la posibilidad de ejecutar .take() o .sample() para que la salida no sea demasiado grande.
  • Además, cuando guarde un bloc de notas, desactive todas las celdas de la salida para reducir el tamaño.

El primer inicio del cuaderno tarda más de lo esperado

La primera instrucción del cuaderno de Jupyter con la instrucción mágica de Spark podría tardar más de un minuto.

Explicación:

Esto sucede cuando se ejecuta la primera celda de código. En segundo plano se inicia la configuración de la sesión y se establecen los contextos de Spark, SQL y Hive. Una vez establecidos estos contextos, se ejecuta la primera instrucción y esto da la impresión de que la instrucción tardó mucho tiempo en completarse.

Tiempo de espera del cuaderno de Jupyter en la creación de la sesión

Cuando el clúster de Spark se queda sin recursos, el tiempo de espera de los kernels de Spark y Pyspark del cuaderno de Jupyter se agotan al intentar crear la sesión.

Mitigaciones:

  1. Libere algunos recursos del clúster Spark de la siguiente forma:

    • Detenga otros cuadernos de Spark en el menú Cerrar y detener o haga clic en Apagar en el explorador del cuaderno.
    • Detenga otras aplicaciones de Spark desde YARN.
  2. Reinicie el cuaderno que trataba de iniciar. Debe haber suficientes recursos para crear una sesión ahora.

Consulte también

Escenarios

Creación y ejecución de aplicaciones

Herramientas y extensiones

Administrar recursos