Hadoop (configuration en cluster) de la technologie Big Data


  1. Planification du déploiement du cluster

Avis:

  • NameNode et SecondaryNameNode ne doivent pas être installés sur le même serveur

  • ResourceManager consomme également beaucoup de mémoire, ne le configurez pas sur la même machine que NameNode et SecondaryNameNode.

hadoop102

hadoop103

hadoop104

HDFS

NomNoeud

DataNode

DataNode

NoeudNomSecondaire

DataNode

FIL

NodeManagerName

Gestionnaire de ressources

NodeManagerName

NodeManagerName


  1. Description du fichier de configuration

Il existe deux types de fichiers de configuration Hadoop : les fichiers de configuration par défaut et les fichiers de configuration personnalisés. Ce n'est que lorsque les utilisateurs souhaitent modifier une valeur de configuration par défaut qu'ils doivent modifier le fichier de configuration personnalisé et modifier la valeur d'attribut correspondante.

2.1 Fichier de configuration par défaut

fichier par défaut à récupérer

L'emplacement où le fichier est stocké dans le package Hadoop jar

[core-default.xml]

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

[hdfs-default.xml]

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

[fil-default.xml]

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

[mapred-default.xml]

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

2.2 Fichiers de configuration personnalisés

Les quatre fichiers de configuration core-site.xml, hdfs-site.xml, yarn-site.xml et mapred-site.xml sont stockés dans le chemin $HADOOP_HOME/etc/hadoop, et les utilisateurs peuvent modifier à nouveau la configuration en fonction de exigences du projet.


3. Configurer le cluster

3.1 Fichier de configuration de base

3.1.1 Configurer core-site.xml

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

Le contenu du fichier est le suivant :

<?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 Configurer hdfs-site.xml [fichier de configuration HDFS]

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

Le contenu du fichier est le suivant :

<?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 Configurer yarn-site.xml [fichier de configuration YARN]

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

Le contenu du fichier est le suivant :

<?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 Configurer mapred-site.xml [fichier de configuration MapReduce]

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

Le contenu du fichier est le suivant :

<?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 Distribuer les fichiers de configuration Hadoop configurés sur le cluster

[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 Regroupement

3.2.1 Configuration des travailleurs

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

Ajoutez ce qui suit à ce fichier :

hadoop102
hadoop103
hadoop104

Remarque : les espaces ne sont pas autorisés à la fin du contenu ajouté dans ce fichier et les lignes vides ne sont pas autorisées dans le fichier.

Synchronisez tous les fichiers de configuration de nœud :

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

3.2.2 Démarrer le cluster

(1) Formatez le NameNode.

Si le cluster est démarré pour la première fois , vous devez formater le NameNode sur le nœud hadoop102 (Remarque : le formatage du NameNode générera un nouvel identifiant de cluster, ce qui entraînera des identifiants de cluster incohérents entre le NameNode et le DataNode, et le cluster ne pourra pas trouver le Si le cluster est en cours d'exécution Si vous devez reformater le NameNode, vous devez d'abord arrêter les processus namenode et datanode, puis supprimer les répertoires de données et de journaux de toutes les machines avant le formatage.)

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

(2) Démarrer HDFS

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

(3) Démarrer le FIL

Démarrez YARN sur le nœud (hadoop103) configuré avec ResourceManager

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

3.2.3 Résumé des méthodes de démarrage/arrêt du cluster

(1) Chaque module est démarré/arrêté séparément (la configuration de ssh est un prérequis) couramment utilisé

  • Démarrage/arrêt global HDFS

start-dfs.sh/stop-dfs.sh
  • Fil de démarrage/arrêt global

start-yarn.sh/stop-yarn.sh

(2) Chaque composant de service démarre/s'arrête un par un

  • Démarrer/arrêter les composants HDFS individuellement

hdfs --daemon start/stop namenode/datanode/secondarynamenode
  • démarrer/arrêter FIL

yarn --daemon start/stop resourcemanager/nodemanager

3.3 Écrire des scripts communs pour les clusters Hadoop

3.3.1 Script de démarrage et d'arrêt du cluster Hadoop (y compris HDFS, Yarn, Historyserver) : myhadoop.sh

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim myhadoop.sh
  • Entrez ce qui suit :

#!/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
  • Enregistrez et quittez, puis donnez au script l'autorisation d'exécution

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

3.3.2 Visualiser les scripts de processus Java des trois serveurs : jpsall

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim jpsall
  • Entrez ce qui suit :

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done
  • Enregistrez et quittez, puis donnez au script l'autorisation d'exécution

[atguigu@hadoop102 bin]$ chmod +x jpsall

Distribuez le répertoire /home/atguigu/bin pour vous assurer que le script personnalisé peut être utilisé sur les trois machines.

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

3.4 URL communes

(1) Afficher le NameNode de HDFS sur le Web

①Saisie dans le navigateur : http://hadoop102:9870

② Afficher les informations de données stockées sur HDFS

(2) Afficher le ResourceManager de YARN sur le Web

①Saisie dans le navigateur : http://hadoop103:8088

② Vérifiez les informations de travail en cours d'exécution sur YARN


3.3 Configurer le serveur d'historique

Afin de visualiser le fonctionnement historique du programme, vous devez configurer le serveur d'historique. Les étapes de configuration spécifiques sont les suivantes :

1) Configurer mapred-site.xml

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

Ajoutez la configuration suivante à ce fichier :

<!-- 历史服务器端地址 -->
<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) Paramétrage de la diffusion

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

3) Démarrez le serveur d'historique dans hadoop102

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

4) Vérifiez si le serveur d'historique est démarré

[atguigu@hadoop102 hadoop]$ jps

5) Afficher l'historique des tâches

http://hadoop102:19888/jobhistory

3.4 Configurer l'agrégation de journaux

Concept d'agrégation de journaux : une fois l'application en cours d'exécution, les informations du journal d'exécution du programme sont téléchargées sur le système HDFS.

Avantages de la fonction d'agrégation de journaux : il est pratique d'afficher les détails de l'opération du programme, ce qui est pratique pour le développement et le débogage.

Remarque : Pour activer la fonction d'agrégation de journaux, NodeManager, ResourceManager et HistoryServer doivent être redémarrés.

Les étapes spécifiques pour activer la fonction d'agrégation de journaux sont les suivantes :

1) Configurer fil-site.xml

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

Ajoutez la configuration suivante à ce fichier :

<!-- 开启日志聚集功能 -->
<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) Paramétrage de la diffusion

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

3) Fermez NodeManager, ResourceManager et HistoryServer

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

4) Démarrez NodeManager, ResourceManage et HistoryServer

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

5) Afficher les journaux

Liste des tâches historiques dans l'adresse du serveur historique

http://hadoop102:19888/jobhistory

3.5 Description des numéros de port communs

nom du port

Hadoop2.x

Hadoop3.x

Port de communication interne NameNode

8020 / 9000

8020 / 9000/9820

Interface utilisateur HTTP NameNode

50070

9870

Port de la tâche d'exécution de la vue MapReduce

8088

8088

Port de communication du serveur d'historique

19888

19888

3.6 Synchronisation de l'heure du cluster

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

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

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

Je suppose que tu aimes

Origine blog.csdn.net/m0_57126939/article/details/129170103
conseillé
Classement