Recuerde Centos7.4 para compilar el clúster Hadoop 3.2.0 (HA) YARN (HA)

1. Información básica

Sitio web oficial   http://hadoop.apache.org/

Inicio rápido   http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html

Documentación en línea   http://tool.oschina.net/apidocs/apidoc?api=hadoop

Tutorial de Yibai https://www.yiibai.com/hadoop/ 

Tutorial de W3Cschool  https://www.w3cschool.cn/hadoop/?

2. Descripción del entorno y las herramientas

1. Sistema operativo Centos7.4 x64 Mínimo 1708

Instale 5 máquinas virtuales

NameNode: 2 juegos de memoria 2G, CPU de 1 núcleo

DataNode: 3 juegos de memoria 2G, CPU de 1 núcleo

2. Versión de JDK: jdk1.8

3. Herramientas: xshell5

4. Versión de VMware: VMware Workstation Pro15

5 、 Hadoop: 3.2.0

6 、 Guardián del zoológico: 3.4.5

3. Instalación y despliegue (preparación del entorno básico)

1. Instalación de máquina virtual (instale 5 máquinas virtuales)

Referencia https://blog.csdn.net/llwy1428/article/details/89328381 

2. Cada máquina virtual está conectada a Internet (se deben configurar 5 nodos con tarjetas de red)

La configuración de la tarjeta de red puede referirse a:

https://blog.csdn.net/llwy1428/article/details/85058028

3. Modifique el nombre del host (5 nodos necesitan modificar el nombre del host)

Edite el nombre de host de cada nodo del clúster (tome el primer nodo node1.cn como ejemplo)

[root@localhost~]# hostnamectl set-hostname node1.cn
node1.cn
node2.cn
node3.cn
node4.cn
node5.cn

4. Construcción del entorno JDK8 (es necesario construir 5 nodos)

Consulte  https://blog.csdn.net/llwy1428/article/details/85232267

5. Configure el firewall (se deben operar 5 nodos)

Apague el firewall y configure el inicio para prohibir el inicio

关闭防火墙    : systemctl stop firewalld
查看状态      : systemctl status firewalld
开机禁用      : systemctl disable firewalld

6. Configurar IP estática

Tome el nodo node1.cn como ejemplo (se omiten otros nodos):

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

Nota: el cuadro rojo es la parte modificada y agregada

Puede referirse a: https://blog.csdn.net/llwy1428/article/details/85058028

7. Configure el archivo de hosts

Tome el nodo node1.cn como ejemplo:

[root@node1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.11.131 node1.cn
192.168.11.132 node2.cn
192.168.11.133 node3.cn
192.168.11.134 node4.cn
192.168.11.135 node5.cn

8. Instale las herramientas básicas

[root@node1 ~]# yum install -y vim wget lrzsz tree zip unzip net-tools ntp
[root@node1 ~]# yum update -y (可选)

(Dependiendo de su propia situación de red, es posible que deba esperar unos minutos)

9. Configure el inicio de sesión sin contraseña entre nodos

Los pasos específicos se refieren a: 

https://blog.csdn.net/llwy1428/article/details/85911160

https://blog.csdn.net/llwy1428/article/details/85641999

10. Modifique la cantidad de archivos de sistema abiertos en cada nodo del clúster.

Tome el nodo node1.cn como ejemplo:

[root@node1 ~]# vim /etc/security/limits.conf

referencia

https://blog.csdn.net/llwy1428/article/details/89389191

11. Configuración de sincronización de tiempo de cada nodo en el clúster.

Este artículo se basa en el servidor de tiempo Aliyun, la dirección del servidor de tiempo Aliyun: ntp6.aliyun.com

Nota: Si hay un servidor de hora dedicado, cambie el nombre de host o la dirección IP del servidor de hora. El nombre de host debe asignarse en el archivo etc / hosts.

Tome node1.cn como ejemplo:

Establezca la zona horaria del sistema en el distrito de Dongba (zona horaria de Shanghai)

[root@node1 ~]# timedatectl set-timezone Asia/Shanghai

Cerrar servicio ntpd

[root@node1 ~]# systemctl stop ntpd.service

Configurar el servicio ntpd para prohibir el inicio

[root@node1 ~]# systemctl disable ntpd

Configurar una tarea programada

[root@node1 ~]# crontab -e

Escriba lo siguiente (sincronice con el servidor de tiempo de Alibaba Cloud cada 10 minutos):

0-59/10 * * * * /usr/sbin/ntpdate ntp6.aliyun.com

Reinicie el servicio de tareas programadas

[root@node1 ~]# /bin/systemctl restart crond.service

Establecer tareas cronometradas para iniciar

[root@node1 ~]# vim /etc/rc.local

Después de agregar el siguiente contenido, guarde y salga: wq

/bin/systemctl start crond.service

Todos los demás nodos del clúster son los mismos que node1.cn.

Referencia https://blog.csdn.net/llwy1428/article/details/89330330 

12. Deshabilite SELinux en cada nodo del clúster.

Tome node1.cn como ejemplo:

[root@node1 ~]# vim /etc/selinux/config

Después de modificar el siguiente contenido, guarde y salga: wq

Todos los demás nodos del clúster son los mismos que node1.cn.

13. Deshabilite las páginas gigantes transparentes en cada nodo del clúster.

Referencia   https://blog.csdn.net/llwy1428/article/details/89387744

14. Configure el entorno del sistema como UTF8

Tome node1.cn como ejemplo:

[root@node1 ~]# echo "export LANG=zh_CN.UTF-8 " >> ~/.bashrc
[root@node1 ~]# source ~/.bashrc

Todos los demás nodos del clúster son los mismos que node1.cn.

15, instale la base de datos

Nota: MariaDb (Mysql) se instala para proporcionar soporte de metadatos para Hive, Spark, Oozie, Superset, etc. Si no usa estas herramientas, no necesita instalar la base de datos Mysql.

El proceso de instalación de MariaDb (Mysql) puede referirse a:

https://blog.csdn.net/llwy1428/article/details/84965680

https://blog.csdn.net/llwy1428/article/details/85255621

Cuarto, instale e implemente el clúster de Hadoop (modo HA)

(Nota: durante la construcción y operación del clúster, asegúrese de que la hora de todos los nodos del clúster esté sincronizada)

1. Cree un directorio, cargue archivos,

Nota: Primero configure la información básica en node1.cn, luego distribuya los archivos configurados a cada nodo y luego realice la configuración adicional

Cree un directorio / opt / cluster / en cada nodo

Tome node1.cn como ejemplo:

[root@node1 ~]# mkdir /opt/cluster

2. Descarga de archivos (carga de archivos), descompresión

Descargar

[root@node1 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

o

Descargue el archivo manualmente: hadoop-3.2.0.tar.gz

Cargue el archivo descargado hadoop-3.2.0.tar.gz en la ruta / opt / cluster y descomprima hadoop-3.2.0.tar.gz

Ingrese al directorio / opt / cluster

descomprimir archivos

[root@node1 cluster]# tar zxvf hadoop-3.2.0.tar.gz

Ver estructura de directorio

3. Cree varios directorios en hadoop

[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/tmp
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/name
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/data
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/journaldata

4. Configure las variables de entorno de hadoop (agregue la información de la variable de entorno de Hadoop)

[root@node1 ~]# vim /etc/profile
在最后追加如下信息
export HADOOP_HOME="/opt/cluster/hadoop-3.2.0"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

Guardar y salir: wq

Hacer efectivo el archivo de configuración

[root@node1 ~]# source /etc/profile

Ver versión

5. Configure hadoop-env.sh

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/hadoop-env.sh

Agrega el siguiente contenido

export JAVA_HOME=/opt/utils/jdk1.8.0_191
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

5, ubicación core-site.xml

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/core-site.xml
<configuration>
     <property>
           <name>fs.defaultFS</name>
           <value>hdfs://cluster</value>
     </property>
     <property>
           <name>hadoop.tmp.dir</name>
           <value>/opt/cluster/hadoop-3.2.0/hdfs/tmp</value>
     </property>
     <property>
            <name>ha.zookeeper.quorum</name>
            <value>node3.cn:2181,node4.cn:2181,node5.cn:2181</value>
    </property>
</configuration>

6. Edite el archivo hdfs-site.xml.

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
<configuration>
	<property>
		<name>dfs.nameservices</name>
		<value>cluster</value>
	</property>
	<property>
		<name>dfs.ha.namenodes.cluster</name>
		<value>nn1,nn2</value>
	</property>
	<property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>

	<property>
		<name>dfs.namenode.rpc-address.cluster.nn1</name>
		<value>node1.cn:8020</value>
	</property>
	<property>
		<name>dfs.namenode.rpc-address.cluster.nn2</name>
		<value>node2.cn:8020</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.cluster.nn1</name>
		<value>node1.cn:50070</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.cluster.nn2</name>
		<value>node2.cn:50070</value>
	</property>
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://node3.cn:8485;node4.cn:8485;node5.cn:8485/cluster</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/opt/cluster/hadoop-3.2.0/hdfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/opt/cluster/hadoop-3.2.0/hdfs/data</value>
	</property>
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/opt/cluster/hadoop-3.2.0/hdfs/edits</value>
	</property>
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/opt/cluster/hadoop-3.2.0/hdfs/journaldata</value>
	</property>
	<property>
		<name>dfs.client.failover.proxy.provider.cluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>shell(/bin/true)</value>
	</property>
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
	</property>
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
	</property>
	<property>
 		<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
 		<value>false</value>
	</property>
</configuration>

7. Edite el archivo mapred-site.xml.

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/mapred-site.xml
<configuration>
       	<property>
           	<name>mapreduce.framework.name</name>
           	<value>yarn</value>
       	</property>
       	<property>
               	<name>yarn.app.mapreduce.am.env</name>
              	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
       	</property>
       	<property>
           	<name>mapreduce.map.env</name>
           	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
      	</property>
      	<property>
        	<name>mapreduce.reduce.env</name>	
        	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
      	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node1.cn:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node1.cn:19888</value>
	</property>
</configuration>

8. Edite el archivo yarn-site.xml.

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/yarn-site.xml
<configuration>
	<property>
  		<name>yarn.resourcemanager.ha.enabled</name>
  		<value>true</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.cluster-id</name>
  		<value>cluster-yarn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.ha.rm-ids</name>
  		<value>rm1,rm2</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.hostname.rm1</name>
  		<value>node1.cn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.hostname.rm2</name>
  		<value>node2.cn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.webapp.address.rm1</name>
  		<value>node1.cn:8088</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.webapp.address.rm2</name>
  		<value>node2.cn:8088</value>
	</property>
	<property>
 		<name>yarn.resourcemanager.zk-address</name>
  		<value>node3.cn:2181,node4.cn:2181,node5.cn:2181</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</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>
</configuration>

9. Trabajadores del archivo de configuración

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/workers
node3.cn
node4.cn
node5.cn

10. Distribuya todo el directorio hadoop-3.2.0 a cada nodo

[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node2.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node3.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node4.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node5.cn:/opt/cluster/

11. Configurar e iniciar zookeeper

referencia 

https://hunter.blog.csdn.net/article/details/96651537

https://hunter.blog.csdn.net/ article / details / 85937442

12. Los tres nodos especificados inician journalnode

(Aquí elijo node3.cn, node4.cn, node5.cn como journalnode)

[root@node3 ~]# hdfs --daemon start journalnode
[root@node4 ~]# hdfs --daemon start journalnode
[root@node5 ~]# hdfs --daemon start journalnode

13. Formatee el nodo de nombre en node1.cn

[root@node1 ~]# hdfs namenode -format

14. Inicie namenode en node1.cn

[root@node1 ~]# hdfs --daemon start namenode

15. Sincronice la información de namenode formateada correctamente en node1.cn en node2.cn

[root@node2 ~]# hdfs namenode -bootstrapStandby

16. Inicie namenode en node2.cn 

[root@node2 ~]# hdfs --daemon start namenode

Ver

17, cierra el servicio

(1) Cierre el nodo de nombre en node1.cn y node2.cn

[root@node1 ~]# hdfs --daemon stop namenode
[root@node2 ~]# hdfs --daemon stop namenode

(2) Cierre JournalNode en node3.cn, node4.cn, node5.cn

[root@node3 ~]# hdfs --daemon stop journalnode
[root@node4 ~]# hdfs --daemon stop journalnode
[root@node5 ~]# hdfs --daemon stop journalnode

18. Formatear ZKFC

Primero inicie zookeeper en node3.cn, node4.cn, node5.cn

Referencia  https://blog.csdn.net/llwy1428/article/details/85937442

Después de iniciar zookeeper, ejecute en node1.cn:

[root@node1 ~]# hdfs zkfc -formatZK

19. Inicie los servicios de hilo y hdfs

[root@node1 ~]# /opt/cluster/hadoop-3.2.0/sbin/start-dfs.sh

[root@node1 ~]# /opt/cluster/hadoop-3.2.0/sbin/start-yarn.sh

20. Verifique el estado de inicio del servicio de cada nodo.

  

  

 

Hasta ahora, Centos 7.4 construye un clúster de Hadoop (HA) y la operación está completa.

Cinco operaciones básicas de shell

(1) Cree un directorio en hdfs

[root@node1 ~]# hdfs dfs -mkdir /hadoop
[root@node1 ~]# hdfs dfs -mkdir /hdfs
[root@node1 ~]# hdfs dfs -mkdir /tmp

(2) Ver el catálogo

[root@node2 ~]# hdfs dfs -ls /

(3) Cargar archivos

Por ejemplo: cree un archivo test.txt en el directorio / opt y escriba algunas palabras (el proceso se omite)

[root@node3 ~]# hdfs dfs -put /opt/test.txt /hadoop

Ver archivos cargados

[root@node4 ~]# hdfs dfs -ls /hadoop
[root@node4 ~]# hdfs dfs -cat /hadoop/test.txt

(4) Eliminar archivos

[root@node5 ~]# hdfs dfs -rm /hadoop/test.txt
Deleted /hadoop/test.txt

6. Ver las páginas de la interfaz de usuario de algunos servicios en el navegador.

1. Ver la información de hdfs

Compruebe la ip de node1.cn y node2.cn respectivamente

http: // nodo1.cn ip : 50070

http: // nodo2.cn ip : 50070

Otras páginas: omitidas.

2. Ver información de ResourceManager

entrar

http: // ip de node1.cn : 8088

o

http: // ip de node2.cn : 8088

 

Otras páginas: omitidas.

Siete, ejecuta mapreduce wordcount

Tome el test.txt anterior como ejemplo

[root@node5 ~]# /opt/cluster/hadoop-3.2.0/bin/yarn jar /opt/cluster/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /hadoop /hadoop/output

Ver el resultado de la ejecución en el navegador

Resultado de la ejecución en ResourceManager

Ver resultados de ejecución

[root@node5 ~]# hdfs dfs -cat /hadoop/output/part-r-00000

 

 

 

Supongo que te gusta

Origin blog.csdn.net/llwy1428/article/details/94467687
Recomendado
Clasificación