Implante clusters Hadoop distribuídos ou pseudodistribuídos em instâncias ECS Linux para armazenamento e processamento de big data.
Contexto
O Apache Hadoop é um framework para processamento distribuído de grandes conjuntos de dados em clusters de computadores. Ele escala de um único servidor para milhares de máquinas, cada uma fornecendo computação e armazenamento locais. O Hadoop detecta e trata falhas na camada de aplicação, oferecendo alta disponibilidade sem depender de redundância de hardware.
Os componentes principais do Hadoop são o Hadoop Distributed File System (HDFS) e o MapReduce:
HDFS: sistema de arquivos distribuído para armazenar e ler dados de aplicações.
MapReduce: framework de computação distribuída que divide tarefas nas fases Map e Reduce e usa um agendador de tarefas (JobTracker) para executá-las nos nós do cluster.
|
Recurso |
Modo pseudodistribuído |
Modo totalmente distribuído |
|
Número de nós |
Nó único. Todos os serviços são executados em uma única máquina. |
Vários nós. Os serviços são distribuídos entre múltiplas máquinas. |
|
Utilização de recursos |
Utiliza os recursos de uma única máquina. |
Aproveita recursos de computação e armazenamento de várias máquinas. |
|
Tolerância a falhas |
Baixa. Um único ponto de falha torna todo o cluster indisponível. |
Alta. Suporta replicação de dados e configurações de alta disponibilidade. |
|
Cenários |
|
|
Implantação rápida
Clique em Run Now para abrir o Terraform Explorer, onde é possível visualizar e executar código Terraform para criar automaticamente um ambiente Hadoop em uma instância ECS.
Pré-requisitos
As instâncias ECS devem atender aos seguintes requisitos:
|
Ambiente |
Requisito |
|
|
Instância |
Pseudodistribuído |
1 instância |
|
Distribuído |
3 ou mais instâncias Nota
Adicione as instâncias a um conjunto de implantação que utilize a estratégia High Availability para melhorar a disponibilidade e simplificar o gerenciamento do cluster. |
|
|
Sistema operacional |
Linux |
|
|
Endereço IP público |
A instância deve ter um endereço IP público atribuído ou estar associada a um Elastic IP Address (EIP). |
|
|
Grupo de segurança da instância |
Permita tráfego de entrada nas portas 22, 443, 8088 (interface web do Hadoop YARN) e 9870 (interface web do Hadoop NameNode). Nota
Para implantações distribuídas, permita também tráfego na porta 9868 (interface web do Hadoop Secondary NameNode). Consulte Gerenciar regras de grupo de segurança. |
|
|
Java Development Kit (JDK) Este tópico utiliza Hadoop 3.2.4 e Java 8. Para outras versões, consulte Hadoop Java Versions. |
Versão do Hadoop |
Versão do Java |
|
Hadoop 3.3 |
Java 8 e Java 11 |
|
|
Hadoop 3.0.x~3.2.x |
Java 8 |
|
|
Hadoop 2.7.x~2.10.x |
Java 7 e Java 8 |
|
Procedimento
Distribuído
Planeje os nós antes de implantar o Hadoop. Este exemplo utiliza três instâncias: hadoop001 é o nó master, enquanto hadoop002 e hadoop003 são nós worker.
|
Componente funcional |
hadoop001 |
hadoop002 |
hadoop003 |
|
HDFS |
|
DataNode |
|
|
YARN |
NodeManager |
|
NodeManager |
Etapa 1: Instale o JDK
Instale o JDK em todos os nós.
-
Conecte-se à instância ECS como usuário comum.
Consulte Conectar-se a uma instância Linux usando o Workbench.
ImportanteA comunidade Hadoop não recomenda executar o Hadoop como usuário root devido a problemas de segurança e permissão. Utilize um usuário não root, como
ecs-user. -
Baixe o pacote de instalação do JDK 1.8.
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -
Descompacte o pacote de instalação do JDK 1.8.
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -
Mova e renomeie a pasta de instalação do JDK.
Este exemplo renomeia a pasta de instalação do JDK para
java8. É possível usar um nome diferente.sudo mv java-se-8u41-ri/ /usr/java8 -
Configure as variáveis de ambiente do Java.
Se a pasta de instalação do JDK foi renomeada, substitua
java8nos comandos a seguir pelo nome real.sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile" sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile' source /etc/profile -
Verifique se o JDK foi instalado corretamente.
java -versionA saída a seguir indica uma instalação bem-sucedida.

Etapa 2: Configure login SSH sem senha
Execute esta operação em todas as instâncias.
Configure o login SSH sem senha para que os nós possam se conectar sem autenticação por senha, simplificando o gerenciamento do cluster.
-
Configure os nomes de host e a resolução de hosts.
sudo vim /etc/hostsAdicione as informações
<Primary private IP address> <Hostname>de todas as instâncias ao arquivo/etc/hosts. Por exemplo:<Primary private IP address> hadoop001 <Primary private IP address> hadoop002 <Primary private IP address> hadoop003 -
Crie uma chave pública e uma chave privada.
ssh-keygen -t rsa
-
Execute
ssh-copy-id <Hostname>, substituindo o nome do host pelo nome correto. Por exemplo:Em
hadoop001, executessh-copy-id hadoop001,ssh-copy-id hadoop002essh-copy-id hadoop003. Após cada comando, insira yes e a senha da instância correspondente.ssh-copy-id hadoop001 ssh-copy-id hadoop002 ssh-copy-id hadoop003O login sem senha estará configurado quando a saída corresponder à imagem abaixo.

Etapa 3: Instale o Hadoop
Execute os comandos a seguir em todas as instâncias.
-
Baixe o pacote de instalação do Hadoop.
wget http://mirrors.cloud.aliyuncs.com/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz -
Descompacte o pacote de instalação do Hadoop em
/opt/hadoop.sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/ sudo mv /opt/hadoop-3.2.4 /opt/hadoop -
Configure as variáveis de ambiente do Hadoop.
sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile" source /etc/profile -
Modifique os arquivos de configuração
yarn-env.shehadoop-env.sh.sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh' sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh' -
Verifique se o Hadoop foi instalado corretamente.
hadoop versionA saída a seguir indica uma instalação bem-sucedida.

Etapa 4: Configure o Hadoop
Modifique os arquivos de configuração do Hadoop em todos os nós.
-
Modifique o arquivo de configuração do Hadoop
core-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/core-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<!--Specify the NameNode address--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop001:8020</value> </property> <!--Specify the directory to store files generated by Hadoop--> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/data</value> </property> <!--Configure the static user for HDFS web logon as hadoop--> <property> <name>hadoop.http.staticuser.user</name> <value>hadoop</value> </property>
-
-
Modifique o arquivo de configuração do Hadoop
hdfs-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<!-- NameNode web endpoint --> <property> <name>dfs.namenode.http-address</name> <value>hadoop001:9870</value> </property> <!-- Secondary NameNode web endpoint --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop003:9868</value> </property>
-
-
Modifique o arquivo de configuração do Hadoop
yarn-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/yarn-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<!--The method for NodeManager to obtain data is shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--Specify the YARN (ResourceManager) address--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop002</value> </property> <!--Specify the whitelist of environment variables that NodeManager can pass to containers--> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
-
-
Modifique o arquivo de configuração do Hadoop
mapred-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/mapred-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<!--Tell Hadoop to run MapReduce (MR) on YARN--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
-
-
Modifique o arquivo de configuração do Hadoop
workers.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/workers -
No arquivo
workers, insira as informações das instâncias.hadoop001 hadoop002 hadoop003
-
Etapa 5: Iniciar o Hadoop
-
Inicialize o
namenode.AvisoInicialize o
namenodenas três instâncias apenas durante a primeira inicialização.hadoop namenode -format -
Inicie o Hadoop.
ImportanteA comunidade Hadoop não recomenda executar o Hadoop como usuário root devido a problemas de segurança e permissão. Utilize um usuário não root, como
ecs-user.-
Caso seja necessário executar o Hadoop como root, compreenda o modelo de controle de acesso e os riscos associados antes de modificar os arquivos de configuração a seguir.
Nota: Executar o Hadoop como root introduz graves riscos de segurança, incluindo, mas não se limitando a, violações de dados, maior vulnerabilidade a malware que pode obter privilégios de root e problemas inesperados de permissão. Consulte a documentação oficial do Hadoop.
-
Em
hadoop001, executestart-dfs.shpara iniciar o serviço HDFS.Este script inicia o NameNode, SecondaryNameNode e DataNode.
start-dfs.shO HDFS estará em execução quando a saída do comando
jpscorresponder à imagem abaixo.
-
Em
hadoop002, executestart-yarn.shpara iniciar o serviço YARN.Este script inicia o ResourceManager e o NodeManager.
start-yarn.shO YARN estará em execução quando a saída corresponder à imagem abaixo.

-
Visualize os processos iniciados nos três nós.
jpsOs processos iniciados são mostrados a seguir.

-
No navegador, insira
http://<Public IP address of hadoop002 ECS instance>:8088para acessar a interface web do YARN.Visualize o uso de recursos do cluster, o status dos jobs MapReduce e informações de fila.
ImportantePermita tráfego de entrada na porta 8088 no grupo de segurança. Caso contrário, a interface web ficará inacessível. Consulte Adicionar uma regra de grupo de segurança.

-
No navegador, insira
http://<Public IP address of hadoop001 ECS instance>:9870para acessar a interface web do NameNode. Insirahttp://<Public IP address of hadoop003 ECS instance>:9868para acessar a interface web do SecondaryNameNode.Visualize o status do HDFS, a integridade do cluster, os nós ativos e os logs do NameNode.
A página a seguir indica que o ambiente distribuído foi criado com sucesso.
ImportantePermita tráfego de entrada na porta 9870 no grupo de segurança. Caso contrário, a interface web ficará inacessível. Consulte Adicionar uma regra de grupo de segurança.

Pseudodistribuído
Etapa 1: Instale o JDK
-
Conecte-se à instância ECS como usuário comum.
Consulte Conectar-se a uma instância Linux usando o Workbench.
ImportanteA comunidade Hadoop não recomenda executar o Hadoop como usuário root devido a problemas de segurança e permissão. Utilize um usuário não root, como
ecs-user. -
Baixe o pacote de instalação do JDK 1.8.
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -
Descompacte o pacote de instalação do JDK 1.8.
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -
Mova e renomeie a pasta de instalação do JDK.
Este exemplo renomeia a pasta de instalação do JDK para
java8. É possível usar um nome diferente.sudo mv java-se-8u41-ri/ /usr/java8 -
Configure as variáveis de ambiente do Java.
Se a pasta de instalação do JDK foi renomeada, substitua
java8nos comandos a seguir pelo nome real.sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile" sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile' source /etc/profile -
Verifique se o JDK foi instalado corretamente.
java -versionA saída a seguir indica uma instalação bem-sucedida.

Etapa 2: Configure login SSH sem senha
Um único nó também requer login SSH sem senha. Caso contrário, a inicialização do NameNode e do DataNode falhará com um erro de permissão negada.
-
Crie uma chave pública e uma chave privada.
ssh-keygen -t rsa
-
Adicione a chave pública ao arquivo
authorized_keys.cd .ssh cat id_rsa.pub >> authorized_keys
Etapa 3: Instale o Hadoop
-
Baixe o pacote de instalação do Hadoop.
wget http://mirrors.cloud.aliyuncs.com/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz -
Descompacte o pacote de instalação do Hadoop em
/opt/hadoop.sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/ sudo mv /opt/hadoop-3.2.4 /opt/hadoop -
Configure as variáveis de ambiente do Hadoop.
sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile" source /etc/profile -
Modifique os arquivos de configuração
yarn-env.shehadoop-env.sh.sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh' sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh' -
Verifique se o Hadoop foi instalado corretamente.
hadoop versionA saída a seguir indica uma instalação bem-sucedida.

Etapa 4: Configure o Hadoop
-
Modifique o arquivo de configuração do Hadoop
core-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/core-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> <description>location to store temporary files</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
-
-
Modifique o arquivo de configuração do Hadoop
hdfs-site.xml.-
Abra o arquivo para edição.
sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml -
No nó
<configuration></configuration>, insira o conteúdo a seguir.<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/tmp/dfs/data</value> </property>
-
Etapa 5: Iniciar o Hadoop
-
Inicialize o
namenode.hadoop namenode -format -
Inicie o Hadoop.
ImportanteA comunidade Hadoop não recomenda executar o Hadoop como usuário root devido a problemas de segurança e permissão. Utilize um usuário não root, como
ecs-user.-
Caso seja necessário executar o Hadoop como root, compreenda o modelo de controle de acesso e os riscos associados antes de modificar os arquivos de configuração a seguir.
Nota: Executar o Hadoop como root introduz graves riscos de segurança, incluindo, mas não se limitando a, violações de dados, maior vulnerabilidade a malware que pode obter privilégios de root e problemas inesperados de permissão. Consulte a documentação oficial do Hadoop.
-
Inicie o serviço HDFS.
Este script inicia o NameNode, SecondaryNameNode e DataNode.
start-dfs.shO HDFS estará em execução quando a saída corresponder à imagem abaixo.

-
Inicie o serviço YARN.
Este script inicia o ResourceManager, o NodeManager e o ApplicationHistoryServer.
start-yarn.shO YARN estará em execução quando a saída corresponder à imagem abaixo.

-
Visualize os processos iniciados.
jpsOs processos iniciados são mostrados a seguir.

-
No navegador, insira
http://<Public IP address of the ECS instance>:8088para acessar a interface web do YARN.Visualize o uso de recursos do cluster, o status dos jobs MapReduce e informações de fila.
ImportantePermita tráfego de entrada na porta 8088 no grupo de segurança. Caso contrário, a interface web ficará inacessível. Consulte Adicionar uma regra de grupo de segurança.

-
No navegador, insira
http://<Public IP address of the ECS instance>:9870para acessar a interface web do NameNode.Visualize o status do HDFS, a integridade do cluster, os nós ativos e os logs do NameNode.
A página a seguir indica que o ambiente pseudodistribuído foi criado com sucesso.
ImportantePermita tráfego de entrada na porta 9870 no grupo de segurança. Caso contrário, a interface web ficará inacessível. Consulte Adicionar uma regra de grupo de segurança.

Mais operações
Crie um grupo consistente de snapshots
Para Hadoop distribuído, utilize um grupo consistente de snapshots para garantir a consistência dos dados em todo o cluster. Consulte Criar um grupo consistente de snapshots.
Operações relacionadas ao Hadoop
Para operações do HDFS, consulte Comandos comuns do HDFS.
Referências
Para utilizar o ambiente integrado de big data da Alibaba Cloud no ECS, consulte Criar e usar rapidamente um cluster Data Lake Analytics.
Para utilizar um ambiente de desenvolvimento e governança de data lake, consulte Avançado: Analisar categorias de produtos mais vendidos a partir de dados de pedidos.

