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.
Siga as etapas abaixo para ter configuração de cluster Hadoop de vários nós.
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.
Fazer download do java (JDK
Em seguida, jdk-7u71-linux-x64.tar.gz será baixado no seu sistema.
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
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
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 uma conta de usuário do sistema tanto no master e slave sistemas para uso do Hadoop instalação.
# useradd hadoop # passwd hadoop
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
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
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/
Você tem que configurar Hadoop servidor tornando as seguintes alterações conforme indicado abaixo.
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>
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>
Abra omapred-site.xmlfile e editá-lo como mostrado abaixo.
<configuration> <property> <name>mapred.job.tracker</name> <value>hadoop-master:9001</value> </property> </configuration>
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 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
Abrir o master server e configure-o, seguindo os comandos.
# su hadoop $ cd /opt/hadoop/hadoop
$ vi etc/hadoop/masters hadoop-master
$ vi etc/hadoop/slaves hadoop-slave-1 hadoop-slave-2
# 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 ************************************************************/
O comando seguinte para iniciar todos os serviços do Hadoop Hadoop-Master.
$ cd $HADOOP_HOME/sbin $ start-all.sh
Abaixo estão os passos que devem ser seguidos para adicionar novos nós de um cluster Hadoop.
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
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.
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/
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
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 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ó.
su hadoop or ssh -X hadoop@192.168.1.103
./bin/hadoop-daemon.sh start datanode
$ jps 7141 DataNode 10312 Jps
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:
Máquina principal Login de usuário onde Hadoop está instalado.
$ su hadoop
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>
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
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.
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
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