Come installare e configurare Hadoop su Ubuntu 20.04 LTS

23 nov 2020 7 min di lettura
Come installare e configurare Hadoop su Ubuntu 20.04 LTS
Indice dei contenuti

Introduzione

Hadoop è un framework software gratuito, open source e basato su Java utilizzato per l'archiviazione e l'elaborazione di grandi set di dati su cluster di macchine. Utilizza HDFS per archiviare i propri dati ed elaborarli utilizzando MapReduce.

Hadoop  è un ecosistema di strumenti Big Data utilizzati principalmente per il data mining e l'apprendimento automatico.

Apache Hadoop 3.3 viene fornito con notevoli miglioramenti e molte correzioni di bug rispetto alle versioni precedenti. Ha quattro componenti principali come Hadoop Common, HDFS, YARN e MapReduce.

Questo tutorial ti spiegherà come installare e configurare Apache Hadoop su Ubuntu 20.04 LTS Focal Fossa.

Se desideri installare Hadoop su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh root@IP_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh nome_utente@IP_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Installare Java

Hadoop è scritto in Java e supporta solo Java versione 8. Hadoop versione 3.3 e le ultime supportano anche il runtime Java 11 e Java 8.

Puoi installare OpenJDK 8 dai repository apt predefiniti:

sudo apt update 
sudo apt install openjdk-8-jdk

Una volta installato, verifica la versione installata di Java con il seguente comando:

java -version 

Dovresti ottenere il seguente output:

openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

Creare un utente Hadoop

È una buona idea creare un utente separato per eseguire Hadoop per motivi di sicurezza.

Esegui il seguente comando per creare un nuovo utente con nome hadoop:

sudo adduser hadoop 

Fornisci e conferma la nuova password come mostrato di seguito:

Adding user `hadoop' ...
Adding new group `hadoop' (1000) ...
Adding new user `hadoop' (1000) with group `hadoop' ...
The home directory `/home/hadoop' already exists.  Not copying from `/etc/skel'.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hadoop
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

Configurare l'autenticazione basata su chiave SSH

Successivamente, sarà necessario configurare l'autenticazione SSH senza password per il sistema locale.

Innanzitutto, effettua il login con l'utente hadoop con il comando su:

su - hadoop 

Quindi, esegui il seguente comando per generare coppie di chiavi pubbliche e private:

ssh-keygen -t rsa 

Ti verrà chiesto di inserire il nome del file. Basta premere Invio per completare il processo:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:pfEaF19DFMxXeS1M3mWYPwcn2/GRb6Drv14mVNuPKow hadoop@TEST-SERVER-1
The key's randomart image is:
+---[RSA 3072]----+
|             *=+O|
|             o@B*|
|        . o  .+@O|
|         = o...+X|
|        S o ...o+|
|         +  .. ..|
|        .o .  o +|
|        E o .. + |
|           ..o+. |
+----[SHA256]-----+

Successivamente, aggiungi le chiavi pubbliche generate da id_rsa.pub a authorized_keys e imposta l'autorizzazione appropriata:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
chmod 640 ~/.ssh/authorized_keys 

Successivamente, verifica l'autenticazione SSH senza password con il seguente comando:

ssh localhost 

Ti verrà chiesto di autenticare gli host aggiungendo chiavi RSA agli host noti. Digita yes e premi Invio per autenticare l'host locale:

The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:CoGsEfZLQ4ELMBhVTnCASQ4DmNdmjcke/D35mmFvF9o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Installare Hadoop

Innanzitutto, assicurati di essere connesso con l'utente hadoop con il seguente comando:

su - hadoop 

Successivamente, scarica l'ultima versione di Hadoop utilizzando il comando wget:

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz 

Una volta scaricato, estrai il file scaricato con il comando tar:

tar -xvzf hadoop-3.3.0.tar.gz 

Successivamente, rinomina la directory estratta in hadoop:

mv hadoop-3.3.0 hadoop 

Successivamente, dovrai configurare Hadoop e le variabili d'ambiente Java sul tuo sistema.

Apri il file ~/.bashrc nel tuo editor di testo preferito, qui utilizziamo nano:

nano ~/.bashrc 

Aggiungi le seguenti righe:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

Salva e chiudi il file. Quindi, attiva le variabili d'ambiente con il seguente comando:

source ~/.bashrc 

Quindi, apri il file della variabile d'ambiente Hadoop:

nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh 

Decommenta e modifica la variabile JAVA_HOME secondo il percorso di installazione di Java:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/

Salva e chiudi il file quando hai finito.

Configurare Hadoop

Innanzitutto, dovrai creare le directory namenode e datanode all'interno della home directory di Hadoop:

Eseguire il comando seguente per creare entrambe le directory:

mkdir -p ~/hadoopdata/hdfs/namenode 
mkdir -p ~/hadoopdata/hdfs/datanode

Successivamente, modifica il file core-site.xml e aggiorna con l'hostname del tuo sistema:

nano $HADOOP_HOME/etc/hadoop/core-site.xml 

Modificare il seguente file in base all'hostname del sistema:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://TUO_DOMINIO.com:9000</value>
        </property>
</configuration>

Salva e chiudi il file. Quindi, modifica il file hdfs-site.xml:

nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml 

Modificare il percorso della directory NameNode e DataNode come mostrato di seguito:

<configuration>
 
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
 
        <property>
                <name>dfs.name.dir</name>
                <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
        </property>
 
        <property>
                <name>dfs.data.dir</name>
                <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
        </property>
</configuration>

Salva e chiudi il file. Quindi, modifica il file mapred-site.xml:

nano $HADOOP_HOME/etc/hadoop/mapred-site.xml 

Apporta le seguenti modifiche:

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

Salva e chiudi il file. Quindi, modifica il file yarn-site.xml:

nano $HADOOP_HOME/etc/hadoop/yarn-site.xml 

Apporta le seguenti modifiche:

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

Salva e chiudi il file quando hai finito.

Avviare Hadoop Cluster

Prima di avviare il cluster Hadoop. Dovrai formattare il Namenode come utente hadoop.

Esegui il seguente comando per formattare il Namenode hadoop:

hdfs namenode -format 

Dovresti ottenere il seguente output:

...
2020-11-23 22:59:13,290 INFO namenode.FSImage: Allocated new BlockPoolId: BP-650323875-127.0.1.1-1606168753269
2020-11-23 22:59:13,320 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted.
2020-11-23 22:59:13,403 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
2020-11-23 22:59:13,595 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
2020-11-23 22:59:13,605 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2020-11-23 22:59:13,610 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2020-11-23 22:59:13,611 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at TUO_HOSTNAME/127.0.1.1
************************************************************/

Dopo aver formattato il Namenode, esegui il seguente comando per avviare il cluster hadoop:

start-dfs.sh 

Una volta avviato con successo HDFS, dovresti ottenere il seguente output:

Starting namenodes on [TUO_DOMINIO.com]
Starting datanodes
Starting secondary namenodes [TUO_DOMINIO.com]
TUO_DOMINIO.com: Warning: Permanently added 'TUO_DOMINIO.com' (ECDSA) to the list of known hosts.

Successivamente, avvia il servizio YARN come mostrato di seguito:

start-yarn.sh 

Dovresti ottenere il seguente output:

Starting resourcemanager
Starting nodemanagers

Ora puoi controllare lo stato di tutti i servizi Hadoop utilizzando il comando jps:

jps 

Dovresti vedere tutti i servizi in esecuzione nel seguente output:

2129 NodeManager
1827 SecondaryNameNode
2452 Jps
1701 DataNode
2024 ResourceManager

Configurare il firewall

Hadoop è ora avviato e in ascolto sulle porte 9870 e 8088.

Se hai il firewall UFW abilitato, sarà necessario consentire a queste porte di attraversare il firewall.

Esegui i comandi seguenti come utente root per consentire le connessioni Hadoop attraverso il firewall:

ufw allow 9870/tcp
ufw allow 8088/tcp 

Accedere a Hadoop Namenode e Resource Manager

Per accedere al Namenode, apri il tuo browser web e visita l'URL http://tuo_dominio.com:9870. Dovresti vedere la schermata di riepilogo del servizio.

Per accedere a Resource Manage, apri il tuo browser web e visita l'URLhttp://tuo_dominio.com:8088. Dovresti vedere la schermata di gestione di Hadoop.

Verificare Hadoop Cluster

A questo punto, il cluster di Hadoop è installato e configurato. Successivamente, creeremo alcune directory nel filesystem HDFS per testare Hadoop.

Assicurati di essere loggato con l'utente hadoop:

su - hadoop

Creiamo una directory nel filesystem HDFS usando il seguente comando:

hdfs dfs -mkdir /test1
hdfs dfs -mkdir /logs

Quindi, esegui il seguente comando per elencare la directory sopra:

hdfs dfs -ls / 

Dovresti ottenere il seguente output:

Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2020-11-23 23:46 /logs
drwxr-xr-x   - hadoop supergroup          0 2020-11-23 23:41 /test1

Inoltre, inserisci alcuni file nel file system di hadoop. Ad esempio, aggiungere i file di registro dalla macchina host al file system hadoop.

hdfs dfs -put /var/log/* /logs/  

È inoltre possibile verificare i file e la directory di cui sopra nell'interfaccia web di Hadoop Namenode.

Vai all'interfaccia web di Namenode, fai clic su Utilities->Browse the file system. Dovresti vedere le tue directory che hai creato in precedenza.

Arrestare Hadoop Cluster

Puoi anche interrompere il servizio Hadoop Namenode e Yarn in qualsiasi momento eseguendo gli script stop-dfs.sh e stop-yarn.sh come utente Hadoop.

Per interrompere il servizio Hadoop Namenode, esegui il seguente comando come utente hadoop:

stop-dfs.sh  

Per interrompere il servizio Hadoop Resource Manager, eseguire il comando seguente:

stop-yarn.sh 

Conclusione

Questo tutorial ti ha spiegato passo passo come installare e configurare Hadoop sul sistema Linux Ubuntu 20.04 LTS Focal Fossa.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.