Presto – Distributed Query Engine for Big Data Environment | On-Premises Installation

Pessoal, no post anterior da série foi possível entender sobre os conceitos por detrás do Presto e também como funciona a arquitetura de um cluster da solução. Neste você entenderá o que é a Starburst e aprenderá a instalar a a ferramenta em ambiente On-Premises.


O Presto foi criado, como já vimos no primeiro post da série, pela equipe do Facebook na tentativa de substituir o Map Reduce e o Hive (que na época ainda não possuia o LLAP). Muitos dos participantes do projeto de criação do Presto criaram a empresa Starburst para, não somente fornecer aos clientes uma versão da ferramenta com suporte, mas também uma versão com melhorias.

A principal das melhorias com relação à versão open source é o Cost Based Optimizer (CBO). Antes dessa implementação O Presto com relação ao Hive LLAP e Spark se tornava a ferramenta menos performática do grupo devido ao fato de não conseguir realizar um plano de execução inteligente para a busca dos dados. é possível entender melhor sobre o TCP Benchmark DS lendo o artigo do link a seguir: https://azure.microsoft.com/en-us/blog/hdinsight-interactive-query-performance-benchmarks-and-integration-with-power-bi-direct-query/.

Após a implementação do Cost Based Optimizer, o Presto, seguindo o mesmo padrão de análise do TCP Benchmark DS anterior, foi categorizado pelo Principal Program Manager do Azure HDInsight da Microsoft Ashish Thapliyal usando as seguintes palavras: “If interactive SQL analytics are needed, Presto is the best fit” / “Se query analítica interativa é o que você precisa, Presto é a melhor solução“. 


Agora vamos iniciar a configuração necessária para instalação do Starburst Presto em ambiente On-Premises. Usaremos nessa sessão um cluster de 4 máquinas, todas as elas com Linux CentOS 7. (É possível configurar em apenas um nó. Porém, para que você consiga verificar o verdadeiro potencial da solução iremos usar essa infraestrutura na série).

É necessário como pré-requisito que um usuário tenha acesso às todas as máquinas do cluster via ssh, e, claro, para isso, as máquinas devem estar em um mesmo ambiente de rede. É necessário também que seja adicionada uma regra no  Firewalld permitindo essa conexão (Ou que o Firewalld seja desativado).

É necessário ter instalado os seguintes pacotes em todos os nós: Python 2.7, tar, libffi, openssl, openssh, openssh-clients, openssh-server, net-tools, sudo (when presto-admin connects as non-root user via SSH).

A instalação e configuração do cluster de Presto é realizada através de uma ferramenta chamada Presto-Admin. Com ela, através de uma configuração simples, é realizado o download e configuração da ferramenta em todos os nós do cluster, indicando se esse nó é coordinator, worker, ou scheduler, quanto de memória será utilizada dessa máquina para o serviço do Presto, quanto cada nó poderá usar de memória para execução de cada query e etc. (Faremos um post específico para explicação dessas configurações).


Para realizar o download, use o usuário root e depois acesso o diretório /root. depois, acesso o LINK e clique em Download Now. Faça o cadastro, pegue o link para download na opção prestoadmin-2.5-offline-el7.tar.gz e dentro do nó principal com acesso ssh em todos os outros nós, use o comando wget <link>.

Realize a descompactação do arquivo utilizando o comando:

tar -zxvf ./prestoadmin-2.5-offline-el7.tar.gz.

Após isso entre no diretório /root/prestoadmin e execute o comando:

sudo ./install-prestoadmin.sh

Após a execução do comando, verifique que nesse diretório havará agora o arquivo presto-admin. para testar a instalação use o comando:

./presto-admin --help.

Agora que você já possui o Presto Admin instalado no servidor vamos realizar a criação do arquivo de configuração para que seja possível realizar o deploy do cluster de Starburst Presto.

Primeiramente é necessário acessar o diretório /root/.prestoadmin/. Use o comando vi config.json para realizar a criação do arquivo de configuração que será utilizado pelo Presto Admin para configuração do Cluster.

Dentro desse arquivo, adicione as informações abaixo:

{
    "username": "root",
    "port": "22",
    "coordinator": "<coordinator_server_ip>",
    "workers": [
        "<worker_server_ip_01>",
        "<worker_server_ip_02>",
        "<worker_server_ip_03>",
        "<worker_server_ip_N>"
    ]
}

salve o arquivo no diretório. e execute o comando:

/root/prestoadmin/presto.admin server install <version> -p <user_password>}

O parâmetro -p precisa ser utilizado somente se o usuário root não tiver acesso passwordless aos demais servidores.

Esse comando realiza o download e instalação dos componentes necessários para execução dos serviços do cluster em todos os nós (coordinator, scheduler e workers). Para que ele funcione corretamente é preciso dizer a versão do Presto (estamos atualmente usando a 0.213) e  o password para sudo e ssh do user (aqui estamos usando o root).

Após realizado isso alguns arquivos serão criados dentro do diretório/root/.prestoadmin dentro das pastas coordinador, workers e catalog. Vá até o diretório /root/.prestoadmin/coordinator/ e edite o arquivo ./config.properties. edite as opções:

query.max-memory = soma de 60% do total de memória de todos os nós workers. Por exemplo, se você possuir 3 nós, cada um com 10 gb de memória o valor é ser adicionado é 18.

query.max-memory-per-node = 60% da memória que pode ser usado em cada máquina. No mesmo exemplo acima o valor seria 6.

query.max-total-memory-per-node = 60% da memória que pode ser usado em cada máquina. No mesmo exemplo acima o valor seria 6.

discovery.uri = O servidor Coordinator e Scheduler (discutidos no post anterior) dentro da infraestrutura de Presto ficam dentro do mesmo nó. ou seja, o preenchimento desse parâmetro é <ip_servidor_coordinator>:<porta>. Por padrão a porta utilizada é 8080. Caso ela já esteja em uso, altere essa propriedade e a propriedade http-server.http.port.

Irei criar um post mais a frente na série explicando sobre as configurações desses parâmetros.

Agora você precisará alterar o valor dentro do segundo parâmetro do arquivo jvm.config no mesmo diretório de acordo com o exemplo abaixo:

-Xmx10G = Total de memória de cada servidor. No exemplo dado anteriormente esse valor seria 10.

Você alterou os arquivos no diretório /root/.prestoadmin/coordinator. Faça a mesma alteração nos arquivos com mesmo nome no diretório /root/.prestoadmin/workers.


Feito isso, você precisará realizar o deploy das alterações realizadas nos arquivos de configuração dentro de todos os nós configurados para o cluster. Para isso use o comando:

/root/prestoadmin/presto-admin configuration deploy

Agora você pode confirmar o update das configurações utilizando o comando:

/root/prestoadmin/presto-admin configuration show

Utilize o comando abaixo para iniciar o cluster de Presto no seu ambiente On-Premises:

/root/prestoadmin/presto-admin server start

Utilize o comando abaixo para validar se todos os nós estão funcionando dentro do ambiente:

/root/prestoadmin/presto-admin server status

Se tudo estiver correto, o seu cluster estará disponível e você já tera o seu ambiente de Big Data Distributed Query Engine pronto para uso.


No próximo post da série você aprenderá como realizar a instalação do Presto dentro do Azure Cloud para ambientes de nuvem. No post seguinte será possível descobrir como configurar os Catalogs para busca de dados e a usar o presto-cli para executar queries distribuídas.

Um comentário sobre “Presto – Distributed Query Engine for Big Data Environment | On-Premises Installation

  1. Pingback: Presto – Distributed Query Engine for Big Data Environment | Azure Cloud – Arthur Luz | Data's Light

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s