Hadoop (configuración de clúster) de tecnología de big data


  1. Planificación de la implementación del clúster

Aviso:

  • NameNode y SecondaryNameNode no deben instalarse en el mismo servidor

  • ResourceManager también consume mucha memoria. No lo configure en la misma máquina que NameNode y SecondaryNameNode.

hadoop102

hadoop103

hadoop104

HDFS

NodoNombre

nodo de datos

nodo de datos

Nodo de nombre secundario

nodo de datos

HILO

Administrador de nodos

Administrador de recursos

Administrador de nodos

Administrador de nodos


  1. Descripción del archivo de configuración

Hay dos tipos de archivos de configuración de Hadoop: archivos de configuración predeterminados y archivos de configuración personalizados Solo cuando los usuarios desean modificar un valor de configuración predeterminado, deben modificar el archivo de configuración personalizado y cambiar el valor del atributo correspondiente.

2.1 Archivo de configuración predeterminado

archivo predeterminado para buscar

La ubicación donde se almacena el archivo en el paquete jar de Hadoop

[core-default.xml]

hadoop-common-3.1.3.jar/core-default.xml

[hdfs-predeterminado.xml]

hadoop-hdfs-3.1.3.jar/hdfs-default.xml

[hilo-predeterminado.xml]

hadoop-hilo-común-3.1.3.jar/hilo-default.xml

[mapred-default.xml]

hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

2.2 Archivos de configuración personalizados

Los cuatro archivos de configuración core-site.xml, hdfs-site.xml, yarn-site.xml y mapred-site.xml se almacenan en la ruta $HADOOP_HOME/etc/hadoop y los usuarios pueden volver a modificar la configuración de acuerdo con requerimientos del proyecto.


3. Configurar el clúster

3.1 Archivo de configuración principal

3.1.1 Configurar core-site.xml

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim core-site.xml

El contenido del archivo es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
</configuration>

3.1.2 Configurar hdfs-site.xml [archivo de configuración HDFS]

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim hdfs-site.xml

El contenido del archivo es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

3.1.3 Configurar yarn-site.xml [archivo de configuración YARN]

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

El contenido del archivo es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

3.1.4 Configurar mapred-site.xml [archivo de configuración de MapReduce]

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

El contenido del archivo es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

3.1.5 Distribuir los archivos de configuración de Hadoop configurados en el clúster

[atguigu@hadoop102 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
# 去103和104上查看文件分发情况
[atguigu@hadoop103 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[atguigu@hadoop104 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

3.2 Agrupándose juntos

3.2.1 Configuración de trabajadores

[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

Agregue lo siguiente a este archivo:

hadoop102
hadoop103
hadoop104

Nota: no se permiten espacios al final del contenido agregado en este archivo, y no se permiten líneas en blanco en el archivo.

Sincronice todos los archivos de configuración de nodos:

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc

3.2.2 Iniciar el clúster

(1) Formatee el NameNode.

Si el clúster se inicia por primera vez , debe formatear NameNode en el nodo hadoop102 (Nota: formatear NameNode generará una nueva ID de clúster, lo que resultará en ID de clúster inconsistentes entre NameNode y DataNode, y el clúster no puede encontrar el Si el clúster se está ejecutando Si necesita volver a formatear el NameNode, primero debe detener los procesos de namenode y datanode, y eliminar los directorios de datos y registros de todas las máquinas antes de formatear).

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs namenode -format

(2) Iniciar HDFS

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

(3) Iniciar HILO

Inicie YARN en el nodo (hadoop103) configurado con ResourceManager

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-yarn.sh

3.2.3 Resumen de los métodos de inicio/detención del clúster

(1) Cada módulo se inicia/detiene por separado (la configuración de ssh es un requisito previo) de uso común

  • Inicio/detención general de HDFS

start-dfs.sh/stop-dfs.sh
  • Inicio/parada general HILO

start-yarn.sh/stop-yarn.sh

(2) Cada componente de servicio se inicia/detiene uno por uno

  • Iniciar/detener componentes HDFS individualmente

hdfs --daemon start/stop namenode/datanode/secondarynamenode
  • iniciar/detener HILO

yarn --daemon start/stop resourcemanager/nodemanager

3.3 Escribir scripts comunes para clústeres de Hadoop

3.3.1 Secuencia de comandos de inicio y apagado del clúster de Hadoop (incluidos HDFS, Yarn, Historyserver): myhadoop.sh

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim myhadoop.sh
  • Introduzca la siguiente:

#!/bin/bash

if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi

case $1 in
"start")
        echo " ======启动 hadoop集群 ======="
        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
;;
"stop")
        echo " ==========关闭 hadoop集群 ========="
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac
  • Guarde y salga, luego otorgue el permiso de ejecución del script

[atguigu@hadoop102 bin]$ chmod +x myhadoop.sh

3.3.2 Ver los scripts de proceso Java de los tres servidores: jpsall

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim jpsall
  • Introduzca la siguiente:

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done
  • Guarde y salga, luego otorgue el permiso de ejecución del script

[atguigu@hadoop102 bin]$ chmod +x jpsall

Distribuya el directorio /home/atguigu/bin para asegurarse de que el script personalizado se pueda usar en las tres máquinas.

[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin/

3.4 URL comunes

(1) Ver el NameNode de HDFS en el lado web

①Ingrese en el navegador: http://hadoop102:9870

② Ver la información de datos almacenada en HDFS

(2) Ver el ResourceManager de YARN en el lado web

①Ingrese en el navegador: http://hadoop103:8088

② Verifique la información del trabajo que se ejecuta en YARN


3.3 Configurar servidor de historial

Para ver el funcionamiento histórico del programa, debe configurar el servidor de historial. Los pasos de configuración específicos son los siguientes:

1) Configurar mapred-sitio.xml

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

Agregue la siguiente configuración a este archivo:

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

2) Configuración de distribución

[atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

3) Inicie el servidor de historial en hadoop102

[atguigu@hadoop102 hadoop]$ mapred --daemon start historyserver

4) Verifique si el servidor de historial está iniciado

[atguigu@hadoop102 hadoop]$ jps

5) Ver historial de trabajos

http://hadoop102:19888/historialtrabajo

3.4 Configurar la agregación de registros

Concepto de agregación de registros: después de que se ejecuta la aplicación, la información de registro que ejecuta el programa se carga en el sistema HDFS.

Beneficios de la función de agregación de registros: es conveniente ver los detalles de la operación del programa, lo cual es conveniente para el desarrollo y la depuración.

Nota: Para habilitar la función de agregación de registros, es necesario reiniciar NodeManager, ResourceManager e HistoryServer.

Los pasos específicos para habilitar la función de agregación de registros son los siguientes:

1) Configurar hilo-sitio.xml

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

Agregue la siguiente configuración a este archivo:

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

2) Configuración de distribución

[atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

3) Cierre NodeManager, ResourceManager e HistoryServer

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguigu@hadoop102 hadoop-3.1.3]$ mapred --daemon stophistoryserver

4) Inicie NodeManager, ResourceManage e HistoryServer

[atguigu@hadoop103 ~]$ start-yarn.sh
[atguigu@hadoop102 ~]$mapred --daemon start historyserver

5) Ver registros

Lista de tareas históricas en la dirección del servidor histórico

http://hadoop102:19888/historialtrabajo

3.5 Descripción de los números de puerto comunes

nombre del puerto

Hadoop2.x

Hadoop3.x

Puerto de comunicación interno de NameNode

8020 / 9000

8020/9000/9820

Interfaz de usuario HTTP de NameNode

50070

9870

MapReduce ver puerto de tareas de ejecución

8088

8088

Puerto de comunicación del servidor de historial

19888

19888

3.6 Sincronización de tiempo de clúster

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

1)需求

找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用1分钟同步一次。

2)时间服务器配置(必须root用户)

(1)查看hadoop102服务状态和开机自启动状态(如果开着就关掉)

[atguigu@hadoop102 ~]$ sudo systemctl status ntpd
[atguigu@hadoop102 ~]$ sudo systemctl is-enabled ntpd
# 关闭
[atguigu@hadoop102 ~]$ sudo systemctl disabled ntpd

(2)修改hadoop102的ntp.conf配置文件

[atguigu@hadoop102 ~]$ sudo vim /etc/ntp.conf

修改内容如下:

①修改1(授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict192.168.1.0 mask 255.255.255.0 nomodify notrap
====> 将上面的注释去掉(并将192.168.1.0改成192.168.10.0)
restrict 192.168.10.0 mask255.255.255.0 nomodify notrap

 ②修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
====> 给上面的内容添加注释
#server0.centos.pool.ntp.org iburst
#server1.centos.pool.ntp.org iburst
#server2.centos.pool.ntp.org iburst
#server3.centos.pool.ntp.org iburst

③添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3)修改hadoop102的/etc/sysconfig/ntpd 文件

[atguigu@hadoop102 ~]$ sudo vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

(4)重新启动ntpd服务

[atguigu@hadoop102 ~]$ sudo systemctl start ntpd

(5)设置ntpd服务开机启动

[atguigu@hadoop102 ~]$ sudo systemctl enable ntpd

3)其他机器配置(必须root用户)

(1)关闭所有节点上ntp服务和自启动

[root@hadoop103 ~]$ systemctl stop ntpd
[root@hadoop103 ~]$ systemctl disable ntpd
 
[root@hadoop104 ~]$ systemctl stop ntpd
[root@hadoop104 ~]$ systemctl disable ntpd

(2)在其他机器配置1分钟与时间服务器同步一次

[root@hadoop103 ~]$ sudo crontab -e

编写定时任务如下:

*/1 * * * * /usr/sbin/ntpdate hadoop102

(3)修改任意机器时间

[root@hadoop103 ~]$ date -s "2021-9-1111:11:11"

(4)1分钟后查看机器是否与时间服务器同步

[root@hadoop103 ~]$ date

4. Hadoop常用网址

  • Web端查看HDFS的NameNode:

  • 查看HDFS上存储的数据信息

  • Web端查看YARN的ResourceManager

  • 查看YARN上运行的Job信息

  • 查看JobHistory

Supongo que te gusta

Origin blog.csdn.net/m0_57126939/article/details/129170103
Recomendado
Clasificación