1 Description du problème
Dans un cluster Hadoop composé de 3 datanodes, 1 namenode et 1 secondary namenode, l’état est vérifié par commande comme suit, tout semble normal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
( base) root@node4:~# hdfs dfsadmin -report
Configured Capacity: 168292061184 ( 156.73 GB)
Present Capacity: 128058142720 ( 119.26 GB)
DFS Remaining: 128058011648 ( 119.26 GB)
DFS Used: 131072 ( 128 KB)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks ( with replication factor 1) : 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
-------------------------------------------------
Live datanodes ( 3) :
Oui, tout semble normal. Cependant, la page Web HDFS 50070 n’est pas accessible, et le port de fichier HDFS 9000 n’est pas utilisable non plus.
2 Investigation
Après avoir exclu les problèmes de pare-feu et de groupes de sécurité, vérifiez l’utilisation de tous les ports de service :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
( base) root@node4:~# netstat -lntp
Active Internet connections ( only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 516/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1460/sshd: /usr/sbi
tcp 0 0 192.168.0.165:8088 0.0.0.0:* LISTEN 111907/java
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 107217/sshd: root@p
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 110809/sshd: root@p
tcp 0 0 127.0.0.1:6013 0.0.0.0:* LISTEN 105767/sshd: root@p
tcp 0 0 192.168.0.165:8030 0.0.0.0:* LISTEN 111907/java
tcp 0 0 192.168.0.165:8031 0.0.0.0:* LISTEN 111907/java
tcp 0 0 192.168.0.165:8032 0.0.0.0:* LISTEN 111907/java
tcp 0 0 192.168.0.165:8033 0.0.0.0:* LISTEN 111907/java
tcp 0 0 192.168.0.165:9000 0.0.0.0:* LISTEN 111496/java
tcp 0 0 0.0.0.0:9870 0.0.0.0:* LISTEN 111496/java
Deux problèmes ont été découverts :
Le port 50070 n’est pas dans la liste
Le port 9000 est ouvert sur une IP interne
3 Solution
3.1 Problème 1 : Pas de service sur le port 50070
Après une enquête minutieuse, il a été découvert que les temps ont changé, le port WEB HDFS de Hadoop 2.x était 50070, mais dans Hadoop 3.x, il est devenu 9870. Par conséquent, accéder à 9870 permet d’accéder normalement à l’interface Web UI.
3.2 Problème 2 : Pas de service sur le port 9000
Encore une fois, il s’agit d’une modification de la configuration de l’adresse d’écoute par défaut, il suffit de modifier la valeur fs.defaultFS
dans le fichier de configuration.
1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name> fs.defaultFS</name>
<value> hdfs://0.0.0.0:9000</value>
</property>
<property>
<name> hadoop.tmp.dir</name>
<value> file:/usr/hadoop/tmp</value>
<description> Une base pour d'autres répertoires temporaires.</description>
</property>
</configuration>