Prácticas recomendadas
Utilice el siguiente conjunto de directrices recomendadas al suministrar y gestionar las instancias sin servidor y al ejecutar aplicaciones Spark.
| Práctica recomendada | Descripción | Enlace de referencia |
|---|---|---|
| Utilice instancias de servicio de IBM Analytics Engine independientes para los entornos de desarrollo y producción. | Esta es una buena práctica general. Al crear instancias IBM Analytics Engine independientes para distintos entornos, puede probar cualquier configuración y cambios de código antes de aplicarlos en la instancia de producción. | N/D |
| Actualización a la última versión de Spark | A medida que se publican las versiones de Spark de código abierto, están disponibles en IBM Analytics Engine después de un intervalo de tiempo necesario para las pruebas internas. Tenga cuidado con el anuncio de una nueva versión de Spark en la sección Notas del release y actualice el tiempo de ejecución de la instancia para mover las aplicaciones al tiempo de ejecución de Spark más reciente. Los tiempos de ejecución más antiguos están en desuso y finalmente se eliminan a medida que se publican las versiones más recientes. Asegúrese de probar las aplicaciones en el nuevo tiempo de ejecución antes de realizar cambios en las instancias de producción. | |
| Otorgar acceso basado en roles | Debe otorgar acceso basado en roles a todos los usuarios en las instancias de IBM Analytics Engine en función de sus requisitos. Por ejemplo, solo el equipo de automatización debe tener permisos para enviar aplicaciones porque tiene acceso a secretos y el equipo de DevOps sólo debe poder ver la lista de todas las aplicaciones y sus estados. | |
| Elegir la configuración adecuada de IBM Cloud Object Storage |
|
|
| Utilizar puntos finales privados para el almacén de metadatos Hive externo | Si utiliza Spark SQL y desea utilizar un almacén de metadatos externo como, por ejemplo, utilizar IBM Cloud Databases for PostgreSQL como almacén de metadatos Hive, debe utilizar el punto final privado para la conexión de base de datos para obtener un mejor rendimiento y un ahorro de costes. | |
| Ejecución de aplicaciones con sobrecompromiso de recursos | Hay una cuota asociada con cada instancia de Analytics Engine Serverless. Cuando se envían solicitudes en una instancia, se asignan recursos de la cuota de instancia. Si una aplicación solicita recursos más allá de la cuota disponible, la aplicación no se iniciará o se ejecutará con menos de los recursos solicitados, lo que puede hacer que la aplicación se ejecute más lento de lo esperado o, en algunos casos, que la aplicación falle. Siempre debe supervisar el consumo de recursos actual en una instancia para asegurarse de que las aplicaciones se ejecutan cómodamente dentro de los límites determinados. Puede ajustar los límites a través de una incidencia de soporte si es necesario. | |
| Asignación estática de recursos frente al escalado automático | Al enviar aplicaciones, puede especificar el número de ejecutores por adelantado (asignación estática) o utilizar la opción de escalado automático (asignación dinámica). Antes de decidir si desea utilizar la asignación estática o el escalado
automático, es posible que desee ejecutar algunas pruebas de evaluación comparativa variando diferentes conjuntos de datos con el escalado estático y el escalado automático para encontrar la configuración correcta. Consideraciones generales: -Si conoce el número de recursos (núcleos y memoria) que necesita la aplicación y no varía en las distintas etapas de la ejecución de la aplicación, se recomienda asignar recursos estáticos para obtener un mejor rendimiento. -Si desea utilizar un recurso optimizado, puede optar por el escalado automático de los ejecutores donde se asignan los ejecutores en función de la demanda real de la aplicación. Tenga en cuenta que puede haber un ligero retardo asociado al utilizar el escalado automático en las aplicaciones. |
|
| Habilitar y ajustar el registro de reenvío | -Habilitar el registro de reenvío para la instancia de servicio para ayudar a resolver problemas, mostrar el progreso e imprimir o mostrar las salidas de las aplicaciones. Tenga en cuenta que el reenvío de registros incurre en un coste basado
en la cantidad de registros reenviados o retenidos en la instancia de IBM Log Analysis. En función de su caso de uso y necesidad, debe decidir los valores óptimos. -Cuando habilita el reenvío de registros utilizando la API predeterminada, sólo se habilitan los registros del controlador. Si también necesita registros de ejecutor, por ejemplo, si hay errores que sólo vería en ejecutores, debe personalizar el registro para habilitar también el registro de ejecutor. Los registros del ejecutor pueden llegar a ser muy grandes, por lo que debe equilibrar las opciones para optimizar la cantidad de registros que se reenvían a la instancia de registro frente a la información que se obtiene en los registros para la resolución de problemas. -Siga las prácticas recomendadas de IBM Log Analysis al elegir las técnicas de configuración y búsqueda correctas. Por ejemplo, es posible que desee configurar el plan de instancia de IBM Log Analysis para una búsqueda de 7 días con el archivado de registros en IBM Cloud Object Storage para ahorrar en costes. Consulte también la documentación de IBM Log Analysis para obtener técnicas sobre la búsqueda de registros de su interés basándose en palabras clave, punto en el tiempo, etc. |
|
| Personalizar la instancia de servicio | -Es posible que tenga que personalizar la instancia de servicio para incorporar paquetes Python o conda que no estén preinstalados, o incorporar algunos archivos (certificados o archivos de configuración) que se van a poner a disposición
de las aplicaciones Spark. En función de sus necesidades, personalice la instancia utilizando conjuntos de bibliotecas y utilice estos conjuntos de bibliotecas al enviar aplicaciones. -El tamaño del conjunto de bibliotecas tiene relación con el tiempo de inicio de la aplicación y el tiempo de inicio del ejecutor (cuando se escalan automáticamente las aplicaciones). Tenga en cuenta también que hay un límite superior para el tamaño de un conjunto de bibliotecas, es decir, 2 GB. Por lo tanto, si distintas aplicaciones necesitan conjuntos de bibliotecas diferentes, es mejor que utilice conjuntos de bibliotecas separados, para que se puedan especificar individualmente en el momento en que se envía la aplicación. -Utilice la personalización sólo para incorporar archivos que no puedan ser traídos por los parámetros de detalles de la aplicación. Consulte Parámetros para enviar aplicaciones Spark. Debe utilizar las opciones de parámetro equivalentes de spark-submit estándar como, por ejemplo, las opciones files, jars, packages y pyFiles si se ajusta a su caso de uso. Solo si necesita
archivos que no se ajustan a ninguna de estas categorías, por ejemplo, un certificado autofirmado, un archivo de configuración JAAS o un archivo .so, debe utilizar la opción "personalización para descarga de archivos". |
|
| Aplicar filtros al recuperar la lista de aplicaciones | Cuando necesite recuperar la lista de aplicaciones en la interfaz de usuario o utilizando la API o la CLI, es mejor aplicar los filtros adecuados y recuperar el conjunto que necesita. | |
| Utilizar otros servicios o herramientas para las funciones de soporte | Aparte de utilizar una instancia de IBM Log Analysis y IBM Cloud Object Storage y en función de su caso de uso, es posible que desee utilizar otras herramientas y servicios de soporte. Por ejemplo, puede utilizar Apache Airflow (gestionado por el usuario) para orquestar, planificar y automatizar las aplicaciones. También puede utilizar IBM Secrets Manager para almacenar los secretos necesarios para las aplicaciones y utilizar los scripts de automatización para leer los secretos de Secrets Manager antes de enviar las aplicaciones. También puede ser creativo con los argumentos de la aplicación, pasando una señal necesaria para leer los secretos necesarios desde Secrets Manager directamente desde la aplicación. | |
| Utilizar instancias en regiones alternativas para la copia de seguridad y la recuperación tras desastre | Actualmente, se pueden crear instancias sin servidor de IBM Analytics Engine en dos regiones, es decir, Dallas (us-south) y Frankfurt (eu-de). Aunque es aconsejable crear las instancias en la misma región donde
se encuentran los datos, siempre es útil crear una instancia de copia de seguridad en una región alternativa con el mismo conjunto de configuraciones que la instancia primaria, en caso de que la instancia primaria deje de estar disponible
o no se pueda utilizar. Las automatizaciones deben habilitar la conmutación de envíos de aplicaciones entre las dos regiones si es necesario. |
N/D |
| Utilizar grupos separados y credenciales de servicio para archivos de aplicación, archivos de datos e instancia de inicio | Utilice el principio de "separación de preocupaciones" para distinguir el acceso entre distintos recursos. -No almacene datos o archivos de aplicación en el grupo de instancia de inicio. -Utilice grupos separados para datos y archivos de aplicación. -Utilice credenciales de acceso separadas (basadas en clave de IAM) con acceso restringido al grupo para archivos de aplicación y el grupo que contiene los datos. |
|
| Las aplicaciones deben ejecutarse en 72 horas | Hay un límite en el número de horas que una aplicación o kernel puede ejecutar. Para la aplicación de parches de seguridad y conformidad, todos los tiempos de ejecución que se ejecutan durante más de 72 horas se detienen. Si tiene una aplicación grande, divida la aplicación en fragmentos más pequeños que se ejecutarán en 72 horas. Si está ejecutando aplicaciones de modalidad continua de Spark, asegúrese de que configura los puntos de comprobación y que tiene la supervisión en su lugar para reiniciar las aplicaciones si se detienen. | |
| Iniciar y detener historial de Spark sólo cuando sea necesario | Detenga siempre el servidor de historial de Spark cuando ya no necesite utilizarlo. Tenga en cuenta que el servidor de historial de Spark consume recursos de CPU y memoria continuamente mientras se inicia su estado. |