Apache Hadoop installeren en configureren op Ubuntu 20.04
Apache Hadoop is een open-source raamwerk dat gebruikt wordt om gegevens te beheren, op te slaan en te verwerken voor verschillende big data toepassingen die onder geclusterde systemen draaien. Het is geschreven in Java met wat native code in C en shell scripts. Het gebruikt een gedistribueerd bestandssysteem (HDFS) en schaalt op van enkele tot duizenden servers.
Apache Hadoop is gebaseerd op de vier hoofdcomponenten:
- Hadoop Common : Het is de verzameling hulpprogramma’s en bibliotheken die de andere Hadoop modules nodig hebben.
- HDFS : Ook bekend als Hadoop Distributed File System verdeeld over meerdere knooppunten.
- MapReduce : Het is een raamwerk dat gebruikt wordt om toepassingen te schrijven om enorme hoeveelheden gegevens te verwerken.
- Hadoop YARN : Ook bekend als Yet Another Resource Negotiator is de resource management laag van Hadoop.
In deze handleiding leggen we uit hoe je een single-node Hadoop cluster kunt opzetten op Ubuntu 20.04.
Vereisten
- Een server met Ubuntu 20.04 en 4 GB RAM.
- Een root wachtwoord is ingesteld op je server.
Update de systeempakketten
Alvorens te beginnen is het aan te raden je systeempakketten bij te werken tot de laatste versie. Je kunt het doen met het volgende commando:
apt-get update -y apt-get upgrade -y
Zodra je systeem bijgewerkt is, herstart je het om de veranderingen door te voeren.
Installeer Java
Apache Hadoop is een Java-gebaseerde toepassing. Je zult dus Java in je systeem moeten installeren. Je kunt het installeren met het volgende commando:
apt-get install default-jdk default-jre -y
Eenmaal geïnstalleerd kun je de geïnstalleerde versie van Java verifiëren met het volgende commando:
java -version
Je zou de volgende uitvoer moeten krijgen:
openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Maak Hadoop gebruiker en stel wachtwoordloze SSH in
Maak eerst een nieuwe gebruiker met de naam hadoop met het volgende commando:
adduser hadoop
Voeg vervolgens de hadoop gebruiker toe aan de sudo groep
usermod -aG sudo hadoop
Log vervolgens in met de hadoop gebruiker en genereer een SSH sleutelpaar met het volgende commando:
su - hadoop ssh-keygen -t rsa
Je zou de volgende uitvoer moeten krijgen:
Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'. 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:HG2K6x1aCGuJMqRKJb+GKIDRdKCd8LXnGsB7WSxApno [email protected] The key's randomart image is: +---[RSA 3072]----+ |..=.. | | O.+.o . | |oo*.o + . o | |o .o * o + | |o+E.= o S | |=.+o * o | |*.o.= o o | |=+ o.. + . | |o .. o . | +----[SHA256]-----+
Voeg vervolgens deze sleutel toe aan de Authorized ssh keys en geef de juiste toestemming:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
Verifieer vervolgens de wachtwoordloze SSH met het volgende commando:
ssh localhost
Als je zonder wachtwoord ingelogd bent, kun je doorgaan naar de volgende stap.
Installeer Hadoop
Log eerst in met de hadoop gebruiker en download de nieuwste versie van Hadoop met het volgende commando:
su - hadoop wget https://downloads.apache.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:
tar -xvzf hadoop-3.2.1.tar.gz
Verplaats vervolgens de uitgepakte map naar de /usr/local/:
sudo mv hadoop-3.2.1 /usr/local/hadoop
Maak vervolgens een directory om het logboek in op te slaan met het volgende commando:
sudo mkdir /usr/local/hadoop/logs
Verander vervolgens het eigendom van de hadoop directory in hadoop:
sudo chown -R hadoop:hadoop /usr/local/hadoop
Vervolgens moet je de Hadoop omgevingsvariabelen configureren. Je kunt dat doen door het ~/.bashrc bestand te bewerken:
nano ~/.bashrc
Voeg de volgende regels toe:
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 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"
Sla het bestand op en sluit het als je klaar bent. Activeer dan de omgevingsvariabelen met het volgende commando:
source ~/.bashrc
Hadoop configureren
In dit onderdeel leren we hoe je Hadoop op een enkele node kunt instellen.
Omgevingsvariabelen voor Java instellen
Vervolgens moet je Java omgevingsvariabelen definiëren in hadoop-env.sh om YARN, HDFS, MapReduce, en Hadoop-gerelateerde projectinstellingen in te stellen.
Zoek eerst het juiste Java pad op met het volgende commando:
which javac
Je zou de volgende uitvoer moeten zien:
/usr/bin/javac
Zoek vervolgens de OpenJDK directory met het volgende commando:
readlink -f /usr/bin/javac
Je zou de volgende uitvoer moeten zien:
/usr/lib/jvm/java-11-openjdk-amd64/bin/javac
Bewerk vervolgens het bestand hadoop-env.sh en definieer het Java pad:
sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Voeg de volgende regels toe:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"
Vervolgens moet je ook het Javax activatiebestand downloaden. Je kunt het downloaden met het volgende commando:
cd /usr/local/hadoop/lib sudo wget https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
Je kunt nu de Hadoop versie verifiëren met het volgende commando:
hadoop version
Je zou de volgende uitvoer moeten krijgen:
Hadoop 3.2.1 Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842 Compiled by rohithsharmaks on 2019-09-10T15:56Z Compiled with protoc 2.5.0 From source with checksum 776eaf9eee9c0ffc370bcbc1888737 This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.2.1.jar
Configureer core-site.xml bestand
Vervolgens moet je de URL voor je NameNode opgeven. Je kunt dat doen door het bestand core-site.xml te bewerken:
sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml
Voeg de volgende regels toe:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://0.0.0.0:9000</value> <description>The default file system URI</description> </property> </configuration>
Sla het bestand op en sluit het als je klaar bent:
Configureer hdfs-site.xml bestand
Vervolgens moet je de plaats bepalen voor het opslaan van knooppuntmetadata, fsimage bestand, en bewerkingslogbestand. Je kunt dat doen door het hdfs-site.xml bestand te bewerken. Maak eerst een directory voor het opslaan van node metadata:
sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode} sudo chown -R hadoop:hadoop /home/hadoop/hdfs
Bewerk vervolgens het hdfs-site.xml bestand en bepaal de plaats van de directory:
sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Voeg de volgende regels toe:
<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>
Sla het bestand op en sluit het.
Configureer mapred-site.xml bestand
Vervolgens moet je MapReduce waarden definiëren. Je kunt die definiëren door het mapred-site.xml bestand te bewerken:
sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Voeg de volgende regels toe:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
Bewaar en sluit het bestand.
Configureer garen-site.xml bestand
Vervolgens moet je het yarn-site.xml bestand bewerken en YARN gerelateerde instellingen bepalen:
sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Voeg de volgende regels toe:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
Sla het bestand op en sluit het als je klaar bent.
Formatteer HDFS NameNode
Vervolgens moet je de Hadoop configuratie valideren en de HDFS NameNode formatteren.
Log eerst in met Hadoop gebruiker en formatteer de HDFS NameNode met het volgende commando:
su - hadoop hdfs namenode -format
Je zou de volgende uitvoer moeten krijgen:
2020-06-07 11:35:57,691 INFO util.GSet: VM type = 64-bit 2020-06-07 11:35:57,692 INFO util.GSet: 0.25% max memory 1.9 GB = 5.0 MB 2020-06-07 11:35:57,692 INFO util.GSet: capacity = 2^19 = 524288 entries 2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10 2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10 2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25 2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache on namenode is enabled 2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis 2020-06-07 11:35:57,712 INFO util.GSet: Computing capacity for map NameNodeRetryCache 2020-06-07 11:35:57,712 INFO util.GSet: VM type = 64-bit 2020-06-07 11:35:57,712 INFO util.GSet: 0.029999999329447746% max memory 1.9 GB = 611.9 KB 2020-06-07 11:35:57,712 INFO util.GSet: capacity = 2^16 = 65536 entries 2020-06-07 11:35:57,743 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1242120599-69.87.216.36-1591529757733 2020-06-07 11:35:57,763 INFO common.Storage: Storage directory /home/hadoop/hdfs/namenode has been successfully formatted. 2020-06-07 11:35:57,817 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression 2020-06-07 11:35:57,972 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 398 bytes saved in 0 seconds . 2020-06-07 11:35:57,987 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 2020-06-07 11:35:58,000 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown. 2020-06-07 11:35:58,003 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at ubuntu2004/69.87.216.36 ************************************************************/
Start de Hadoop Cluster
Start eerst de NameNode en DataNode met het volgende commando:
start-dfs.sh
Je zou de volgende uitvoer moeten krijgen:
Starting namenodes on [0.0.0.0] Starting datanodes Starting secondary namenodes [ubuntu2004]
Start vervolgens de YARN resource en nodemanagers door het volgende commando uit te voeren:
start-yarn.sh
Je zou de volgende uitvoer moeten krijgen:
Starting resourcemanager Starting nodemanagers
Je kunt ze nu verifiëren met het volgende commando:
jps
Je zou de volgende uitvoer moeten krijgen:
5047 NameNode 5850 Jps 5326 SecondaryNameNode 5151 DataNode
Toegang tot Hadoop Web Interface
Je kunt nu de Hadoop NameNode benaderen met de URL http://your-server-ip:9870. Je zou het volgende scherm moeten zien:
Je kunt ook de afzonderlijke DataNodes benaderen met de URL http://your-server-ip:9864. Je zou het volgende scherm moeten zien:
Om de YARN Resource Manager te benaderen, gebruik je de URL http://your-server-ip:8088. Je zou het volgende scherm moeten zien:
Conclusie
Gefeliciteerd! Je hebt Hadoop met succes op een enkele node geïnstalleerd. Je kunt nu beginnen met het verkennen van basis HDFS commando’s en een volledig gedistribueerd Hadoop cluster ontwerpen. Voel je vrij me te vragen als je vragen hebt.