Apache Hadoop è un framework software open source scritto in Java per l'archiviazione distribuita e il processo distribuito e gestisce le dimensioni molto grandi dei set di dati distribuendoli tra i cluster di computer.
Anziché affidarsi all'elevata disponibilità dell'hardware, i moduli Hadoop sono progettati per rilevare e gestire l'errore a livello dell'applicazione, offrendo così un servizio ad alta disponibilità.
Il framework Hadoop è costituito dai seguenti moduli,
- Hadoop Common:contiene un insieme comune di librerie e utilità che supportano altri moduli Hadoop
- Hadoop Distributed File System (HDFS) – è un file system distribuito basato su Java che memorizza i dati, fornendo un throughput molto elevato all'applicazione.
- Hadoop YARN:gestisce le risorse sui cluster di calcolo e le utilizza per la pianificazione delle applicazioni degli utenti.
- Hadoop MapReduce – è un framework per l'elaborazione dei dati su larga scala.
Questa guida ti aiuterà a installare Apache Hadoop su CentOS 7, Ubuntu 18.04 e Debian 9. Questa guida dovrebbe funzionare anche su Ubuntu 16.04.
Prerequisiti
Passa all'utente root.
su -
O
sudo su -
Installa Java
Apache Hadoop richiede solo Java versione 8. Quindi, puoi scegliere di installare OpenJDK o Oracle JDK.
LEGGI: Come installare Oracle Java su CentOS 7 / RHEL 7
LEGGI: Come installare Oracle Java su Ubuntu 18.04
LEGGI: Come installare Oracle Java su Debian 9
Qui, per questa demo, installerò OpenJDK 8.
### CentOS 7 / RHEL 7 ### # yum -y install java-1.8.0-openjdk wget### Ubuntu 18.04 / 16.04 e Debian 9 ### # apt update # apt install -y openjdk-8-jdk wget
Controlla la versione Java.
# java -versione
Risultato:
openjdk versione "1.8.0_212"OpenJDK Runtime Environment (build 1.8.0_212-b04)OpenJDK 64-Bit Server VM (build 25.212-b04, modalità mista)
Crea un utente Hadoop e abilita l'autenticazione senza password
Si consiglia di creare un utente normale per configurare ed eseguire Apache Hadoop. Quindi, crea un utente chiamato hadoop e imposta una password.
# useradd -m -d /home/hadoop -s /bin/bash hadoop# passwd hadoop
Dopo aver creato un utente, configurare ssh senza password sul sistema locale. Crea una chiave ssh usando i seguenti comandi.
# su - hadoop$ ssh-keygen$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys$ chmod 600 ~/.ssh/authorized_keys
Verificare la comunicazione senza password al sistema locale. Se stai eseguendo ssh per la prima volta, digita yes per aggiungere chiavi RSA a host conosciuti.
$ ssh 127.0.0.1
Installa Apache Hadoop
Scarica Hadoop
Puoi visitare la pagina di Apache Hadoop per scaricare l'ultimo pacchetto Hadoop, oppure puoi emettere il seguente comando nel terminale per scaricare Hadoop v3.2.0.
$ wget https://www-us.apache.org/dist/hadoop/common/stable/hadoop-3.2.0.tar.gz$ tar -zxvf hadoop-3.2.0.tar.gz $ mv hadoop -3.2.0 haoop
Installa Hadoop
Hadoop supporta tre modalità di cluster
- Modalità locale (autonoma):viene eseguita come un unico processo java.
- Modalità pseudo-distribuita:ogni demone Hadoop viene eseguito in un processo separato.
- Modalità completamente distribuita:è un vero e proprio cluster multinodo che va da pochi nodi a cluster estremamente grandi.
Imposta variabili ambientali
Qui configureremo Hadoop in modalità Pseudo-Distribuita. Per cominciare, imposta le variabili ambientali nel file ~/.bashrc.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre ## Modificalo in base al tuo sistema export HADOOP_HOME=/home/hadoop/hadoop ## Modificalo in base al tuo sistema Export hadoop_install =$ hadoop_homeexport hadoop_mapred_home =$ hadoop_homeexport hadoop_common_home =$ hadoop_homeexport hadoop_hdfs_home =$ hadoop_homeexportApplica le variabili ambientali alla sessione corrente.
$ sorgente ~/.bashrcModifica file di configurazione
Modifica il file ambientale Hadoop.
vi $HADOOP_HOME/etc/hadoop/hadoop-env.shImposta la variabile di ambiente JAVA_HOME.
esporta JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jreHadoop ha molti file di configurazione e dobbiamo modificarli in base alle modalità del cluster che abbiamo impostato (Pseudo-distribuito).
$ cd $HADOOP_HOME/etc/hadoopModifica core-site.xml.
fs.defaultFS hdfs://server.itzgeek.local :9000 Modifica hdfs-site.xml.
dfs.replication 1 dfs.name.dir file :///home/hadoop/hadoopdata/hdfs/namenode dfs.data.dir file:///home/hadoop/hadoopdata/hdfs/datanode Crea directory NameNode e DataNode nella directory home dell'utente hadoop.
mkdir -p ~/hadoopdata/hdfs/{namenode,datanode}Modifica mapred-site.xml.
mapreduce.framework.name filato Modifica yarn-site.xml.
yarn.nodemanager.aux-services mapreduce_shuffle Ora formatta il NameNode usando il comando seguente. Non dimenticare di controllare la directory di archiviazione.
$ hdfs namenode -formatRisultato:
. . .. . .2019-05-12 06:38:42,066 INFO common.Storage:la directory di archiviazione /home/hadoop/hadoopdata/hdfs/namenode è stata formattata correttamente.2019-05-12 06:38:42,169 INFO namenode.FSImageFormatProtobuf:salvataggio dell'immagine file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_00000000000000000000 senza compressione2019-05-12 06:38:42,483 INFO namenode.FSImageFormatProtobuf:File immagine /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage .ckpt_0000000000000000000 di dimensione 401 byte salvati in 0 secondi .2019-05-12 06:38:42,501 INFO namenode.NNStorageRetentionManager:Manterrà 1 immagine con txid>=02019-05-12 06:38:42,516 INFO namenode.NameNode:SHUTDOWN_MSG:/******************************************************* *************SHUTDOWN_MSG:chiusura di NameNode su server.itzgeek.local/192.168.1.10********************** **************************************/
Firewall
Consenti Apache Hadoop attraverso il firewall. Esegui i comandi seguenti come utente root.
FirewallD:
firewall-cmd --permanent --add-port=9870/tcpfirewall-cmd --permanent --add-port=8088/tcpfirewall-cmd --reload
UFW:
ufw consentire 9870/tcpufw consentire 8088/tcpufw ricaricare
Avvia il demone NameNode e il demone DataNode utilizzando gli script nella directory /sbin, fornita da Hadoop.
$ start-dfs.sh
Risultato:
Avvio di namenodes su [server.itzgeek.local]server.itzgeek.local:avviso:aggiunto in modo permanente 'server.itzgeek.local,192.168.1.10' (ECDSA) all'elenco degli host noti. Avvio di datanodeslocalhost:avviso:in modo permanente aggiunto 'localhost' (ECDSA) all'elenco degli host conosciuti. Avvio di namenodes secondari [server.itzgeek.local]2019-05-12 06:39:14,171 WARN util.NativeCodeLoader:impossibile caricare la libreria nativa-hadoop per la tua piattaforma. .. utilizzando classi java integrate ove applicabile
Apri il tuo browser web e vai all'URL sottostante per sfogliare il NameNode.
http://ip.ad.dre.ss:9870/Avvia il demone ResourceManager e il demone NodeManager.
$ start-yarn.sh
Risultato:
Avvio di ResourcemanagerAvvio di nodemanager
Apri il tuo browser web e vai all'URL sottostante per accedere a ResourceManager.
http://ip.ad.dre.ss:8088/Test del cluster a nodo singolo Hadoop
Prima di eseguire il caricamento, creiamo una directory su HDFS.
$ hdfs dfs -mkdir /raj
Carichiamo un file nella directory HDFS chiamata raj.
$ hdfs dfs -put ~/.bashrc /raj
I file caricati possono essere visualizzati andando su NomeNode>> Utilità >> Sfoglia il file system in NameNode.
http://ip.ad.dre.ss/explorer.html#/rajCopia i file da HDFS ai tuoi file system locali.
$ hdfs dfs -get /raj /tmp/
Puoi eliminare i file e le directory utilizzando i seguenti comandi.
hdfs dfs -rm -f /raj/.bashrchdfs dfs -rmdir /raj
Conclusione
È tutto. Hai configurato correttamente un cluster Hadoop a nodo singolo e testato il filesystem hadoop. Condividi il tuo feedback nella sezione commenti.