Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão simplificada de dados e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Ingestão de dados do Amazon S3 para o Timestream para automação do InfluxDB
Depois que a ferramenta Timestream for LiveAnalytics export concluir o processo de descarga, a próxima etapa do processo de automação será iniciada. Essa automação usa as ferramentas de importação do InfluxDB
O fluxo de trabalho para concluir uma migração é separado em quatro estágios:
Descarregue dados usando o Timestream para LiveAnalytics a ferramenta de exportação.
Transformação de dados
: conversão do Timestream para LiveAnalytics dados no formato de protocolo de linha InfluxDB (com base no esquema definido após a avaliação de cardinalidade) usando o Amazon Athena. Ingestão de dados: faça a ingestão
do conjunto de dados do protocolo de linha em sua instância Timestream for InfluxDB. Validação
: opcionalmente, você pode validar se cada ponto do protocolo de linha foi ingerido (necessário --add-validation-field true
durante a etapa de transformação de dados).
Transformação de dados
Para transformação de dados, desenvolvemos um script para converter o Timestream do formato de parquet de dados LiveAnalytics exportado no formato Line Protocol do InfluxDB usando o Amazon Athena. O Amazon Athena fornece um serviço de consulta sem servidor e uma forma econômica de transformar grandes volumes de dados de séries temporais sem exigir recursos computacionais dedicados.
O script faz o seguinte:
Carrega o Timestream exportado para LiveAnalytics dados de um bucket do Amazon S3 em uma tabela do Amazon Athena.
Executa o mapeamento e a transformação de dados dos dados armazenados na tabela do Athena em protocolo de linha e os armazena no bucket do S3.
Mapeamento de dados
A tabela a seguir mostra como o Timestream LiveAnalytics dos dados é mapeado para os dados do protocolo de linha.
Timestream for Concept LiveAnalytics | Conceito de protocolo de linha |
---|---|
Tag (opcional) |
|
Pré-requisitos e instalação
Consulte as seções Pré-requisitos e Instalação no README do script de transformação
Uso
Para transformar os dados armazenados no bucket example_s3_bucket do Timestream para a tabela LiveAnalytics example_table em example_database, execute o seguinte comando:
python3 transform.py \ --database-name example_database \ --tables example_table \ --s3-bucket-path example_s3_bucket \ --add-validation-field false
Depois que o script for concluído,
No Athena, a tabela example_database_example_table será criada, contendo Timestream para dados. LiveAnalytics
No Athena, a tabela lp_example_database_example_table será criada, contendo Timestream para dados transformados em pontos de protocolo de linha. LiveAnalytics
No bucket do S3 example_s3_bucket, dentro do caminho, os dados do protocolo de linha serão armazenados
example_database/example_table/unload-<%Y-%m-%d-%H:%M:%S>/line-protocol-output
.
Recomendações
Consulte o README do script de transformação--dimensions-to-fields
argumento para alterar dimensões específicas para campos.
Adicionando um campo para validação
Para obter informações sobre como adicionar um campo para validação, consulte a seção Adicionando um campo para validação
Ingestão de dados no Timestream para InfluxDB
O script de ingestão do InfluxDB ingere conjuntos de dados do protocolo de linha compactada no Timestream for InfluxDB. Um diretório contendo arquivos de protocolo de linha compactada gzip é passado como um argumento de linha de comando junto com o bucket do InfluxDB de destino de ingestão. Esse script foi projetado para ingerir vários arquivos ao mesmo tempo usando multiprocessamento para utilizar os recursos com o InfluxDB e a máquina que executa o script.
O script faz o seguinte:
-
Extrai arquivos compactados e os ingere no InfluxDB.
-
Implementa mecanismos de repetição e tratamento de erros.
-
Monitora as ingestões bem-sucedidas e malsucedidas para retomada.
-
Otimiza I/O as operações ao ler o conjunto de dados do protocolo de linha.
Pré-requisitos e instalação
Consulte a seção Pré-requisitos e instalação no README do script de ingestão em.
Preparação de dados
Os arquivos de protocolo de linha compactada necessários para a ingestão são gerados pelos scripts de transformação de dados. Siga estas etapas para preparar seus dados:
-
Configure uma EC2 instância com armazenamento suficiente para armazenar o conjunto de dados transformado.
-
Sincronize os dados transformados do bucket do S3 com seu diretório local:
aws s3 sync \ s3://your-bucket-name/path/to/transformed/data \ ./data_directory
-
Verifique se você tem acesso de leitura a todos os arquivos no diretório de dados.
-
Execute o seguinte script de ingestão para ingerir dados no Timestream for InfluxDB.
Uso
python influxdb_ingestion.py <bucket_name> <data_directory> [options]
Uso básico
python influxdb_ingestion.py my_bucket ./data_files
Taxas de ingestão
Fizemos alguns testes para as taxas de ingestão. Testes de ingestão usando uma EC2 instância C5N.9XL executando o script de ingestão com 10 trabalhadores e ingerindo o protocolo de linha de ~ 500 GB para 8XL Timestream para instâncias do InfluxDB:
-
3K IOPS 15,86 GB/hora.
-
IOPS de 12K 70,34 GB/hora.
-
16K IOPS 71,28 GB/hora.
Recomendações
-
Use uma EC2 instância com núcleos de CPU suficientes para lidar com o processamento paralelo.
-
Garanta que a instância tenha armazenamento suficiente para armazenar todo o conjunto de dados transformado com espaço adicional para extração.
-
O número de arquivos extraídos de uma vez é igual ao número de trabalhadores configurados durante a execução do script.
-
-
Posicione a EC2 instância na mesma região e AZ (se possível) da sua instância do InfluxDB para minimizar a latência.
-
Considere usar tipos de instância otimizados para operações de rede, por exemplo, C5N.
-
Se forem necessárias altas taxas de ingestão, pelo menos 12K IOPS são recomendadas para a instância Timestream for InfluxDB. Otimizações adicionais podem ser obtidas aumentando a contagem de trabalhadores do script, dependendo do Timestream para o tamanho da instância do InfluxDB.
Para obter mais informações, consulte o README