Hadoop - Multi Node Cluster


Advertisements

Este capítulo explica a configuração do cluster Hadoop de vários nós em um ambiente distribuído.

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

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop escrava: 192.168.1.16 (hadoop-escravo-1)
  • Hadoop escrava: 192.168.1.17 (hadoop-escravo-2)

Siga as etapas abaixo para ter configuração de cluster Hadoop de vários nós.

Instalar o Java

O Java é o principal pré-requisito para Hadoop. Primeiro de tudo, você deve verificar a existência do java no seu sistema usando o "java -version". A sintaxe do java versão comando é dado abaixo.

$ java -version

Se tudo funciona bem dar-lhe-á 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 está instalado no seu sistema, siga os passos para instalar o java.

Passo 1

Fazer download do java (JDK - X64.tar.gz) visitando o link a seguir http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Em seguida, jdk-7u71-linux-x64.tar.gz será baixado no seu sistema.

Passo 2

Geralmente, você irá encontrar o arquivo java baixado na pasta de download. Verifique se ele e extraia o jdk-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

Passo 3

Para tornar java disponível para todos os usuários, você vai ter que ir para o local “/usr/local/”. Abra o root e digite os seguintes comandos.

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

Passo 4

Para configurar oPATH e JAVA_HOME as variáveis, adicionar os seguintes comandos para~/.bashrcarquivo.

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

Agora verifique se o java -version comando no terminal, conforme explicado acima. Siga o processo acima e instale o java em todos os nós do cluster.

Criar Conta de Usuário

Criar uma conta de usuário do sistema tanto no master e slave sistemas para uso do Hadoop instalação.

# useradd hadoop 
# passwd hadoop

Mapeamento dos nós

Você tem que editar hosts arquivo no /etc/ pasta de 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

A configuração baseada em chave Login

Configurar o ssh em cada nó, que eles podem se comunicar uns com os outros sem qualquer aviso de senha.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub howcodex@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Instalar Hadoop

No Master server, baixe e instale Hadoop usando os seguintes comandos.

# 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ê tem que configurar Hadoop servidor tornando as seguintes alterações conforme indicado abaixo.

Core-site.xml

Abrir ocore-site.xml file e editá-lo como 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 ohdfs-site.xml file e editá-lo como 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 omapred-site.xmlfile e editá-lo como 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 editar JAVA_HOME, HADOOP_CONF_DIR e HADOOP_OPTS como mostrado abaixo.

Nota: Configurar o JAVA_HOME conforme 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

Instalar Hadoop em Servidores Escravos

Instalar Hadoop em todos os servidores subordinados, seguindo os comandos.

# 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

Abrir o master server e configure-o, seguindo os comandos.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configurando Nó Principal

$ vi etc/hadoop/masters
hadoop-master

Configurando nó escravo

$ vi etc/hadoop/slaves
hadoop-slave-1 
hadoop-slave-2

Nome Formato Nó 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 ************************************************************/

A Hadoop Serviços

O comando seguinte para iniciar todos os serviços do Hadoop Hadoop-Master.

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

Adicionando um Novo DataNode no Hadoop Cluster

Abaixo estão os passos que devem ser seguidos para adicionar novos nós de um cluster Hadoop.

Networking

Adicionar novos nós de um cluster Hadoop existente com algumas configurações de rede adequada. Suponha a seguinte configuração de rede.

Para a nova configuração do nó:

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

Adicionando usuário e acesso via SSH

Adicione um usuário

Sobre um novo nó, adicionar "hadoop" usuário e definir a senha do usuário para "Hadoop hadoop123" ou qualquer coisa que você quiser, usando os seguintes comandos.

useradd hadoop
passwd hadoop

Senha de configuração menos conectividade a partir do master para o novo escravo.

Execute o seguinte sobre o master

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 hadoop@192.168.1.103:/home/hadoop/

Execute o seguinte sobre os escravos

Fazer Login no hadoop. Se não for o caso, faça login no hadoop user.

su hadoop ssh -X hadoop@192.168.1.103

Copiar o conteúdo da chave pública no arquivo "$HOME/.ssh/authorized_keys" e, em seguida, alterar a permissão do 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 se o ssh login a partir da máquina principal. Agora, verifique se você pode o ssh para o novo nó sem uma senha a partir do master.

ssh hadoop@192.168.1.103 or hadoop@slave3

Set Hostname do Novo Nó

Você pode configurar hostname no arquivo /etc/sysconfig/network

On new slave3 machine
NETWORKING=yes 
HOSTNAME=slave3.in

Para fazer as alterações, reinicie a máquina e executar comando host para uma nova máquina com o respectivo nome (restart é uma boa opção).

No nó slave3 máquina:

Hostname slave3.

Update /etc/hosts em todas as máquinas do cluster com as seguintes linhas:

192.168.1.102 slave3.in slave3

Agora tente fazer ping na máquina com nomes para verificar se ele está resolvendo a IP ou não.

No novo nó máquina:

ping master.in

Iniciar o DataNode no Novo Nó

Iniciar o daemon datanode manualmente usando o $HADOOP_HOME/bin/hadoop-daemon.sh script. Ele será automaticamente contacte o mestre (NameNode) e se unir ao cluster. Devemos acrescentar também o novo nó para o conf/escravos arquivo no servidor principal. O script com os comandos irão reconhecer o novo nó.

Faça Login novo nó

su hadoop or ssh -X hadoop@192.168.1.103

Início HDFS em um nó escravo recém-adicionada através do seguinte comando

./bin/hadoop-daemon.sh start datanode

Verifique a saída da jps comando em um novo nó. É como se segue.

$ jps
7141 DataNode
10312 Jps

A remoção de um DataNode do Hadoop Cluster

Pode-se remover um nó de um cluster no voar, enquanto ela estiver em funcionamento, sem qualquer perda de dados. Desmantelamento HDFS fornece uma funcionalidade, que garante que a remoção de um nó é realizado de forma segura. Para usá-la, siga os passos indicados abaixo:

1º Passo: Faça Login no master

Máquina principal Login de usuário onde Hadoop está instalado.

$ su hadoop

2º Passo: Mudar configuração de cluster

Um excluir arquivo deve ser configurado antes do arranque do cluster. Adicionar uma chave nomeada dfs.hosts.excluir a nossa $HADOOP_HOME/etc/hadoop/hdfs-site.xml file. O valor associado a esta chave fornece o caminho completo de um arquivo sobre a NameNode local do sistema de arquivos que contém uma lista de máquinas que não estão autorizados a se conectar a HDFS.

Por exemplo, adicione estas linhas para a etc/hadoop/hdfs-site.xml file.

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

3º Passo: Determine os hosts de descomissionamento

Cada máquina a ser descomissionada deve ser adicionado ao arquivo identificado pela hdfs_exclude.txt, um nome de domínio por linha. Isso vai evitar que a conexão com a NameNode. Conteúdo do "/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" arquivo é mostrado abaixo, se você deseja remover DataNode2.

slave2.in

4º Passo: Forçar a configuração recarregar

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

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Isto irá forçar o NameNode para re-ler a configuração, incluindo o recém-atualizado "exclui" arquivo. Ele irá desativar os nós ao longo de um período de tempo, permitindo tempo para cada nó, blocos para ser replicado para as máquinas que estão programados para se manter ativo.

Aslave2.in, verificar a jps saída do comando. Depois de algum tempo, você vai ver a DataNode processo é desligado automaticamente.

5º Passo: Corte os nós

Após o processo de descomissionamento foi concluída, o hardware pode ser desclassificada com segurança desligado para manutenção. Execute o comando para relatório dfsadmin para verificar o status de descomissionamento. O seguinte comando irá descrever o estado do nó e o descomissionamento nós ligados ao cluster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Passo 6: Editar exclui arquivo novamente

Depois que as máquinas têm sido desmanteladas, eles podem ser removidos do "exclui" arquivo. "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" novamente, leia o exclui arquivo de volta para o NameNode; permitindo que os DataNodes para ingressar no cluster após a manutenção foi concluída, ou capacidade adicional é necessária no cluster novamente, etc.

Nota especial: se o processo acima é seguido e o tasktracker processo ainda está sendo executado no nó, ela precisa de ser desligado. Uma forma de o fazer é desligar a máquina, como fizemos com os passos acima. A Master irá reconhecer automaticamente o processo e irá declarar, como morto. Não há necessidade de seguir o mesmo processo para remover o tasktracker porque não é muito importante em relação ao DataNode. DataNode contém os dados que você deseja remover com segurança sem qualquer perda de dados.

O tasktracker pode ser executado/shutdown no voo por o seguinte comando em qualquer ponto do tempo.

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