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-hadoop
Exportar as variáveis de ambiente
export GCP_SERVICE_ACCOUNT_FILE=/path/keyfile.json && \
export GOOGLE_APPLICATION_CREDENTIALS=/path/keyfile.json
Um 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-keygen
Apó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.json
Para inicializar os modulos, execute o seguinte comando:
terraform init
Para verificar se os arquivos possui algum erro de sintaxe ou de configuração das instâncias execute o seguinte comando:
terraform plan
Após a verificação do plan execulte o seguinte comando para realizar o processo de instanciação
terraform apply
Se 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-auth
Crie 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 -format
Inicialize os serviços:
start-dfs.sh
start-yarn.sh
Para 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 input
Copiar o diretório input para o HDFS
hadoop dfs -copyFromLocal input /in
Execultar o WordCount
hadoop jar $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /in output
Coletar a saída do HDFS
hdfs dfs -get output output
cat output/*