Para obtener capacidades similares a las de Amazon Timestream, considere Amazon Timestream LiveAnalytics para InfluxDB. Ofrece una ingesta de datos simplificada y tiempos de respuesta a las consultas en milisegundos de un solo dígito para realizar análisis en tiempo real. Obtenga más información aquí.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ingesta de datos desde Amazon S3 para la automatización de Timestream para InfluxDB
Una vez que la herramienta Timestream for LiveAnalytics Export complete el proceso de descarga, comienza el siguiente paso del proceso de automatización. Esta automatización usa las Herramientas de importación de InfluxDB
El flujo de trabajo para completar una migración se divide en cuatro etapas:
Descargue los datos con la herramienta Timestream para exportar. LiveAnalytics
Transformación de datos
: conversión de Timestream para LiveAnalytics datos al formato de protocolo de línea InfluxDB (según el esquema definido tras la evaluación de cardinalidad) mediante Amazon Athena. Ingesta de datos
: ingesta del conjunto de datos del protocolo de línea a su instancia de Timestream para InfluxDB. Validación
: si lo desea, puede validar que se hayan ingerido todos los puntos del protocolo de línea (requiere --add-validation-field truedurante el paso de transformación de datos).
Transformación de datos
Para la transformación de datos, desarrollamos un script para convertir Timestream para el formato de parquet de datos LiveAnalytics exportados al formato Line Protocol de InfluxDB mediante Amazon Athena. Amazon Athena ofrece un servicio de consultas sin servidor y una forma rentable de transformar grandes volúmenes de datos de serie temporal sin necesidad de recursos informáticos dedicados.
El script hace lo siguiente:
Carga el Timestream exportado para LiveAnalytics los datos de un bucket de Amazon S3 en una tabla de Amazon Athena.
Realiza el mapeo y la transformación de datos a partir de los datos almacenados en la tabla de Athena en el protocolo de línea y los almacena en el bucket de S3.
Mapeo de datos
La siguiente tabla muestra cómo se mapea el flujo temporal de los LiveAnalytics datos a los datos del protocolo de línea.
| Secuencia temporal de Concept LiveAnalytics | Concepto de protocolo de línea |
|---|---|
|
Etiqueta (opcional) |
|
Requisitos previos e instalación
Consulte las secciones de requisitos previos e instalación en el archivo README del script de transformación
Uso
Para transformar los datos almacenados en el bucket example_s3_bucket del Timestream de la tabla LiveAnalytics example_table en example_database, ejecute el siguiente comando:
python3 transform.py \ --database-name example_database \ --tables example_table \ --s3-bucket-path example_s3_bucket \ --add-validation-field false
Una vez completado el script,
En Athena, se creará la tabla example_database_example_table, que contiene Timestream para los datos. LiveAnalytics
En Athena, se creará la tabla lp_example_database_example_table, que contiene Timestream para los datos transformados en puntos de protocolo de línea. LiveAnalytics
En el bucket de S3 example_s3_bucket, dentro de la ruta
example_database/example_table/unload-<%Y-%m-%d-%H:%M:%S>/line-protocol-output, se almacenarán los datos del protocolo de línea.
Recomendaciones
Consulte el archivo README del script de transformación--dimensions-to-fields para cambiar determinadas dimensiones por campos.
Añadir un campo para la validación
Para obtener información sobre cómo añadir un campo para la validación, consulte la sección Cómo añadir un campo para la validación
Ingesta de datos en Timestream para InfluxDB
El script de ingesta de InfluxDB ingiere conjuntos de datos de protocolos de línea comprimidos en Timestream para InfluxDB. Un directorio que contiene archivos de protocolo de línea comprimidos gzip se transfiere como argumento de línea de comandos junto con el bucket de InfluxDB de destino de la ingesta. Este script se diseñó para ingerir varios archivos a la vez mediante el procesamiento múltiple para utilizar los recursos de InfluxDB y la máquina que ejecuta el script.
El script hace lo siguiente:
-
Extrae los archivos comprimidos y los ingiere en InfluxDB.
-
Implementa mecanismos de reintento y gestión de errores.
-
Hace un seguimiento de las ingestas correctas y fallidas para reanudarlas.
-
I/O Optimiza las operaciones al leer un conjunto de datos de protocolos de línea.
Requisitos previos e instalación
Consulte la sección Requisitos previos e instalación en el archivo README del script de ingestión.
Preparación de datos
Los scripts de transformación de datos generan los archivos de protocolo de línea comprimidos necesarios para la ingesta. Siga estos pasos para preparar los datos:
-
Configure una instancia EC2 con suficiente almacenamiento para guardar el conjunto de datos transformado.
-
Sincronice los datos transformados del bucket de S3 con su directorio local:
aws s3 sync \ s3://your-bucket-name/path/to/transformed/data \ ./data_directory -
Asegúrese de tener acceso de lectura a todos los archivos del directorio de datos.
-
Ejecute el siguiente script de ingesta para introducir datos en Timestream para InfluxDB.
Uso
python influxdb_ingestion.py <bucket_name> <data_directory> [options]
Uso básico
python influxdb_ingestion.py my_bucket ./data_files
Tasas de ingesta
Hemos realizado algunas pruebas para determinar las tasas de ingesta. Pruebas de ingesta mediante una instancia EC2 C5N.9XL, que ejecuta el script de ingesta con 10 procesos de trabajo e incorpora un protocolo de línea de aproximadamente 500 GB a instancias 8XL de Timestream para InfluxDB:
-
3000 IOPS y 15,86 GB/hora.
-
12 000 IOPS y 70,34 GB/hora.
-
16 000 IOPS y 71,28 GB/hora.
Recomendaciones
-
Use una instancia de EC2 con núcleos de CPU suficientes para administrar el procesamiento paralelo.
-
Asegúrese de que la instancia tenga suficiente espacio de almacenamiento para guardar todo el conjunto de datos transformado con espacio adicional para la extracción.
-
La cantidad de archivos extraídos a la vez es igual a la cantidad de procesos de trabajo configurados durante la ejecución del script.
-
-
Coloque la instancia de EC2 en la misma región y zona (si es posible) que su instancia de InfluxDB para minimizar la latencia.
-
Considere la posibilidad de usar tipos de instancias optimizados para las operaciones de red, por ejemplo, la C5N.
-
Si se requieren tasas de ingesta altas, se recomiendan al menos 12 000 IOPS para la instancia de Timestream para InfluxDB. Se pueden obtener optimizaciones adicionales si se aumenta el número de procesos de trabajo del script en función del tamaño de la instancia de Timestream para InfluxDB.
Para obtener más información, consulte el README