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”.

Cómo operar cargas de trabajo múltiples dentro de la misma cuenta

Athena utiliza cuotas para limitar la simultaneidad de consultas y las tasas de solicitudes de API a nivel de cuenta. Superar estas cuotas puede provocar que se produzcan errores en las consultas durante su ejecución o en el momento de su envío. Para obtener más información acerca de estas cuotas, consulte Service Quotas.

Si opera varias cargas de trabajo dentro de la misma cuenta de AWS, estas competirán por la misma cuota a nivel de cuenta. Por ejemplo, si una carga de trabajo experimenta un aumento inesperado de consultas, es posible que se produzca una limitación en el envío de consultas o un aumento en los tiempos de espera.

Recomendamos utilizar CloudWatch para supervisar el uso del servicio mediante gráficos y paneles. También puede configurar alarmas de CloudWatch que avisen cuando su uso se acerque a la cuota del servicio para consultas simultáneas, con lo cual podrá tomar medidas antes de alcanzar los límites de la cuota. Para obtener más información, consulte Supervisión de las métricas de uso de Athena con CloudWatch.

Para controlar la simultaneidad de las consultas y aislar las cargas de trabajo dentro de la cuenta, utilice las reservas de capacidad. Las reservas de capacidad proporcionan capacidad dedicada para el procesamiento de consultas dentro de una sola cuenta. La capacidad se mide en unidades de procesamiento de datos (DPU) y se puede agregar o eliminar para aumentar o disminuir la simultaneidad de las consultas, respectivamente. Las reservas de capacidad permiten aislar las cargas de trabajo entre sí dentro de la cuenta. Esto se consigue al asignar capacidad a uno o más grupos de trabajo. Para obtener más información, consulte Administración de la capacidad de procesamiento de consultas.

Aunque podría ser útil separar las cargas de trabajo en diferentes cuentas de AWS por motivos de organización (como aislar el desarrollo de los entornos de producción), este enfoque no ofrece una forma escalable de aumentar la simultaneidad de las consultas. En su lugar, utilice las reservas de capacidad para administrar y escalar las necesidades de procesamiento de consultas dentro de una sola cuenta.

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.