Ricerca nel sito web

Come installare Apache Hadoop su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Su questa pagina

  1. Prerequisiti
  2. Installazione di Java OpenJDK
  3. Impostazione dell'autenticazione SSH senza password e utente
  4. Download di Hadoop
  5. Impostazione delle variabili d'ambiente Hadoop
  6. Impostazione del cluster Apache Hadoop: modalità pseudo-distribuita
    1. Impostazione di NameNode e DataNode
    2. Responsabile del filato

    Apache Hadoop è un framework open source per l'elaborazione e l'archiviazione di big data. Nelle industrie odierne, Hadoop diventa il framework standard per i big data. Hadoop è progettato per essere eseguito su sistemi distribuiti con centinaia o addirittura migliaia di computer in cluster o server dedicati. Con questo in mente, Hadoop può gestire set di dati di grandi dimensioni con volume e complessità elevati sia per i dati strutturati che per quelli non strutturati.

    Ogni distribuzione Hadoop contiene i seguenti componenti:

    1. Hadoop Common: le utilità comuni che supportano gli altri moduli Hadoop.
    2. Hadoop Distributed File System (HDFS): un file system distribuito che fornisce un accesso ad alto throughput ai dati dell'applicazione.
    3. Hadoop YARN: un framework per la pianificazione dei lavori e la gestione delle risorse del cluster.
    4. Hadoop MapReduce: un sistema basato su YARN per l'elaborazione parallela di grandi set di dati.

    In questo tutorial, installeremo l'ultima versione di Apache Hadoop su un server Ubuntu 22.04. Hadoop viene installato su un server a nodo singolo e creiamo una distribuzione di Hadoop in modalità pseudo-distribuita.

    Prerequisiti

    Per completare questa guida, avrai bisogno dei seguenti requisiti:

    • Un server Ubuntu 22.04 - Questo esempio utilizza un server Ubuntu con nome host server hadoop e indirizzo IP 192.168.5.100.
    • Un utente non root con privilegi di amministratore sudo/root.

    Installazione di Java OpenJDK

    Hadoop è un enorme progetto sotto la Apache Software Foundation, è scritto principalmente in Java. Al momento della stesura di questo documento, l'ultima versione di hadoop è la v3.3,4, che è completamente compatibile con Java v11.

    Java OpenJDK 11 è disponibile per impostazione predefinita nel repository Ubuntu e lo installerai tramite APT.

    Per iniziare, esegui il comando apt di seguito per aggiornare e aggiornare elenchi/repository di pacchetti sul tuo sistema Ubuntu.

    sudo apt update

    Ora installa Java OpenJDK 11 tramite il comando apt di seguito. Nel repository Ubuntu 22.04, il pacchetto default-jdk fa riferimento a Java OpenJDK v11.

    sudo apt install default-jdk

    Quando richiesto, inserire y per confermare e premere INVIO per procedere. E inizierà l'installazione di Java OpenJDK.

    Dopo aver installato Java, eseguire il comando seguente per verificare la versione di Java. Dovresti installare Java OpenJDK 11 sul tuo sistema Ubuntu.

    java -version

    Ora che Java OpebnJDK è installato, configurerai un nuovo utente con autenticazione SSH senza password che verrà utilizzato per eseguire processi e servizi hadoop.

    Impostazione dell'autenticazione SSH senza password e utente

    Apache Hadoop richiedeva che il servizio SSH fosse in esecuzione sul sistema. Questo verrà utilizzato dagli script hadoop per la gestione del demone hadoop remoto sul server remoto. In questo passaggio, creerai un nuovo utente che verrà utilizzato per eseguire processi e servizi hadoop e quindi configurare l'autenticazione SSH senza password.

    Se non hai SSH installato sul tuo sistema, esegui il comando apt qui sotto per installare SSH. Il pacchetto pdsh è un client shell remoto multithread che consente di eseguire comandi su più host in modalità parallela.

    sudo apt install openssh-server openssh-client pdsh

    Ora esegui il comando seguente per creare un nuovo utente hadoop e impostare la password per l'utente hadoop.

    sudo useradd -m -s /bin/bash hadoop
    sudo passwd hadoop

    Inserisci la nuova password per l'utente hadoop e ripeti la password.

    Successivamente, aggiungi l'utente hadoop al gruppo sudo tramite il comando usermod di seguito. Ciò consente all'utente hadoop di eseguire il comando sudo.

    sudo usermod -aG sudo hadoop

    Ora che l'utente hadoop è stato creato, accedi all'utente hadoop tramite il comando seguente.

    su - hadoop

    Dopo aver effettuato l'accesso, la tua richiesta diventerà così: \[email protetta]\.

    Quindi, esegui il comando seguente per generare la chiave pubblica e privata SSH. Quando viene richiesto di impostare la password per la chiave, premere INVIO per saltare.

    ssh-keygen -t rsa

    La chiave SSH è ora generata nella directory ~/.ssh. id_rsa.pub è la chiave pubblica SSH e il file id_rsa è la chiave privata.

    È possibile verificare la chiave SSH generata tramite il seguente comando.

    ls ~/.ssh/

    Successivamente, esegui il comando seguente per copiare la chiave pubblica SSH id_rsa.pub nel file authorized_keys e modifica l'autorizzazione predefinita a 600.

    In ssh, il file authorized_keys\ è dove hai memorizzato la chiave pubblica ssh, che può essere costituita da più chiavi pubbliche. Chiunque abbia la chiave pubblica memorizzata nel file authorized_keys e abbia la chiave privata corretta sarà in grado di connettersi al server come utente hadoop senza password.

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

    Al termine della configurazione senza password SSH, è possibile verificare collegandosi al computer locale tramite il comando ssh riportato di seguito.

    ssh localhost

    Inserisci yes per confermare e aggiungi l'impronta digitale SSH e sarai connesso al server senza autenticazione tramite password.

    Ora che l'utente hadoop è stato creato e l'autenticazione SSH senza password configurata, passerai all'installazione di hadoop scaricando il pacchetto binario di hadoop.

    Download di Hadoop

    Dopo aver creato un nuovo utente e configurato l'autenticazione SSH senza password, ora puoi scaricare il pacchetto binario Apache Hadoop e configurare la directory di installazione per esso. In questo esempio, scaricherai hadoop v3.3.4 e la directory di installazione di destinazione sarà la directory /usr/local/hadoop.

    Eseguire il comando wget seguente per scaricare il pacchetto binario Apache Hadoop nella directory di lavoro corrente. Dovresti ottenere il file hadoop-3.3.4.tar.gz nella tua attuale directory di lavoro.

    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

    Successivamente, estrai il pacchetto Apache Hadoop hadoop-3.3.4.tar.gz tramite il comando tar di seguito. Quindi, sposta la directory estratta in /usr/local/hadoop.

    tar -xvzf hadoop-3.3.4.tar.gz
    sudo mv hadoop-3.3.4 /usr/local/hadoop

    Infine, cambia la proprietà della directory di installazione di hadoop /usr/local/hadoop con l'utente hadoop e il gruppo hadoop.

    sudo chown -R hadoop:hadoop /usr/local/hadoop

    In questo passaggio, hai scaricato il pacchetto binario Apache Hadoop e configurato la directory di installazione di Hadoop. Con questo in mente, ora puoi iniziare a configurare l'installazione di Hadoop.

    Impostazione delle variabili d'ambiente Hadoop

    Apri il file di configurazione ~/.bashrc tramite il comando nano editor di seguito.

    nano ~/.bashrc

    Aggiungere le seguenti righe al file. Assicurati di inserire le seguenti righe alla fine della riga.

    # Hadoop environment variables
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export HADOOP_HOME=/usr/local/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 il file ed esci dall'editor quando hai finito.

    Successivamente, esegui il comando seguente per applicare le nuove modifiche all'interno del file ~/.bashrc.

    source ~/.bashrc

    Dopo l'esecuzione del comando, verranno applicate le nuove variabili di ambiente. Puoi verificare controllando ogni variabile di ambiente tramite il comando seguente. E dovresti ottenere l'output di ogni variabile d'ambiente.

    echo $JAVA_HOME
    echo $HADOOP_HOME
    echo $HADOOP_OPTS

    Successivamente, configurerai anche la variabile di ambiente JAVA_HOME nello script hadoop-env.sh.

    Apri il file hadoop-env.sh utilizzando il seguente comando nano editor. Il file hadoop-env.sh è disponibile nella directory $HADOOP_HOME, che fa riferimento alla directory di installazione di hadoop /usr/local/hadoop.

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

    Rimuovere il commento dalla riga dell'ambiente JAVA_HOME e modificare il valore nella directory di installazione di Java OpenJDK /usr/lib/jvm/java-11-openjdk-amd64.

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

    Salva il file ed esci dall'editor quando hai finito.

    Con la configurazione delle variabili di ambiente, esegui il comando seguente per verificare la versione di Hadoop sul tuo sistema. Dovresti vedere Apache Hadoop 3.3.4 installato sul tuo sistema.

    hadoop version

    A questo punto, sei pronto per impostare e configurare il cluster Hadoop, che può essere distribuito in più modalità.

    Impostazione del cluster Apache Hadoop: modalità pseudo-distribuita

    In Hadoop, puoi creare un cluster in tre diverse modalità:

    1. Modalità locale (autonoma): installazione predefinita di Hadoop, che viene eseguita come un singolo processo Java e modalità non distribuita. Con questo, puoi facilmente eseguire il debug del processo hadoop.
    2. Modalità pseudo-distribuita: consente di eseguire un cluster Hadoop con modalità distribuita anche con un solo nodo/server. In questa modalità, i processi hadoop verranno eseguiti in processi Java separati.
    3. Modalità completamente distribuita: ampia distribuzione di hadoop con più o addirittura migliaia di nodi/server. Se vuoi eseguire hadoop in produzione, dovresti usare hadoop in modalità completamente distribuita.

    In questo esempio, configurerai un cluster Apache Hadoop con modalità pseudo-distribuita su un singolo server Ubuntu. Per fare ciò, apporterai modifiche ad alcune delle configurazioni di hadoop:

    • core-site.xml: verrà utilizzato per definire NameNode per il cluster hadoop.
    • hdfs-site.xml - Questa configurazione verrà utilizzata per definire il DataNode sul cluster Hadoop.
    • mapred-site.xml - La configurazione MapReduce per il cluster hadoop.
    • yarn-site.xml - Configurazione di ResourceManager e NodeManager per il cluster Hadoop.

    Configurazione di NameNode e DataNode

    Innanzitutto, configurerai NameNode e DataNode per il cluster Hadoop.

    Apri il file $HADOOP_HOME/etc/hadoop/core-site.xml utilizzando il seguente editor nano.

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

    Aggiungi le seguenti righe al file. Assicurati di modificare l'indirizzo IP di NameNode oppure puoi sostituirlo con 0.0.0.0 in modo che NameNode venga eseguito su tutte le interfacce e gli indirizzi IP.

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

    Salva il file ed esci dall'editor quando hai finito.

    Eseguire quindi il comando seguente per creare nuove directory che verranno utilizzate per il DataNode nel cluster Hadoop. Quindi, modifica la proprietà delle directory DataNode all'utente hadoop.

    sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
    sudo chown -R hadoop:hadoop /home/hadoop/hdfs

    Dopodiché, apri il file $HADOOP_HOME/etc/hadoop/hdfs-site.xml utilizzando il comando nano editor di seguito.

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

    Aggiungere la seguente configurazione al file. In questo esempio, configurerai il cluster Hadoop in un singolo nodo, quindi devi modificare il valore dfs.replication su 1. Inoltre, devi specificare la directory che verrà utilizzata per il DataNode.

    <configuration>

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>

       <property>
          <name>dfs.name.dir</name>
          <value>file:///home/hadoop/hdfs/namenode</value>
       </property>

       <property>
          <name>dfs.data.dir</name>
          <value>file:///home/hadoop/hdfs/datanode</value>
       </property>

    </configuration>

    Salva il file ed esci dall'editor quando hai finito.

    Con NameNode e DataNode configurati, eseguire il comando seguente per formattare il file system hadoop.

    hdfs namenode -format

    Riceverai un output come questo:

    Successivamente, avvia NameNode e DataNode tramite il seguente comando. Il NameNode verrà eseguito sull'indirizzo IP del server che hai configurato nel file core-site.xml.

    start-dfs.sh

    Vedrai un output come questo:

    Ora che NameNode e DataNode sono in esecuzione, verificherai entrambi i processi tramite l'interfaccia web.

    L'interfaccia web di hadoop NameNode esegue la porta 9870. Quindi, apri il tuo browser web e visita l'indirizzo IP del server seguito dalla porta 9870 (es: http://192.168.5.100:9870/).

    Ora dovresti ottenere la pagina come la seguente schermata: Il NameNode è attualmente attivo.

    Ora fai clic sul menu Datanodes e dovresti ottenere il DataNode corrente attivo sul cluster Hadoop. Lo screenshot seguente conferma che il DataNode è in esecuzione sulla porta 9864 nel cluster Hadoop.

    Fai clic sull'indirizzo Http del DataNode e dovresti visualizzare una nuova pagina con informazioni dettagliate sul DataNode. Lo screenshot seguente conferma che il DataNode è in esecuzione con la directory del volume /home/hadoop/hdfs/datanode.

    Con NameNode e DataNode in esecuzione, dovrai configurare ed eseguire MapReduce sul gestore Yarn (Yet Another ResourceManager e NodeManager).

    Responsabile del filato

    Per eseguire un MapReduce su Yarn nella modalità pseudo-distribuita, è necessario apportare alcune modifiche ai file di configurazione.

    Apri il file $HADOOP_HOME/etc/hadoop/mapred-site.xml utilizzando il seguente comando nano editor.

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

    Aggiungi le seguenti righe al file. Assicurati di cambiare mapreduce.framework.name in filato.

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.application.classpath</name>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
        </property>
    </configuration>

    Salva il file ed esci dall'editor quando hai finito.

    Successivamente, apri la configurazione di Yarn $HADOOP_HOME/etc/hadoop/yarn-site.xml utilizzando il seguente comando dell'editor nanoe.

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

    Modificare la configurazione predefinita con le seguenti impostazioni.

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>

    Salva il file ed esci dall'editor quando hai finito.

    Ora esegui il comando seguente per avviare i demoni Yarn. E dovresti vedere che sia ResourceManager che NodeManager stanno iniziando.

    start-yarn.sh

    ResourceManager dovrebbe essere in esecuzione nel pot predefinito 8088. Torna al browser Web e visita l'indirizzo IP del server seguito dalla porta 8088 di ResourceManager (ad esempio: http://192.168.5.100:8088/).

    Dovresti vedere l'interfaccia web di hadoop ResourceManager. Da qui, puoi monitorare tutti i processi in esecuzione all'interno del cluster Hadoop.

    Fai clic sul menu Nodi e dovresti ottenere l'attuale nodo in esecuzione sul cluster Hadoop.

    Ora il cluster Hadoop è in esecuzione in modalità pseudo-distribuita. Ciò significa che ogni processo Hadoop viene eseguito come un singolo processo su un server Ubuntu 22.04 a nodo singolo, che include NameNode, DataNode, MapReduce e Yarn.

    Conclusione

    In questa guida, hai installato Apache Hadoop su un singolo server Ubuntu 22.04. Hai installato Hadoop con la modalità pseudo-distribuita abilitata, il che significa che ogni componente Hadoop è in esecuzione come un singolo processo Java sul sistema. In questa guida, hai anche imparato come configurare Java, configurare le variabili di ambiente di sistema e configurare l'autenticazione SSH senza password tramite chiave pubblica-privata SSH.

    Questo tipo di distribuzione Hadoop, modalità pseudo-distribuita, è consigliato solo per i test. Se desideri un sistema distribuito in grado di gestire set di dati medi o grandi, puoi distribuire Hadoop in modalità Cluster, che richiede più sistemi di elaborazione e fornisce un'elevata disponibilità per la tua applicazione.