Optimización del uso de servicio - Amazon Athena

Optimización del uso de servicio

Entre las consideraciones por servicio se incluyen la cantidad de cargas de trabajo que se ejecutan por cuenta, las cuotas de servicio no solo para Athena, sino también para todos los servicios, y pensar en cómo reducir los errores de “falta de recursos”.

Ejecución de una carga de trabajo por cuenta para evitar los límites de las cuotas de servicio

Athena aplica cuotas para métricas como el tiempo de ejecución de las consultas, el número de consultas simultáneas en una cuenta y las tasas de solicitudes de API. Para obtener más información acerca de estas cuotas, consulte Service Quotas. Si se superan estas cuotas, se produce un error en una consulta, ya sea al enviarla o durante la ejecución.

Muchos de los consejos de optimización del rendimiento de esta página pueden ayudar a reducir el tiempo de ejecución de las consultas. La optimización libera capacidad para que pueda ejecutar más consultas dentro de la cuota de simultaneidad y evita que las consultas se cancelen por ejecutarse durante demasiado tiempo.

Las cuotas del número de consultas y solicitudes de API simultáneas son por Cuenta de AWS y Región de AWS. Recomendamos ejecutar una carga de trabajo por Cuenta de AWS (o utilizar reservas de capacidad aprovisionadas independientes) para evitar que las cargas de trabajo compitan por la misma cuota.

Si se ejecutan dos cargas de trabajo en la misma cuenta, una de las cargas de trabajo puede ejecutar una ráfaga de consultas. Esto puede provocar que la carga de trabajo restante se limite o impida la ejecución de consultas. Para evitarlo, puede mover las cargas de trabajo a cuentas independientes a fin de asignar a cada carga de trabajo su propia cuota de simultaneidad. Al crear una reserva de capacidad aprovisionada para una o ambas cargas de trabajo, se logra el mismo objetivo.

Consideración de las cuotas en otros servicios

Cuando Athena ejecuta una consulta, puede llamar a otros servicios que imponen cuotas. Durante la ejecución de la consulta, Athena puede realizar llamadas a la API de AWS Glue Data Catalog, Amazon S3 y otros servicios de AWS, como IAM y AWS KMS. Si se utilizan consultas federadas, Athena también llama a AWS Lambda. Todos estos servicios tienen sus propios límites y cuotas que pueden superarse. Cuando la ejecución de una consulta detecta errores de estos servicios, se produce un error e incluye el error del servicio de origen. Los errores recuperables se vuelven a intentar, pero las consultas pueden seguir fallando si el problema no se resuelve a tiempo. Asegúrese de leer detenidamente los mensajes de error para determinar si provienen de Athena o de otro servicio. En esta sección de ajuste del rendimiento se describen algunos de los errores más pertinentes.

Para obtener más información sobre cómo solucionar los errores relacionados con las cuotas de servicio de Amazon S3, consulte Cómo evitar tener demasiados archivos más adelante en este documento. Para obtener más información sobre la optimización del rendimiento de Amazon S3, consulte Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3 en la Guía del usuario de Amazon S3.

Reducción de los errores de “falta de recursos”

Athena ejecuta las consultas en un motor de consultas distribuido. Al enviar una consulta, el planificador de consultas del motor de Athena calcula la capacidad de procesamiento necesaria para ejecutar la consulta y prepara un clúster de nodos de computación en consecuencia. Algunas consultas, como las consultas DDL, se ejecutan en un solo nodo. Las consultas complejas sobre conjuntos de datos de gran tamaño se ejecutan en clústeres mucho más grandes. Los nodos son uniformes y tienen las mismas configuraciones de disco, CPU y memoria. Athena escala horizontalmente, no verticalmente, para procesar consultas más exigentes.

A veces, las demandas de una consulta superan los recursos disponibles para el clúster que ejecuta la consulta. Cuando esto ocurre, la consulta genera el error La consulta agotó los recursos con este factor de escala.

El recurso que se agota con más frecuencia es la memoria, pero en raras ocasiones también puede ser el espacio en disco. Los errores de memoria suelen producirse cuando el motor ejecuta una función de unión o ventana, pero también pueden producirse en distintos recuentos y agregaciones.

Aunque una consulta falle una vez y muestre el error de “falta de recursos”, es posible que se ejecute correctamente cuando se vuelva a ejecutar. La ejecución de la consulta no es determinista. Factores como el tiempo que se tarda en cargar los datos y la forma en que se distribuyen los conjuntos de datos intermedios en los nodos pueden provocar un uso diferente de los recursos. Imagine una consulta que une dos tablas y presenta un gran sesgo en la distribución de los valores de la condición de unión. Una consulta de este tipo puede funcionar correctamente la mayoría de las veces, pero en ocasiones falla cuando los valores más comunes terminan siendo procesados por el mismo nodo.

Para evitar que las consultas superen los recursos disponibles, utilice los consejos de ajuste de rendimiento que se mencionan en este documento. Para obtener consejos sobre cómo optimizar las consultas que agotan los recursos disponibles, consulte Optimización de combinaciones, Reduzca el alcance de las funciones de la ventana o quítelas y Optimización de las consultas mediante aproximaciones.