Laboratório básico para a ferramenta Hadoop provisionado no Google Cloud Platform - GCP
O cluster Hadoop estiver instalado e funcionando, verifique a interface do usuário da web dos componentes conforme descrito abaixo:
| Service | url | Port |
|---|---|---|
| ResourceManager | http://<<ip_master>>:port/ | Default HTTP port is 8088. |
O Terraform irá instanciar 3 máquinas e compartilhar a chave pública do host com as máquinas virtuais, deverá ter o nome "id_rsa.pub". Para passar as credenciais para o terraform basta popular a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS.
export GOOGLE_APPLICATION_CREDENTIALS=<path_json>Clonar o projeto
git clone https://github.com/DiegoBulhoes/lab-hadoopExportar as variáveis de ambiente
export GCP_SERVICE_ACCOUNT_FILE=/path/keyfile.json && \
export GOOGLE_APPLICATION_CREDENTIALS=/path/keyfile.jsonUm dos passos necessários para utilizar esse setup é possuir uma par de keys SSH, podendo ser gerado através do seguinte comando, para mais detalhes consulte a documentação atrves desse link
ssh-keygenApós a geração da chave renomeie o arquivo terraform/terraform.tfvars.sample para terraform.tfvars (nesse arquivo irá conter todas as variáveis para criar as instâncias no GCP). Crie um service-accounts com uma chave do tipo JSON e exponha no ambiente através do variável GCP_SERVICE_ACCOUNT_FILE
export GCP_SERVICE_ACCOUNT_FILE=/path/keyfile.jsonPara inicializar os modulos, execute o seguinte comando:
terraform initPara verificar se os arquivos possui algum erro de sintaxe ou de configuração das instâncias execute o seguinte comando:
terraform planApós a verificação do plan execulte o seguinte comando para realizar o processo de instanciação
terraform applySe tudo estiver ok a saída será similar a esta:
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
Outputs:
manager_public = [
"<<ip_public>>",
]
worker_internal = [
"<<ip_internal1>>",
"<<ip_internal1>>"
]
Para realizar a configuração do ambiente será necessário popular a variável de ambiente GCP_SERVICE_ACCOUNT_FILE
export GCP_SERVICE_ACCOUNT_FILE=<path_json>Para execultar o Ansible será necessário realizar o download do plugin gce_compute:
pip3 install requests google-authCrie os arquivos inventory.gcp.yml e playbook.yml, utilize os exemplos.
Para inicializar o Ansible:
ansible-playbook -i inventory.gcp.yml -u gce playbook.yml
Para executar uma aplicação Hadoop deverá ser criado um diretório no qual será gerado uma pasta de saída, a pasta de saída não pode existir.
hdfs namenode -formatInicialize os serviços:
start-dfs.sh
start-yarn.shPara executar uma aplicação Hadoop deverá ser criado um diretorio no qual será gerado uma pasta de saída, a pasta de saída não pode existir.
mkdir input
cp $HADOOP_COMMON_HOME/etc/hadoop/*.xml inputCopiar o diretório input para o HDFS
hadoop dfs -copyFromLocal input /inExecultar o WordCount
hadoop jar $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /in outputColetar a saída do HDFS
hdfs dfs -get output output
cat output/*