Estratégias para transferir conjuntos de Big Data

Atualizado em 11 de outubro de 2017

Neste artigo, você terá uma visão geral de alto nível das maneiras de transferir dados para o Cloud Storage, escolher o melhor método e conhecer as práticas recomendadas para transferências por rede digital com a ferramenta gsutil.

Quando é feita a migração de uma operação comercial atual para o Google Cloud Platform (GCP), muitas vezes é necessário transferir grandes quantidades de dados para o Cloud Storage. O Cloud Storage é um serviço durável e altamente disponível de armazenamento de objetos. Não há limitações quanto ao número de arquivos armazenados em um intervalo, mas cada arquivo tem um limite de tamanho máximo de 5 TB. O Cloud Storage é otimizado para trabalhar com outros serviços do GCP, como o BigQuery e o Cloud Dataflow, o que facilita a execução de tarefas de engenharia e análise de dados na nuvem com uma arquitetura do GCP mais ampla.

Para aproveitar ao máximo este artigo, responda aproximadamente às seguintes questões:

  • Qual é a quantidade de dados que você precisa transferir?
  • Qual é a localização dos dados? Por exemplo, estão em um data center ou em um outro provedor de nuvem?
  • Qual é a largura de banda da rede disponível a partir do local em que os dados estão?
  • Com que frequência os dados são transferidos? Uma única vez ou periodicamente?

Fazer estimativa de custos

Atualmente não há cobranças de tráfego de entrada quando os dados são movidos para o Cloud Storage. A ferramenta gsutil e o Serviço de transferência do Cloud Storage são oferecidos gratuitamente. Consulte a página de preços da rede do GCP para saber mais detalhes sobre os preços atualizados.

Depois que seus dados são transferidos, você paga pelo uso do Cloud Storage com base em armazenamento, rede e operações. Pense também nas implicações de custos para diferentes classes de armazenamento e a escolha da classe de armazenamento correta para seu caso de uso. A interface da API do Cloud Storage é de classe agnóstica, o que permite o acesso da API a todas as classes de armazenamento. Para saber mais detalhes, consulte Preços do Google Cloud Storage.

O preço do Transfer Appliance inclui taxa de uso, custos de envio e possíveis taxas por atraso. O processamento a partir do dispositivo para o Cloud Storage é gratuito. Após a transferência de dados com o Transfer Appliance, você paga as taxas normais de utilização do Cloud Storage. Para conhecer os detalhes, consulte a política de preços do Google Transfer Appliance.

Sua solução de transferência de dados implica custos externos para o Google. Tais custos incluem, entre outros:

  • taxas de saída e operação pelo provedor de origem
  • taxas de serviços de terceiros para transferências on-line ou off-line
  • taxas de rede de terceiros

Selecionar o método correto para transferência de dados

O diagrama a seguir apresenta cada um dos métodos de transferência de dados para o Cloud Storage.

Como receber dados no Cloud Storage

  • O eixo X demonstra o quanto a origem de dados está acessível ou "próxima" em relação ao GCP. Nesse contexto, uma origem com uma excelente conexão de Internet está a pouca distância, enquanto uma origem sem conexão está distante.
  • O eixo Y representa a quantidade de dados a serem transferidos.

Com o diagrama a seguir, você navega pelo restante deste artigo e recebe orientação no processo de seleção de ferramentas.

como selecionar sua ferramenta

Definir a "proximidade"

Não há uma definição concreta do nível de "proximidade" dos seus dados em relação ao GCP. Em última análise, isso é determinado pelo tamanho dos dados, a largura de banda da rede e a natureza do caso de uso.

Com o diagrama a seguir, você será capaz de fazer uma estimativa do tempo de transferência de dados, de acordo com o tamanho deles e a largura de banda de rede disponível. Sempre analise o tempo de transferência no contexto de um caso de uso específico. Talvez não seja possível realizar transferências de 1 TB de dados no período de três horas em um determinado fluxo de trabalho. Entretanto, será possível transferir a mesma quantidade de dados em outro fluxo de trabalho no período de 30 horas.

Como estimar o tempo de transferência

Aproximar dados do GCP

Nesta seção, são apresentadas maneiras de melhorar a "proximidade" usando os dois fatores principais: tamanho de dados e largura de banda da rede.

Diminuir o tamanho dos dados

Reduza o tamanho dos dados, deduplicando e compactando-os na origem. Com isso, você minimiza o volume de dados que precisa transferir pela rede, reduzindo o tempo gasto na transferência e o custo do armazenamento. Se os dados incluírem muitos arquivos pequenos, compactá-los e agrupá-los com uma ferramenta como o tar -cvzf acelera as transferências com o gsutil ou o serviço de transferência do Cloud Storage.

A compactação de dados tem uma desvantagem: ela é demorada e intensiva no uso da CPU. Para armazenar arquivos com o propósito de arquivamento, é recomendado que eles sejam compactados antes de ser transferidos para o Cloud Storage. Se você planeja usar arquivos transferidos em um aplicativo, poderá descompactar os dados no Cloud Storage. Nesse caso, será necessário transferir os arquivos descompactados.

Como guia geral, a compressão de dados de texto pode resultar em uma taxa de compressão de 4:1. Os algoritmos de compactação com perdas para dados binários e de multimídia, como JPEG ou MP3, geralmente são a melhor opção para reduzir o tamanho.

Prefira formatos de arquivo compactos, sempre que possível. Por exemplo, os arquivos Avro são compactos por natureza.

Aumentar a largura de banda da rede

Os métodos para aumentar a largura de banda da sua rede dependem da escolha de sua conexão com o GCP. Você se conecta ao GCP por três maneiras principais:

  • conexão pública com a Internet
  • peering direto
  • Cloud Interconnect

Como se conectar à internet usando uma conexão pública

A capacidade de rede em uma conexão pública com a Internet é imprevisível. Isso acontece porque você está limitado à capacidade do provedor de serviço de Internet (ISP, na sigla em inglês) e ao roteamento. O ISP oferece um Contrato de nível de serviço (SLA, na sigla em inglês) limitado ou nenhum. Por outro lado, o custo dessas conexões é relativamente baixo.

Como se conectar com peering direto

Use o peering direto para acessar a Rede do Google, minimizando os saltos de rede. Com essa opção, é possível trocar o tráfego de internet entre sua rede e pontos de extremidade de presença (PoPs, na sigla em inglês) do Google. Isso reduz o número de saltos entre sua rede e a do Google.

Conectar-se com o Cloud Interconnect

Por meio de um dos provedores de serviços do Cloud Interconnect, é estabelecida uma conexão direta entre ele e o GCP. Com esse serviço, você tem uma capacidade mais consistente para grandes transferências de dados, e ainda conta com um SLA para disponibilidade e desempenho da rede. Para saber mais, entre em contato diretamente com um provedor de serviços.

Como transferir dados para o GCP

É possível transferir dados a partir de outro serviço da nuvem ou de um data center local. O método de transferência utilizado depende da proximidade dos dados com o GCP. Esta seção discute as seguintes opções:

  • Transferência a partir da nuvem: muito próxima
  • transferência de colocação ou armazenamento no local: próxima
  • transferência à distância

Transferir a partir da nuvem

Se a fonte de dados for um bucket do Amazon S3, um local HTTP/HTTPS ou um intervalo do Cloud Storage, use o Storage Transfer Service para transferir seus dados.

Transferir a partir da colocation ou armazenamento local

Se você opera em uma instalação de colocation (em inglês) ou em um data center local que está relativamente "próximo" ao GCP, transfira seus dados usando gsutil ou uma ferramenta de terceiros.

gsutil

A ferramenta gsutil é um utilitário de linha de comando de código aberto, disponível para Windows, Linux e Mac.

  • Com vários threads/processado: útil para a transferência de um grande número de arquivos.
  • Uploads compostos paralelos: para divisão de arquivos grandes, transferência de partes em paralelo e composição no destino.
  • Nova tentativa: aplica-se em casos de falha temporária de rede e códigos de erro HTTP/429 e 5xx.
  • Retomada: retoma a transferência após um erro.
Limitações

A ferramenta gsutil não é compatível com a otimização de rede. Para controlar o tráfego na camada de rede, é preciso juntá-la a uma ferramenta como o Trickle. Se você tiver privilégios no nível do sistema operacional e souber fazer ajustes específicos, será possível melhorar o tempo de transferência. Basta ajustar os parâmetros TCP e/ou aumentar a taxa da capacidade de transferência.

A ferramenta gsutil é excelente para transferências únicas ou iniciadas manualmente. Para estabelecer um pipeline de transferência contínua de dados, é preciso executar gsutil como cron job (em inglês) ou usar outras ferramentas de gerenciamento de fluxo de trabalho, como o Airflow (em inglês), para orquestrar o trabalho.

Criptografar seus dados

A ferramenta gsutil criptografa o tráfego em trânsito com a criptografia de camada de transporte, HTTPS. Com o Cloud Storage, você armazena dados em formato criptografado, podendo usar suas próprias chaves de criptografia. Para ver recomendações detalhadas de segurança, consulte as considerações de segurança e privacidade.

Transferência de dados com vários threads

Quando você usa um processo de gsutil com um único thread para transferir diversos arquivos por meio de uma rede, é possível que a transferência não utilize toda a largura de banda disponível. O diagrama a seguir mostra uma transferência de quatro arquivos com um único thread. Cada arquivo aguarda a conclusão da transferência do arquivo anterior, desperdiçando a largura de banda não utilizada.

Transferência com um único thread

Copie arquivos em paralelo para usar mais largura de banda disponível e acelerar a transferência de dados. O diagrama a seguir mostra uma transferência de quatro arquivos com diversos threads.

Transferência com multithread

Por padrão, a ferramenta gsutil transfere diversos arquivos com um só thread. Para ativar uma cópia com várias linhas de execução, use a sinalização -m ao executar o comando cp.

O comando a seguir copia todos os arquivos de um diretório de origem para um intervalo do Cloud Storage. Substitua [SOURCE_DIRECTORY] pelo seu diretório e [BUCKET_NAME] pelo nome do seu intervalo do Cloud Storage.

gsutil -m cp -r [SOURCE_DIRECTORY] gs://[BUCKET_NAME]
Como compor uploads paralelos

Para fazer o upload de arquivos grandes, o gsutil oferece uploads compostos paralelos. Esse recurso divide o arquivo em componentes menores e faz o upload deles paralelamente. Os diagramas a seguir mostram a diferença entre o upload de um arquivo grande e o mesmo upload usando o método composto paralelo.

Como fazer o upload de um arquivo grande

Upload composto paralelo

Para saber detalhes sobre as vantagens e desvantagens no uso de uploads compostos paralelos, acesse a documentação do comando cp.

Ajustar parâmetros TCP

Para melhorar o desempenho da transferência TCP, ajuste os parâmetros TCP a seguir. Antes de alterar essas configurações, leia a documentação do seu sistema operacional e consulte um especialista.

  • Escalonamento da janela TCP (RFC 1323)

    Com essa configuração, o tamanho da janela TCP pode ultrapassar 16 bits usando um fator de escalonamento. Isso possibilita o melhor aproveitamento da largura da banda disponível nas transferências de dados. Para que a configuração funcione, é preciso que o remetente e o receptor sejam compatíveis com o dimensionamento da janela TCP.

  • Carimbos de data/hora TCP (RFC 1323)

    Com essa configuração, a acurácia na medição do tempo de retorno ajuda o TCP a ter um desempenho mais suave.

  • Confirmação seletiva TCP (RFC 2018)

    Esta configuração indica que o remetente retransmite apenas os dados ausentes no receptor.

  • Enviar e receber tamanhos do buffer

    Essas configurações determinam a quantidade de dados enviados e recebidos antes de enviar uma confirmação para a outra parte. Aumente essas configurações quando achar que elas estão limitando a utilização da largura de banda.

Como aumentar a taxa de capacidade da transferência

Quando você aumentar a largura de banda efetiva da sua rede, a taxa de transferência de dados também poderá ser aumentada. Para testar a latência da rede, basta executar o comando de ferramenta de diagnóstico de desempenho gsutil a seguir. Substitua [BUCKET_NAME] pelo nome do intervalo do seu Cloud Storage.

gsutil perfdiag gs://[BUCKET_NAME]

Use o gsutil para testar diferentes combinações de processos, threads e outros dados do sistema operacional. Com a ferramenta gsutil, você terá uma melhor compreensão sobre as opções de configuração ideais para sua rede e poderá determinar, por exemplo, se deve fazer uma transferência em vários arquivos pequenos ou em poucos arquivos grandes.

Use as opções a seguir para determinar a capacidade da sua rede.

  • A opção -c determina o número de processos.
  • A opção -k determina o número de threads por processo.
  • A opção -n determina o número de objetos.
  • A opção -s determina o tamanho de cada objeto.
  • A opção -t wthru_file lê os arquivos do disco local para medir o desempenho de leitura do disco.

O comando a seguir, por exemplo, faz o upload de 100 arquivos com 10 MB cada usando 2 processos e 10 threads. Ele inclui a opção -m para diversos threads e a opção -p para uploads compostos paralelos. Substitua [BUCKET_NAME] pelo nome do intervalo do seu Cloud Storage.

gsutil perfdiag -c 2 -p both -t wthru_file -s 10M -n 100 -k 10 gs://[BUCKET_NAME]

O código a seguir exibe uma amostra de saída de diagnóstico, incluindo um valor de capacidade da gravação em Mbits por segundo.

------------------------------------------------------------------------------
                        Write Throughput With File I/O
------------------------------------------------------------------------------
Copied 100 10 MiB file(s) for a total transfer size of 1000 MiB.
Write throughput: 135.15 Mbit/s.
Parallelism strategy: both

Para verificar a quantidade de saltos entre sua rede e a do Google, use a ferramenta de linha de comando traceroute com o conjunto de números sinalizadores do Sistema autônomo (AS, na sigla em inglês). O comando a seguir funciona em um ambiente Linux:

traceroute -a test.storage-upload.googleapis.com

Procure AS15169, que é o número do AS para a maioria dos serviços do Google, incluindo o GCP. A amostra de saída a seguir demonstra que são usados 6 saltos para entrar na rede do Google.

traceroute to storage.l.googleusercontent.com (74.125.68.128), 64 hops max, 52 byte packets
     1  [AS0] XXXX.XXXXX.XXX (192.168.2.1)  1.374 ms  1.094 ms  0.982 ms
     2  [AS0] XXXX.XXXXX.XXX (192.168.1.1)  1.582 ms  1.932 ms  1.858 ms
       ...
     6  [AS15169] 108.XXX.XXX.XXX (108.XXX.XXX.XXX)  17.281 ms
       ...

Para uma lista completa de opções de ferramentas de diagnóstico de desempenho, consulte a documentação da ferramenta gsutil.

Ferramentas de terceiros

A ferramenta gsutil é adequada para muitos fluxos de trabalho. No entanto, para otimização avançada em nível de rede ou fluxos de trabalho contínuo de transferência de dados, convém usar ferramentas mais avançadas. Para ver informações sobre ferramentas mais avançadas, consulte os parceiros do Google.

Os links a seguir destacam algumas das muitas opções em ordem alfabética:

  • A Aspera On Demand para o Google baseia-se no protocolo patenteado da Aspera, que é adequado a fluxos de trabalho de grande escala. Está disponível sob demanda como modelo de licença de assinatura.

  • O Bitspeed oferece um protocolo otimizado de transferência de arquivos, adequado à transferência de arquivos grandes ou um grande número de arquivos. Essas soluções estão disponíveis como dispositivos físicos e virtuais, que podem ser conectados a redes e sistemas de arquivos atuais.

  • O Cloud FastPath, da Tervela (links em inglês), pode ser usado para criar um stream de dados gerenciado dentro e fora do GCP. Para saber detalhes, consulte Como utilizar o Cloud FastPath para criar streams de dados.

  • A Komprise é usada na análise de dados por meio de armazenamento local, para identificar dados frios e movê-los para o Cloud Storage. Para saber detalhes, consulte Como usar a Komprise para arquivar dados frios no Cloud Storage.

  • A Signiant oferece o Media Shuttle (links em inglês) como solução de software como serviço (SaaS, na sigla em inglês), para transferir um arquivo de/para qualquer lugar. Ela também oferece o Flight, um utilitário de escalonamento automático baseado em um protocolo altamente otimizado, e o Manager+Agents (links em inglês), uma ferramenta de automação para transferências em grande escala entre locais geograficamente dispersos.

Transferir dados à distância

Quando seus dados não são considerados "próximos" do GCP, a transferência de dados off-line é o caminho a seguir. Com a transferência off-line, você carrega os dados em uma mídia de armazenamento físico, que é enviada para um ponto de processamento que tenha boa conectividade de rede com o GCP. É possível fazer o upload dos dados a partir daí.

O Transfer Appliance, bem como vários provedores de serviços de terceiros, oferece diversas opções de transferência que você examina e seleciona de acordo com seus requisitos. Existem dois critérios de seleção principais.

  • Tamanho da transferência.
  • Natureza dinâmica dos dados.

O Transfer Appliance é indicado para grandes transferências de dados. No entanto, para grandes quantidades de dados dinâmicos, a melhor opção é o Zadara Storage.

Entre em contato com o representante do Google para solicitar assistência na escolha da melhor opção.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…