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