01 Visão geral do Presto: vantagens e desvantagens dos recursos Arquitetura de cena

insira a descrição da imagem aqui

Palavras-chave: MPP, consulta ad hoc de várias fontes, mecanismo de execução SQL unificado, mecanismo SQL distribuído, análise de dados

1. O que é Presto?

  • O Presto é um mecanismo de computação paralela distribuída (MPP) de software livre, aplicável principalmente à análise de segundo nível e aos requisitos de cenário de consulta de fontes de dados GB~PB no campo de big data.
  • O Presto foi criado para resolver o problema de que o modelo MapReduce é muito lento e não pode exibir dados HDFS por meio de ferramentas como BI
  • Presto é um mecanismo de computação. Ele não armazena dados. Ele obtém principalmente dados de terceiros por meio de conectores avançados e suporta expansão.

官网介绍:
Apache Presto é um mecanismo de execução de consulta paralelo distribuído, otimizado para baixa latência e análise de consulta interativa. O Presto executa consultas facilmente e escala sem tempo de inatividade, mesmo de gigabytes a petabytes.
Uma única consulta Presto pode processar dados de várias fontes, como HDFS, MySQL, Cassandra, Hive e muitas outras fontes de dados. Presto é construído em Java e fácil de integrar com outros componentes de infraestrutura de dados. O Presto é poderoso e empresas líderes como Airbnb, DropBox, Groupon e Netflix o estão adotando.

2. Vantagens e desvantagens do Presto

2.1. Vantagens

  • O Presto suporta SQL padrão, reduzindo o limite para analistas e desenvolvedores
  • O Presto oferece suporte ao conector conectável, que pode se conectar a várias fontes de dados e oferece suporte a consultas de associação de fontes de dados cruzadas. ex.: Hive, Mysql, Oracle, Kafka, MongoDB, Es, Postgresql…
  • O Presto é um mecanismo de computação na memória de baixa latência e alta simultaneidade, e sua eficiência de execução é muito maior do que a do Hive
  • Implantação simples e monitoramento avançado

insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui

2.2. Desvantagens

  1. Limitação de memória: embora possa lidar com análises de dados massivos em nível de PB, isso não significa que o Presto coloque cálculos em nível de PB na memória. Em vez disso, de acordo com o cenário, as operações de agregação, como contagem e média, são calculadas durante a leitura dos dados, a limpeza da memória e a leitura dos dados antes do cálculo. Esse tipo de consumo de memória não é alto. No entanto, mesmo a consulta de tabela pode gerar uma grande quantidade de dados temporários, portanto, a velocidade diminuirá, mas o Hive será melhor neste momento.

  2. Não há tolerância a falhas. Quando uma consulta é distribuída para vários trabalhadores para execução, quando um trabalhador falha na consulta por vários motivos, depois que o mestre percebe, toda a consulta também falha

  3. Consulta paralela, porque todas as tarefas são executadas em paralelo, se um dos Trabalhadores consultar lentamente por vários motivos, toda a consulta ficará muito lenta

  4. Limite de simultaneidade, devido à operação de memória cheia + limite de memória, a quantidade de dados que pode ser processada ao mesmo tempo é limitada, resultando em capacidade de simultaneidade insuficiente

3. Cenários de aplicação Presto

  • Acelera as consultas do Hive. O modelo de execução do Presto é um modelo MPP de memória pura, que é pelo menos 5 vezes mais rápido que o modelo MapReduce de embaralhamento de disco usado pelo Hive.
  • Mecanismo de execução SQL unificado. O Presto é compatível com o padrão ANSI SQL e pode se conectar a vários RDBMS e fontes de dados de data warehouse e usar a mesma sintaxe SQL e funções SQL nessas fontes de dados.
  • Traga recursos de execução SQL para os sistemas de armazenamento que não possuem recursos de execução SQL. Por exemplo, o Presto pode trazer recursos de execução SQL para HBase, Elasticsearch e Kafka, e até mesmo arquivos locais, memória, JMX e interfaces HTTP. Presto também pode fazer isso.
  • Crie um data warehouse unificado virtual para realizar consultas federadas de várias fontes de dados. Se as fontes de dados que precisam ser calculadas estiverem espalhadas em diferentes RDBMSs, data warehouses ou mesmo outros sistemas RPC, o Presto pode associar diretamente essas fontes de dados para análise (SQL Join), sem a necessidade de copiar dados da fonte de dados e centralize-os juntos.
  • Migração de dados e ferramentas ETL. O Presto pode se conectar a várias fontes de dados, além de possuir funções SQL e UDFs avançadas, que podem ajudar facilmente os engenheiros de dados a extrair (E), transformar (T) e carregar (L) dados de uma fonte de dados para outra.

4. Modelo de dados Presto

  • Catálogo: a fonte de dados. Tanto o Hive quanto o Mysql são fontes de dados, e o Presto pode se conectar a vários Hives e vários Mysqls
  • Esquema: semelhante ao DataBase, existem vários esquemas em um catálogo
  • Tabela: tabela de dados, que tem o mesmo significado que nossa tabela de banco de dados comumente usada, existem várias tabelas de dados em um esquema

Consulta de exemplo:

SELECT * from hive.dwd.table_a a 
JOIN mysql.dim.user_type_dim b
WHERE a.id = b.id

5. Arquitetura Presto

O Presto é baseado na arquitetura MS (mestre-escravo) e consiste em um nó Coordenador, um nó Descoberta e vários nós Trabalhadores, conforme mostrado abaixo: A
insira a descrição da imagem aqui
figura acima é composta por diferentes componentes. A tabela abaixo descreve cada componente em detalhes.

insira a descrição da imagem aqui

5.1 Processo de execução

1. Enviar SQL : Os usuários podem inserir SQL no SQL Client (CLI/JDBC/HTTP), que é responsável por enviar a consulta SQL ao cluster Presto (coordenador)

2. Gerar plano de execução e agendamento de tarefas : Depois que o Coordenador recebe o SQL, ele analisa a sintaxe SQL em uma árvore de sintaxe abstrata AST por meio do analisador de sintaxe SQL. A sintaxe está em conformidade com a sintaxe SQL. Ele passará por um componente planejador de consulta lógica e consulta por meio do conector O nome da coluna do esquema e o tipo de coluna nos metadados etc. o Palco e a Tarefa, agende a Tarefa de execução distribuída para o Presto Worker.

3. Execução : Presto Worker é responsável por executar o HttpRemoteTask recebido, determina quais Operadores e sua ordem de execução de acordo com o plano de execução e, em seguida, conclui o cálculo de todos os Operadores por meio do TaskExecutor e do Driver. Se o primeiro Operador a ser executado for SourceOperator, a Tarefa atual primeiro extrairá os dados do Sistema de Armazenamento Externo e, em seguida, executará os cálculos subsequentes. Se o último Operador executado for TaskOutputOperator, a Tarefa atual enviará o resultado do cálculo para o OutputBuffer, aguardando o Estágio que depende do Estágio atual puxar o resultado da liquidação. Após todas as Tarefas em todos os Estágios de toda a Consulta serem executadas, os resultados finais são retornados ao Cliente SQL.

PS:
Sistema de armazenamento externo : Como o Presto não armazena dados em si, os dados e metadados envolvidos no cálculo vêm de sistemas de armazenamento externos, como sistemas distribuídos como HDFS e AWS S3. Na experiência prática das empresas, o HiveMetaStore é frequentemente usado para armazenar metadados, o HDFS é usado para armazenar dados e o Presto é usado para realizar cálculos para acelerar a velocidade de consulta das tabelas Hive.

Plano de execução : Descreve as etapas e detalhes detalhados da execução do SQL. O mecanismo de execução do SQL pode concluir todo o processo de cálculo desde que seja executado de acordo com o plano de execução, conforme mostrado na figura abaixo:

insira a descrição da imagem aqui


Referências:

  1. https://prestodb.io/
  2. https://www.tutorialspoint.com/apache_presto/apache_presto_architecture.htm

Acho que você gosta

Origin blog.csdn.net/qq_31557939/article/details/129237382
Recomendado
Clasificación