#howto - installare hadoop e hdfs
Ultimamente per lavoro mi è capitato di dover utilizzare Scala, Spark e Hadoop. Se per configurare le prime due tecnologie il processo è stato abbastanza automatico, l’ultimo ha invece dato qualche rogna…
Hadoop e HDFS
Per chi non fosse sicuro di cosa sta andando a leggere, Hadoop è un framework open source progettato da Apache per gestire grandi quantità di dati in modo distribuito su cluster di computer. È scritto per lo più in linguaggio Java e si può trovare il codice sorgente su Github. Insieme ad Hadoop viene installato il driver HDFS, ovvero il driver per Hadoop File System, il sistema di archiviazione distribuito di Hadoop.
Prerequisiti
Si presuppone che, il lettore, abbia gia Scala e Apache Spark (o Python e Pyspark). Inoltre deve avere Java installato e la variabile JAVA_HOME impostata con il path dell’installazione di Java.
Installazione
I vari package manager non danno la possibilità di installare in maniera automatizzata, per gli utenti di ArchLinux si può trovare in teoria il pacchetto su AUR, pronto per essere installato tramite:
git clone https://aur.archlinux.org/packages/hadoop
cd hadoop
makepkg -si
Tuttavia anche questo spesso è mal funzionante e non esente da errori di compilazione. Ecco quindi un metodo funzionante e generico per l’installazione di Hadoop, indipendente dalla distribuzione o dal package manager.
Sito web e download
Fondamentalmente si deve installare il software manualmente scaricando l’archivio, come già descritto in un articolo precedente.
Si acceda al sito web di hadoop per il download, quindi si scarichi la versione che si desidera dalla colonna “Binary download”. Nella schermata successiva scaricare il tar.gz tramite link in alto.
Alternativamente si può effettuare quest’operazione di download direttamente da terminale con il tool wget
, supponendo di voler scaricare la versione 3.3.6
:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
In caso di versioni diverse, basta cambiare il numero di versione nel link.
Decompressione e installazione
Una volta effettuato il download basta decomprimere il file tar.gz
scaricato con l’apposito comando:
tar -xvzf hadoop*tar.gz
Quindi copiare la cartella sotto un punto del sistema raggiungibile a tutti gli utenti.
In genere i software di terze parti si installano sotto la cartella /opt
:
rm hadoop*tar.gz # in questo modo viene eliminato l'archivio
cp -r hadoop* /opt/hadoop
Aggiornare il PATH e le variabili d’ambiente
È quindi arrivato il momento di aggiornare le variabili d’ambiente. Per aggiornarle è necessario modificare uno dei file di avvio della nostra shell.
Ad esempio se si utilizza bash, si può pensare di modificare il file $HOME/.bashrc:
export HADOOP_HOME=/opt/hadoop
export PATH="$PATH:$HADOOP_HOME/bin"
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
Oppure, al posto degli ultimi export, è possibile copiare le librerie nella cartella apposita:
ln -sf $PWD/libhadoop.a /usr/lib/libhadoop.a
ln -sf $PWD/libhadooppipes.a /usr/lib/libhadooppipes.a
ln -sf $PWD/libhadooputils.a /usr/lib/libhadooputils.a
ln -sf $PWD/libhdfs.a /usr/lib/libhdfs.a
ln -sf $PWD/libhdfs.so.0.0.0 /usr/lib/libhdfs.so
ln -sf $PWD/libhdfspp.a /usr/lib/libhdfspp.a
ln -sf $PWD/libhdfspp.so.0.1.0 /usr/lib/libhdfspp.so
ln -sf $PWD/libnativetask.a /usr/lib/libnativetask.a
ln -sf $PWD/libnativetask.so.1.0.0 /usr/lib/libnativetask.so
Ma è una pratica che non consiglio.
Test e avvio di Spark Shell
Per testare che tutto funzioni correttamente, aprire il terminale e quindi:
spark-shell
Se appare:
WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Allora qualcosa è andato storto, riprovare i vari step. Inoltre digitare:
hadoop version
Per verificare che la versione corrisponda.