Hadoop - Multi Node Cluster
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
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 tutorialspoint@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 https://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 [email protected]:/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 [email protected]
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 [email protected] 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 [email protected]
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