Hadoop - cluster de vários nós

Este capítulo explica a configuração do cluster Hadoop Multi-Node em um ambiente distribuído.

Como o cluster inteiro não pode ser demonstrado, estamos explicando o ambiente do cluster Hadoop usando três sistemas (um mestre e dois escravos); abaixo estão seus endereços IP.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Siga as etapas fornecidas abaixo para configurar o cluster Hadoop Multi-Node.

Instalando Java

Java é o principal pré-requisito para o Hadoop. Em primeiro lugar, você deve verificar a existência de java em seu sistema usando “java -version”. A sintaxe do comando da versão java é fornecida abaixo.

$ java -version

Se tudo funcionar bem, você receberá a seguinte saída.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Se o java não estiver instalado em seu sistema, siga as etapas fornecidas para instalar o java.

Passo 1

Faça download de java (JDK <versão mais recente> - X64.tar.gz) visitando o seguinte link www.oracle.com

Então jdk-7u71-linux-x64.tar.gz será baixado em seu sistema.

Passo 2

Geralmente, você encontrará o arquivo java baixado na pasta Downloads. Verifique e extraia ojdk-7u71-linux-x64.gz arquivo usando os seguintes comandos.

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

etapa 3

Para disponibilizar o java a todos os usuários, você deve movê-lo para o local “/ usr / local /”. Abra a raiz e digite os seguintes comandos.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Passo 4

Para configurar PATH e JAVA_HOME variáveis, adicione os seguintes comandos para ~/.bashrc Arquivo.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Agora verifique o java -versioncomando do terminal como explicado acima. Siga o processo acima e instale o java em todos os nós do cluster.

Criação de conta de usuário

Crie uma conta de usuário do sistema nos sistemas mestre e escravo para usar a instalação do Hadoop.

# useradd hadoop 
# passwd hadoop

Mapeando os nós

Você tem que editar hosts arquivo em /etc/ pasta em todos os nós, especifique o endereço IP de cada sistema seguido por seus nomes de host.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Configurando Login com Base em Chave

Configure o ssh em cada nó de forma que eles possam se comunicar sem qualquer solicitação de senha.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Instalando o Hadoop

No servidor mestre, baixe e instale o Hadoop usando os comandos a seguir.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Configurando Hadoop

Você deve configurar o servidor Hadoop fazendo as seguintes alterações, conforme fornecido a seguir.

core-site.xml

Abra o core-site.xml arquivo e edite-o conforme mostrado abaixo.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

Abra o hdfs-site.xml arquivo e edite-o conforme mostrado abaixo.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

Abra o mapred-site.xml arquivo e edite-o conforme mostrado abaixo.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

Abra o hadoop-env.sh arquivo e edite JAVA_HOME, HADOOP_CONF_DIR e HADOOP_OPTS conforme mostrado abaixo.

Note - Defina o JAVA_HOME de acordo com a configuração do sistema.

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Instalação do Hadoop em servidores escravos

Instale o Hadoop em todos os servidores escravos seguindo os comandos fornecidos.

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Configurando Hadoop no servidor mestre

Abra o servidor master e configure-o seguindo os comandos fornecidos.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configurando o Nó Mestre

$ vi etc/hadoop/masters

hadoop-master

Configurando Nó Escravo

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Nó de nome de formato no Hadoop Master

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

Iniciando serviços Hadoop

O comando a seguir é para iniciar todos os serviços Hadoop no Hadoop-Master.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Adicionando um novo DataNode no cluster do Hadoop

A seguir, estão as etapas a serem seguidas para adicionar novos nós a um cluster Hadoop.

Networking

Adicione novos nós a um cluster Hadoop existente com alguma configuração de rede apropriada. Considere a seguinte configuração de rede.

Para configuração de novo nó -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Adicionando acesso de usuário e SSH

Adicionar um usuário

Em um novo nó, adicione o usuário "hadoop" e defina a senha do usuário Hadoop como "hadoop123" ou qualquer coisa que desejar usando os comandos a seguir.

useradd hadoop
passwd hadoop

Senha de configuração menos conectividade do mestre para o novo escravo.

Execute o seguinte no mestre

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

Execute o seguinte nos escravos

Faça login no hadoop. Se não, faça login no usuário hadoop.

su hadoop ssh -X [email protected]

Copie o conteúdo da chave pública no arquivo "$HOME/.ssh/authorized_keys" e, em seguida, altere a permissão para o mesmo executando os seguintes comandos.

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Verifique o login do ssh na máquina mestre. Agora verifique se você pode ssh para o novo nó sem uma senha do mestre.

ssh [email protected] or [email protected]

Definir o nome do host do novo nó

Você pode definir o nome do host no arquivo /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Para tornar as alterações efetivas, reinicie a máquina ou execute o comando hostname em uma nova máquina com o respectivo nome de host (reiniciar é uma boa opção).

Na máquina de nó escravo3 -

hostname slave3.in

Atualizar /etc/hosts em todas as máquinas do cluster com as seguintes linhas -

192.168.1.102 slave3.in slave3

Agora tente fazer o ping da máquina com nomes de host para verificar se está resolvendo para IP ou não.

Na nova máquina do nó -

ping master.in

Inicie o DataNode no novo nó

Inicie o daemon datanode manualmente usando $HADOOP_HOME/bin/hadoop-daemon.sh script. Ele entrará em contato automaticamente com o mestre (NameNode) e ingressará no cluster. Devemos também adicionar o novo nó ao arquivo conf / slaves no servidor master. Os comandos baseados em script reconhecerão o novo nó.

Faça login no novo nó

su hadoop or ssh -X [email protected]

Inicie o HDFS em um nó escravo recém-adicionado usando o seguinte comando

./bin/hadoop-daemon.sh start datanode

Verifique a saída do comando jps em um novo nó. É o seguinte.

$ jps
7141 DataNode
10312 Jps

Removendo um DataNode do cluster Hadoop

Podemos remover um nó de um cluster rapidamente, enquanto ele está em execução, sem qualquer perda de dados. O HDFS fornece um recurso de descomissionamento, que garante que a remoção de um nó seja realizada com segurança. Para usá-lo, siga as etapas fornecidas abaixo -

Etapa 1 - Faça login no mestre

Faça login no usuário da máquina master onde o Hadoop está instalado.

$ su hadoop

Etapa 2 - Alterar a configuração do cluster

Um arquivo de exclusão deve ser configurado antes de iniciar o cluster. Adicione uma chave chamada dfs.hosts.exclude ao nosso$HADOOP_HOME/etc/hadoop/hdfs-site.xmlArquivo. O valor associado a esta chave fornece o caminho completo para um arquivo no sistema de arquivos local do NameNode que contém uma lista de máquinas que não têm permissão para se conectar ao HDFS.

Por exemplo, adicione essas linhas a etc/hadoop/hdfs-site.xml Arquivo.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Etapa 3 - Determinar hosts para desativação

Cada máquina a ser descomissionada deve ser adicionada ao arquivo identificado pelo hdfs_exclude.txt, um nome de domínio por linha. Isso os impedirá de se conectar ao NameNode. Conteúdo do"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" arquivo é mostrado abaixo, se você deseja remover DataNode2.

slave2.in

Etapa 4 - Forçar o recarregamento da configuração

Execute o comando "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" sem as aspas.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Isso forçará o NameNode a reler sua configuração, incluindo o arquivo de 'exclusões' recém-atualizado. Ele desativará os nós ao longo de um período de tempo, permitindo que os blocos de cada nó sejam replicados nas máquinas programadas para permanecerem ativas.

Em slave2.in, verifique a saída do comando jps. Depois de algum tempo, você verá que o processo DataNode foi encerrado automaticamente.

Etapa 5 - nós de desligamento

Após a conclusão do processo de desativação, o hardware desativado pode ser encerrado com segurança para manutenção. Execute o comando report para dfsadmin para verificar o status da desativação. O comando a seguir descreve o status do nó de desativação e os nós conectados ao cluster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Etapa 6 - Editar exclui o arquivo novamente

Assim que as máquinas forem descomissionadas, elas podem ser removidas do arquivo de 'exclusões'. Corrida"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"novamente irá ler o arquivo excludes de volta no NameNode; permitindo que os DataNodes se reintegrem ao cluster após a manutenção ter sido concluída ou capacidade adicional for necessária no cluster novamente, etc.

Special Note- Se o processo acima for seguido e o processo do rastreador de tarefas ainda estiver em execução no nó, ele precisa ser encerrado. Uma maneira é desconectar a máquina como fizemos nas etapas acima. O Mestre reconhecerá o processo automaticamente e o declarará como morto. Não há necessidade de seguir o mesmo processo para remover o rastreador de tarefas porque NÃO é muito importante em comparação com o DataNode. DataNode contém os dados que você deseja remover com segurança, sem qualquer perda de dados.

O rastreador de tarefas pode ser executado / encerrado em tempo real pelo seguinte comando a qualquer momento.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker