Shake it Hadop, construa uma plataforma totalmente distribuída para Hadoop para secar Big Data

Construção de plataforma Hadoop totalmente distribuída

Etapas de construção:

1. Configuração de IP estático

2. instalação jdk, clonar máquina virtual

3. Modifique o nome do host da máquina virtual e adicione um mapeamento

4. Configure o login sem senha SSH

5. Configure o Serviço de Sincronização de Horário

6. Instalação do Hadoop (operação no mestre)

7. Distribuição de pastas Hadoop

8. Inicialização do cluster

[Anteriormente]

A construção de um cluster Hadoop totalmente distribuído requer várias máquinas virtuais. É difícil instalar e configurar cada máquina virtual separadamente. Portanto, podemos criar uma máquina virtual em VMware e concluir a configuração básica pública e, em seguida, criar diretamente um completo clone. Isso é mais eficiente.

A construção de um cluster Hadoop totalmente distribuído é uma arquitetura mestre-escravo típica, ou seja, um nó mestre e vários nós escravos. Aqui, uso três máquinas virtuais, uma como masternó e as outras duas como slave1nós e slave2nós.

Pacotes de instalação necessários: pacote de instalação jdk, pacote de instalação Hadoop (existe a versão que uso no recurso)

.Se não houver instruções especiais, esta operação é feita em Xshell.

Recomendações de instalação: Estou aqui para criar uma pasta de exportação de instalação unificada no diretório raiz e, em seguida, criar dois servidores de pastas (pasta de instalação do software) na pasta de exportação, softwares (diretório de armazenamento do pacote de instalação) ou a /usr/local/próxima instalação.

mkdir -p /export/servers
mkdir -p /export/softwares

1. Configuração de IP estático

Após a instalação ser concluída, o cartão centos7 padrão não é o primeiro início ifconfig ou ip a exibição do nome do cartão. Em seguida, modifique os arquivos de configuração relevantes.
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO修改为static
BOOTPROTO=static
最后一行ONBOOT改为yes
ONBOOT=yes
添加如下内容:
IPADDR=填IP地址
NETMASK=子网掩码
GATEWAY=网关IP
DNS1=8.8.8.8
DNS2=8.8.4.4

Se você puder executar ping na mesma rede externa, a configuração de IP estático foi bem-sucedida

ping www.qq.com

2. Instalação do jdk

* O pacote de instalação Jdk será carregado para a softwares pasta e descompactado para a pasta de servidores.
	cd /export/softwares/
	rz
	选中jdk压缩包,上传至当前目录下
	mv jdk-8u161-linux-x64.tar.gz jdk
	tar -zxvf jdk -C ../servers/ 

如果<code>rz</code>命令报错,则执行如下安装后再执行
	
	yum -y install lrzsz
  • Configurar variáveis ​​de ambiente jdk

Em /etc/profileadicionar o seguinte final variável de ambiente do arquivo:

export JAVA_HOME=/export/servers/jdk
export PATH=$PAHT:$JAVA_HOME/bin

Saia após salvar.

  • Recarregue o arquivo de configuração para que as variáveis ​​de ambiente configuradas agora tenham efeito.

      source /etc/profile
    
  • Verifique se a configuração foi bem-sucedida:

Ao inserir java -versionas informações de versão do jdk que aparecem, a instalação e a configuração foram bem-sucedidas.


A configuração de IP estático acima e a instalação do jdk precisam ser configuradas em cada máquina, portanto, depois que a configuração for bem-sucedida em uma máquina, clone a máquina virtual diretamente (observe que um clone completo deve ser criado). Observe que os endereços IP de todos os três são iguais, você precisa modificar o IP das duas máquinas virtuais clonadas no arquivo de configuração. Após a modificação ser concluída, reinicie o serviço de rede para ver se eles podem pingar um ao outro. Se o ping for bem-sucedido, a modificação do IP foi bem-sucedida .
重启网路服务:
systemctl restart network

3. Modifique o nome do host da máquina virtual e adicione um mapeamento

* Modifique o /etc/hostname arquivo, exclua a primeira linha padrão e, em seguida master , altere, reinicie a máquina virtual, a alteração do nome do host terá efeito.
A mesma abordagem para modificar as outras duas máquinas virtuais nome do host são: slave1 ,, slave2 e reinicie a máquina virtual. * Edite /etc/hosts o arquivo e adicione o seguinte conteúdo (observe o endereço IP para alterar o endereço IP):
	192.168.200.200 master
	192.168.200.201 slave1
	192.168.200.202 slave2

O mesmo conteúdo é adicionado nas outras duas máquinas.

Verifique se a mudança foi bem-sucedida ou não depende se eles podem se pingcomunicar entre si . Por exemplo, execute o seguinte comando em qualquer máquina:

ping master
ping slave1
ping slave2

4. Configure o login sem senha SSH

  • Verifique se o SSH foi instalado (centos7 é instalado por padrão)

      rpm -qa | grep ssh 
    

    Os seguintes resultados já estão instalados:

      openssh-7.4p1-21.el7.x86_64
      libssh2-1.8.0-3.el7.x86_64
      openssh-clients-7.4p1-21.el7.x86_64
      openssh-server-7.4p1-21.el7.x86_64
    

    Se não estiver instalado, você precisará instalá-lo manualmente:

      yum -y install openssh-server
      yum -y install openssh-clients
    

    Dica : Se o openssh-clients não estiver instalado, um erro será relatado quando os comandos ssh e scp forem executados, indicando que o comando não pode ser encontrado.

  • Teste se o SSH está disponível (o endereço IP é o endereço IP da máquina de destino a ser conectada: ou seja, o endereço IP do nó filho)

      ssh 192.168.200.201
    

    Siga os prompts para inserir a senha de login da máquina de destino. Depois que o login for bem-sucedido, o ssh estará disponível e execute o seguinte comando para retornar ao host original

      exit
    
  • Gerar chave

      ssk-keygen
    

    Este processo precisa ser confirmado repetidamente, apenas pressione Enter no meio. Observação: às vezes você precisa responder yesou no! ! !

  • Execute operações de login sem segredo em todos os nós do nó mestre, incluindo o nó mestre:

      ssh-copy-id -i ~/.ssh/id_rsa.pub master
      ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
      ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
    

    Visto que o mestre precisa iniciar o serviço no nó escravo, o mestre precisa fazer login no escravo, então execute o comando acima no nó mestre.

5. Configure o Serviço de Sincronização de Horário

  1. Verifique se o serviço ntp está instalado

     rpm -qa | grep ntp
    

    Instale o serviço ntp se não estiver instalado

     yum -y install ntp
    
  2. Defina o nó mestre como o nó mestre do serviço de sincronização de tempo NTP (ou seja, o tempo do nó mestre deve prevalecer)

    Edite o /etc/ntp.confarquivo, comente servera linha que começa com e adicione o seguinte código:

     restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
     server 127.127.1.0
     fudge 127.127.1.0 stratum 10
    
  3. Configure a sincronização da hora do nó (obtenha a hora do nó mestre)

    Modifique o /etc/ntp.confarquivo nos nós slave1 e slave2 também , comente serveras linhas que começam com e adicione o seguinte código:

     server master
    

    Defina o nó filho para sincronizar a hora com o mestre (servidor de hora) a cada 10 minutos

     crontab -e
     编写定时任务:
     */10 * * * * /usr/sbin/ntpdate master
    
  4. Iniciar serviço NTP

    1. Inicie o serviço ntp no nó mestre e adicione autoinício na inicialização

       service ntpd start & chkconfig ntpd on
      
    2. Sincronizar manualmente a hora uma vez no nó escravo (escravo1, escravo2)

       ntpdate master
      
    3. Inicie o serviço ntp no nó escravo (escravo1, escravo2) e adicione o autoinício na inicialização

       service ntpd start & chkconfig ntpd on
      
    4. Verifique se o servidor ntp está conectado ao ntp superior

       ntpstat
       这个命令可能会看到 unsynchronised 这是正常情况,因为配置完成后,需要等待一会儿才能和/etc/ntp.conf中配置的标准时间进行同步。
      
    5. Ver o status do servidor ntp e o ntp superior

       ntpq -p
       
       参数说明:
       when: 	多少秒前进行过时间同步
       poll:	下次更新在多少秒后
       reach:	已经向上层ntp服务器要求更新的次数
       delay:	网络延迟
       offser:	时间补偿值
       jitter:	系统时间与BIOS时间差
      
  5. Teste se a configuração foi bem-sucedida

    Modifique a hora em qualquer nó:

     date -s "2011-11-11 11:11:11" 
    

    Aguarde dez minutos e verifique se o tempo está sincronizado (10 minutos podem ser ajustados para 1 minuto durante o experimento para economizar tempo)

     date
    

Extensão: Se você precisa manter o relógio sincronizado com o horário da rede externa, você precisa configurar uma tarefa agendada (na verdade, o horário da máquina virtual foi sincronizado com o horário da rede). Eu uso o horário do Alibaba Servidor em nuvem. ---- Operar no mestre

	启动定时任务:
	crontab -e

	添加如下代码:分别代表 分 时 日 月 周
	*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com

6. Instalação do Hadoop (operação no mestre)

  1. Descompacte o pacote de instalação do Hadoop

     进入到softwares目录
     tar -zxvf hadoop-2.7.2.tar.gz -C ../servers/
     cd ../servers/
     mv hadoop-2.7.2.tar.gz hadoop
    
  2. Configurar variáveis ​​de ambiente

    Em /etc/profileadicionar os seguintes arquivos:

     export HADOOP_HOME=/export/servers/hadoop
     export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    Lembre-se depois de salvarsource /etc/profile

  3. Modifique o arquivo de configuração

    Todos os arquivos de configuração estão no seguinte caminho:

     hadoop/etc/hadoop/
    

    escravos

    O arquivo de configuração salva as informações do nó escravo, ou seja, o nome da máquina do nó. Exclua localhost e modifique-o da seguinte maneira:

     slave1
     slave2
    

    core-site.xml

    Arquivo de configuração do núcleo do Hadoop

    Adicione o seguinte conteúdo entre <configuration> </configuration>:

     <property>
     	<name>fs.defaultFS</name>
     	<value>hdfs://master:9000</value>
     </property>
     <property>
     	<name>hadoop.tmp.dir</name>
     	<value>file:/export/servers/hadoop/tmp</value>
     </property>
    

    fs.defaultFSO atributo é para especificar o sistema de arquivos padrão e seu valor é hdfs e porta do nó mestre.

    hadoop.tmp.dirO atributo é para especificar o diretório no qual os dados temporários hdfs são armazenados.O valor padrão é o diretório tmp do Linux.

    hdfs-site.xml

    Arquivos de configuração relacionados ao HDFS

    Adicione o seguinte conteúdo entre <configuration> </configuration>:

     <property>
     	   <name>dfs.replication</name>
     	   <value>1</value>
     </property>
     <property>
     	  <name>dfs.namenode.name.dir</name>
     	  <value>file:/export/servers/hadoop/tmp/dfs/name</value>
     </property>
     <property>
    		 <name>dfs.datanode.data.dir</name>
    		 <value>file:/export/servers/hadoop/tmp/dfs/data</value>
     </property>
    

    dfs.replicationO atributo representa o número de cópias do bloco de dados e seu valor por padrão é 3. Aqui nós o definimos como 1 para a conveniência do teste.

    dfs.namenode.name.dirO atributo representa o diretório temporário de armazenamento de dados do NameNode.

    dfs.namenode.data.dirO atributo representa o diretório temporário de armazenamento de dados do DataNode.

    mapred-site.xml

    Configuração relacionada ao MapReduce

    Renomeie o arquivo mapred-site.xml, o nome do arquivo padrão é mapred-site.xml.template e altere a configuração mapred-site.xml:

     mv mapred-site.xml.template mapred-site.xml
    

    Adicione o seguinte conteúdo entre <configuration> </configuration>:

     <property>
     	<name>mapreduce.framework.name</name>
     	<value>yarn</value>
     </property>
    

    mapreduce.framework.nameO atributo representa a estrutura em execução do programa MapReduce. O valor padrão é local, o que significa execução local. Aqui, definimos como yarn para permitir que o programa MapReduce seja executado na estrutura YARN.

    yarn-site.xml

    Configuração da estrutura YARN

    Adicione o seguinte conteúdo entre <configuration> </configuration>:

     <property>
    		 <name>yarn.resourcemanager.hostname</name>
    		 <value>master</value>
     </property>
     <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
     </property>
    

    yarn.resourcemanager.hostnameO atributo especifica em qual nó o ResourceManager é executado.

    yarn.nodemanager.aux-servicesO atributo especifica o método de embaralhamento padrão de YARN e é definido como o algoritmo de embaralhamento padrão de MapReduce.

    hadoop-env.sh

    A configuração básica do ambiente de operação do Hadoop é usada quando o script de automação é iniciado.

     export JAVA_HOME=/export/servers/jdk
    

    Na linha 25 do arquivo, remova o comentário anterior e altere o caminho a seguir para o seu JAVA_HOMEcaminho.

  4. Desde então, mesmo que a configuração do Hadoop seja concluída, estes são apenas os itens de configuração necessários para a inicialização normal! ! !

Observação: para obter informações de configuração mais detalhadas, você pode acessar o site oficial do Hadoop para visualizá-lo. Depois de abri-lo, deslize para a parte inferior da página. Há links para as informações detalhadas de cada arquivo de configuração em Configuração no canto inferior esquerdo .

7. Distribuição de pastas Hadoop

Depois de configurar todos os arquivos de configuração no nó mestre, distribua a pasta Hadoop para os outros dois nós filhos

scp -r /export/servers/hadoop slave1:/export/servers/
scp -r /export/servers/hadoop slave2:/export/servers/

8. Inicialização do cluster

Certifique-se de desligar o firewall antes de iniciar o cluster.Note que o firewall de cada máquina deve ser desligado! ! !

查看防火墙状态:
systemctl status firewalld

关闭防火墙:
systemctl stop firewalld

设置防火墙开机不启动(永久关闭防火墙,如果后面需要还可以手动打开):
systemctl disable firewalld

打开防火墙:
systemctl start firewalld
  • Formate o NameNode antes de começar pela primeira vez (você não precisa formatar quando começar mais tarde)

      hdfs namenode -format
    

    Se você se esquecer de formatar e iniciar, será necessário encerrar todos os processos de namenode e datanode, excluir os dados e os dados de registro e, em seguida, reformatar.

  • Existem duas maneiras de iniciar o cluster, uma é a inicialização manual e a outra é a inicialização automática do script

    1. Início manual

       1. 启动HDFS :
       
       启动NameNode(master节点):
       hadoop-daemon.sh start namenode
      
       启动DataNode(在Slave节点):
       hadoop-daemon.sh start datanode
      
       启动SecondaryNameNode(在任意节点):
       hadoop-daemon.sh start secondarynamenode
      
      
       2. 启动YARN :
      
       启动ResourceManager(在Master节点):
       yarn-daemon.sh start resourcemanager
      
       启动NodeManager(在Slave节点):
       yarn-daemon.sh start nodemanager
      
       3. 启动历史任务服务:
      
       mr-jobhistory-daemon.sh start historyserver
      
    2. Inicialização automatizada do script (executado no nó mestre)

       1. 启动HDFS :
       
       start-dfs.sh
      
       2. 启动YARN :
      
       start-yarn.sh
      
       3. 启动历史任务服务:
      
       mr-jobhistory-daemon.sh start historyserver
      
      
       注:还有一个脚本是:start-all.sh,但是一般不建议使用,容易出错。
      
  • Ver processo

      jps
    

    Se você vir o seguinte processo no mestre, a inicialização foi bem-sucedida:

      [root@master ~]# jps
      2016 ResourceManager
      2353 Jps
      1636 NameNode
      1845 SecondaryNameNode
      2310 JobHistoryServer
      [root@master ~]# 
    

    Se você vir o seguinte processo no escravo, a inicialização foi bem-sucedida:

      [root@slave1 ~]# jps
      1554 DataNode
      1830 Jps
      1671 NodeManager
      [root@slave1 ~]# 
    

    Descrição:

    NameNode、SecondaryNameNodeÉ o processo de HDFS no mestre e o processo DataNodede HDFS no escravo. A existência desses três processos indica que o HDFS foi iniciado com sucesso.

    ResourceManagerÉ o processo de YARN no mestre e o processo NodeManagerde YARN no escravo.A existência destes dois processos indica que o YARN foi iniciado com sucesso.

    JobHistoryServerÉ o processo de serviço histórico.

  • Ver página da web

    Depois que o cluster for iniciado, você pode inserir o endereço IP e o número da porta no navegador, visitar sua página de UI e visualizar as informações detalhadas do cluster.

      查看HDFS集群详细信息:
      192.168.200.200:50070
    
      查看YARN集群详细信息:
      192.168.200.200:8088
    
      查看historyserver历史服务详细信息:
      192.168.200.200:19888
    
  • Processo de desligamento

    Para abrir o comando de serviço startfoi alterado stoppara.

Acho que você gosta

Origin blog.csdn.net/qq_45796486/article/details/115272321
Recomendado
Clasificación