Configuração do ambiente Hadoop totalmente distribuído

1 Clone uma máquina virtual

A máquina virtual clonada é desligada
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
modificarhostname

vi /etc/sysconfig/network

Insira a descrição da imagem aqui
Ver arquivo de configuração de ip

ip addr

Insira a descrição da imagem aqui
Para modificar o endereço ip no arquivo ip, você só precisa mudar o último dígito do ip para qualquer número

vi /etc/sysconfig/network-scripts/ifcfg-ens33

Insira a descrição da imagem aqui

vi /etc/hosts

Insira a descrição da imagem aqui
Nota : etc/hostsTanto a máquina virtual clonada quanto a máquina virtual clonada precisam ser adicionadas

Reinicie a máquina virtual.
Insira a descrição da imagem aqui
Neste ponto, a máquina virtual host2 (ip: 192.168.159.158) é clonada.Da mesma forma, clone uma máquina virtual host3 (ip: 192.168.159.157)

2 Planejamento da função do servidor

Determine a função de cada servidor

host1 host2 host3
NameNode ResourceManage
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer SecondaryNameNode

3 Instale o novo Hadoop na primeira máquina

3.1 Preparação

Para diferenciá-lo da instalação anterior do Hadoop pseudo-distribuído na máquina host1 , nósPare todos os serviços Hadoop do host1E, em seguida, /opt/modules/appinstale outro Hadoop em um novo diretório .
Instalamos o cluster primeiro descompactando e configurando o Hadoop na primeira máquina e, em seguida, distribuindo-o para as outras duas máquinas.
Insira a descrição da imagem aqui

3.2 Descompacte o diretório Hadoop:

tar -zxf /opt/hadoop/hadoop-2.10.1.tar.gz -C /opt/modules/app/

3.3 Configurar jdk, modificar hadoop-env.sh, mapred-env.sh, yarn-env.sh

Abra o arquivo hadoop-env.sh, mapred-env.sh, yarn-env.sh, modificado JAVA_HOMEcaminho da FIG.JAVA_HOME=/opt/modules/jdk1.8.0_171

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/hadoop-env.sh

Insira a descrição da imagem aqui

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/mapred-env.sh

Insira a descrição da imagem aqui

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/yarn-env.sh

Insira a descrição da imagem aqui

3.4 Implementação core-site.xml

[hadoop@host1 ~]$ cd /opt/modules/app/hadoop-2.10.1
[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/core-site.xml

Adicione o seguinte conteúdo em <configuration> e </configuration>

 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://host1.chybinmy.com:8020</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/modules/app/hadoop-2.10.1/data/tmp</value>
 </property>

explicar:

  • fs.defaultFSÉ o endereço do NameNode.
  • hadoop.tmp.dirÉ o endereço do diretório temporário hadoop.Por padrão, os arquivos de dados de NameNode e DataNode serão armazenados nos subdiretórios correspondentes deste diretório.

3.5 Configure hdfs-site.xml

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/hdfs-site.xml

Adicione o seguinte conteúdo em <configuration> e </configuration>

 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>host3.chybinmy.com:50090</value>
 </property>
 <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/opt/modules/app/hadoop-2.10.1/data/tmp/dfs/name</value>
</property>
<property>
     <name>dfs.datanode.data.dir</name>
     <value>file:/opt/modules/app/hadoop-2.10.1/data/tmp/dfs/data</value>
</property>

explicar:

  • dfs.namenode.secondary.http-addressÉ o secondaryNameNodeendereço de acesso http designado e o número da porta, porque no planejamento, vamos host3planejar como um SecondaryNameNodeservidor.
    Portanto, aqui está definido para:host3.chybinmy.com:50090

3.6 Configurar escravos

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/slaves

Adicione
host1.chybinmy.com
host2.chybinmy.com
host3.chybinmy.com ao arquivo

O arquivo slaves especifica HDFSquais DataNodenós estão ligados.

3.7 Implementação yarn-site.xml

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/yarn-site.xml

Adicione o seguinte conteúdo em <configuration> e </configuration>

   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>host2.chybinmy.com</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>

explicar:

  • De acordo com o plano, yarn.resourcemanager.hostnameo resourcemanagerservidor designado aponta para ele host2.chybinmy.com.
  • yarn.log-aggregation-enableÉ configurar se deseja ativar a função de agregação de log.
  • yarn.log-aggregation.retain-secondsÉ para configurar por quanto tempo os logs agregados são mantidos no HDFS.

3.8 Implementação mapred-site.xml

De mapred-site.xml.templatecopiar um mapred-site.xmlarquivo.

[hadoop@host1 hadoop-2.10.1]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/mapred-site.xml

Adicione o seguinte conteúdo em <configuration> e </configuration>

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>192.168.159.159:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.159.159:19888</value>
    </property>

explicar:

  • mapreduce.framework.nameDefina a mapreducetarefa para execução yarn.
  • mapreduce.jobhistory.addressO mapreduceservidor de histórico definido é instalado na máquina host1.
  • mapreduce.jobhistory.webapp.addressÉ para definir o endereço da página da web e o número da porta do History Server.

4 Configure o login SSH sem senha

Cada máquina no cluster Hadoop irá acessar uma à outra por meio de SSH. Não é realista inserir uma senha para cada acesso, por isso é necessário configurar o SSH entre cada máquina para fazer o login sem uma senha.

4.1 Gerar chave pública

Primeiro, converta o usuário em root

su root

Insira a descrição da imagem aqui

vi /etc/ssh/sshd_config

Encontrei as três frases a seguir e removi os comentários. Não os encontrei RSAAuthentication yes, então os adicionei diretamente.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile        .ssh/authorized_keys

Insira a descrição da imagem aqui
Reinicie o serviço, volte para o usuário hadoop, gere chaves públicas e privadas

service sshd restart
su hadoop
ssh-keygen -t dsa

Insira a descrição da imagem aqui
Será /home/hadoop/o .ssharquivo de próxima geração (o arquivo é um arquivo oculto, você precisa ll -aver), na .sshpróxima vez para ver os dois documentos em nome de chaves públicas e privadas
para copiar a chave pública para o authorized_keysarquivo e alterar o authorized_keysarquivo de autoridade operacional, then ssh Nesta máquina, se você não precisa digitar uma senha, significa que você pode passar pela máquina.O
texto acima é implementado diretamente como o seguinte código:

cd .ssh
cat id_dsa.pub >> authorized_keys(或者cat id_rsa.pub >> authorized_keys)
chmod 600 authorized_keys
ssh localhost

Insira a descrição da imagem aqui
Se você ssh localhostainda precisar inserir a senha, tente a seguinte frase, que /home/hadoop/pode ser alterada de forma flexível de acordo com o nome de usuário do seu host

chmod 755 /home/hadoop/
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

As operações acima são executadas no host1, host2 e host3 ao mesmo tempo! Após a operação, vá para a próxima etapa.

4.2 Distribuição de chaves públicas

O id_dsa.pub da seguinte instrução pode ser id_rsa.pub dependendo da situação

cat ~/.ssh/id_dsa.pub | ssh hadoop@host2.chybinmy.com 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_dsa.pub | ssh hadoop@host3.chybinmy.com 'cat - >> ~/.ssh/authorized_keys'

Faça também a operação de distribuição de chaves no host2, host3

Verifique se o login sem senha SSH foi bem-sucedido, diretamentessh 主机名
Insira a descrição da imagem aqui

5 Distribuir arquivos Hadoop

Primeiro crie um diretório para armazenar o Hadoop nas outras duas máquinas

[hadoop@host2 ~]$ mkdir /opt/modules/app
[hadoop@host3 ~]$ mkdir /opt/modules/app


O diretório share / doc no diretório raiz do Hadoop distribuído pelo Scp são os documentos armazenados do Hadoop. Os arquivos são muito grandes. Recomenda-se excluir este diretório antes da distribuição, o que pode economizar espaço no disco rígido e aumentar a velocidade de distribuição.

[hadoop@host1 hadoop-2.5.0]$ du -sh /opt/modules/app/hadoop-2.10.1/share/doc
[hadoop@host1 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.10.1/ 192.168.159.158:/opt/modules/app
[hadoop@host1 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.10.1/192.168.159.157:/opt/modules/app

6 Formato NameNode

Execute a formatação na máquina NameNode (host1):

[hadoop@host1 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/bin/hdfs namenode -format

Observação:
se você precisar reformatar o NameNode, será necessário excluir as duas pastas na figura abaixo para cada host (a datapasta é core-site.xmlconfigurada em hadoop.tmp.dir)
Acontece que todos os arquivos em NameNode e DataNode são excluídos, caso contrário, um erro será relatado.

Porque a formatação de cada vez, o padrão é para criar uma ID do cluster e escrevê-lo para o arquivo de NameNodesoma (o diretório onde o arquivo da versão está localizado é sum ). Quando a reformatação, um novo ID cluster será gerado por padrão. Se o original O diretório não for excluído, isso causará o novo ID do cluster no arquivo VERSION e o ID do cluster antigo no meio , e um erro será relatado se estiver inconsistente.DataNodeVERSIONdfs/name/currentdfs/data/currentnamenodeDataNode

Outro método é especificar o parâmetro de ID do cluster ao formatar e especificá-lo como o ID do cluster antigo.

7 Inicie o cluster

7.1 Iniciar HDFS

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/start-dfs.sh
[hadoop@host1 ~]$ jps

Para os três hosts jps, respectivamente , as três imagens a seguir mostram que a inicialização foi bem-sucedida.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Para desligar o HDFS, use a seguinte instrução

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/stop-dfs.sh

7.2 Iniciar YARN

No host1início do YARN

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/start-yarn.sh

No host2ResourceManager inicial em:

[hadoop@host2 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/sbin/yarn-daemon.sh start resourcemanager
[hadoop@host2 hadoop-2.10.1]$ jps

Insira a descrição da imagem aqui

7.3 Inicie o servidor de log

Como planejamos host3executar o serviço de log MapReduce no servidor, precisamos iniciá-lo no host3

[hadoop@host3 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/sbin/mr-jobhistory-daemon.sh start historyserver

Insira a descrição da imagem aqui

7.4 Ver a página da web HDFS

http://192.168.159.159:50070/(O URL é alterado de acordo com seu próprio ip, onde ip é o IP do host1)
Insira a descrição da imagem aqui

7.5 Ver a página da Web do YARN

http://192.168.159.158:8088/cluster(O URL é alterado de acordo com seu próprio ip, onde ip é o IP do host2)
Insira a descrição da imagem aqui

8 Trabalho de Teste

Aqui, usamos o exemplo wordcount que vem com o hadoop para testar e executar o mapreduce no modo local.

8.1 Prepare o arquivo de entrada mapreduce wc.input

[hadoop@host1 ~]$ cat /opt/data/wc.input

Insira a descrição da imagem aqui

8.2 Crie uma entrada de diretório de entrada no HDFS

[hadoop@host1 ~]$ cd /opt/modules/app/hadoop-2.10.1
[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -mkdir /input

Faça upload de wc.input para HDFS

[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -put /opt/data/wc.input /input/wc.input

8.3 Execute a demonstração mapreduce que vem com o hadoop

[hadoop@host1 hadoop-2.10.1]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /input/wc.input /output

Insira a descrição da imagem aqui

8.4 Ver arquivos de saída

[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -ls /output

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_42946328/article/details/113496798
Recomendado
Clasificación