Slik installerer du Hadoop på UbuntuNedlastings- og oppsetttrinn

⚡ Smart oppsummering

Installere Apache Hadoop på Ubuntu tar to omganger: pakk ut utgivelsen under en dedikert systemkonto med passordløs SSH, rediger deretter fire XML-filer før du formaterer HDFS og starter enkeltnodeklyngen.

  • 🔘 Forutsetninger: En løpende Ubuntu maskin og en støttet Java Utviklingssettet må være på plass først.
  • ☑️ Dedikert konto: Opprett hadoop_-gruppen og hduser_-kontoen slik at daemoner aldri kjører som din påloggede bruker.
  • ✅ Passordløs SSH: Hadoop starter daemoner over SSH, så ssh localhost må lykkes uten en passordforespørsel.
  • 🧪 Fire konfigurasjonsfiler: hadoop-env.sh, core-site.xml, mapred-site.xml og hdfs-site.xml inneholder alle innstillingene som endres i denne gjennomgangen.
  • 🛠️ Første start: Formater NameNode én gang, kjør deretter start-dfs.sh og start-yarn.sh og bekreft fem daemoner med jps.
  • 🧭 Versjonsavvik: Skjermbilder bruker Hadoop 2.2.0, så sjekk utgivelsen, portene og egenskapsnavnene mot Hadoop 3.x.

Slik installerer du Hadoop på Ubuntu

I denne veiledningen vil vi ta deg gjennom den trinnvise prosessen for å installere Apache Hadoop på en Linux-maskin (Ubuntu). Dette er en todelt prosess: først last ned og installer utgivelsen, deretter konfigurer den.

Det er to forutsetninger:

Hadoop 3.x-versjonsnotater for dette oppsettet

Skjermbildene i denne gjennomgangen ble tatt med Hadoop 2.2.0. Trinnrekkefølgen er uendret i nåværende versjoner, men en håndfull navn og standardinnstillinger har blitt flyttet. Sjekk tabellen nedenfor før du kopierer noen kommando ordrett.

Innstilling eller trinn I denne veiledningen (Hadoop 2.x) Nåværende Hadoop 3.x
Utgivelsesarkiv hadoop-2.2.0.tar.gz hadoop-3.5.0.tar.gz, den første stabile 3.5-utgivelsen, publisert 2. april 2026
Standard filsystemegenskap fs.default.name i prosaen, fs.defaultFS i XML-filen fs.defaultFS bare; fs.default.name er utdatert
MapReduce-egenskapen mapreduce.jobtracker.address mapreduce.framework.name satt til yarn; jobbenTracker eksisterer ikke lenger når YARN planlegger arbeidet
mapred-site.xml Kopiert fra mapred-site.xml.template Sender inn etc/hadoop allerede, så kopieringstrinnet er unødvendig
NameNode web UI-port 50070 9870
Java Java 6 eller Java 7 Java 8 eller Java 11

Alt annet i denne veiledningen oppfører seg på samme måte på Hadoop 3: den dedikerte kontoen, SSH-nøkkelen, de fire konfigurasjonsfilene og start- og stoppskriptene.

Del 1) Last ned og installer Hadoop

Trinn 1) Legg til en Hadoop-systembruker

Legg til en Hadoop-systembruker ved å bruke kommandoen nedenfor.

sudo addgroup hadoop_

Terminalen kjører sudo addgroup hadoop_

sudo adduser --ingroup hadoop_ hduser_

adduser-ledeteksten samler inn detaljene for hduser_

Skriv inn passord, navn og andre detaljer.

NOTAT: Det er en mulighet for feilen nevnt nedenfor i denne oppsetts- og installasjonsprosessen.

"hduser er ikke i sudoers-filen. Denne hendelsen vil bli rapportert."

Feilmelding: hduser finnes ikke i sudoers-filen

Denne feilen kan løses ved å logge inn som root-bruker.

Bytter til rotbrukeren i terminalen

Utfør kommandoen

sudo adduser hduser_ sudo

Legger til hduser_ i sudo-gruppen

Re-login as hduser_

Logger inn på nytt som hduser_

Trinn 2) Konfigurer SSH

For å administrere noder i en klynge krever Hadoop SSH-tilgang.

Bytt bruker først, skriv inn følgende kommando

su - hduser_

Bytter bruker med su - hduser_

Denne kommandoen vil opprette en ny nøkkel.

ssh-keygen -t rsa -P ""

ssh-keygen genererer et RSA-nøkkelpar for hduser_

Aktiver SSH-tilgang til den lokale maskinen med denne nøkkelen.

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Legger til id_rsa.pub i authorized_keys-filen

Test nå SSH-oppsettet ved å koble til localhost som 'hduser_'-brukeren.

ssh localhost

Vellykket ssh localhost-økt for hduser_

OBS: Hvis du ser feilen nedenfor som svar på «ssh localhost», er det mulig at SSH ikke er tilgjengelig på dette systemet.

ssh localhost mislykkes med en feilmelding om at tilkoblingen ble avvist

For å løse dette –

Tøm SSH ved å bruke,

sudo apt-get purge openssh-server

Det er god praksis å rense før installasjonen starter.

apt-get purge fjerner en eksisterende openssh-server-pakke

Installer SSH ved å bruke kommandoen-

sudo apt-get install openssh-server

apt-get installerer openssh-server-pakken

Trinn 3) Last ned Hadoop

Neste steg er å laste ned Hadoop fra Apache Hadoop-utgivelsesside.

Apache Hadoop-utgivelsesside med en liste over tilgjengelige versjoner

Velg Stabil

Katalogliste for den stabile Hadoop-utgivelsen

Velg tar.gz-filen (ikke filen som slutter på src).

Å velge Hadoop tar.gz-binærfilen i stedet for src-arkivet

Når nedlastingen er fullført, naviger til mappen som inneholder tar-filen.

Terminalen åpnet i katalogen som inneholder den nedlastede tar-filen

Enter,

sudo tar xzf hadoop-2.2.0.tar.gz

ExtracLagre Hadoop-tarballen med tar xzf

Gi nå hadoop-2.2.0 nytt navn til hadoop.

sudo mv hadoop-2.2.0 hadoop

Å gi eksen nytt navntracted hadoop-2.2.0-mappen til hadoop

Til slutt, overlat mappen til den nye kontoen.

sudo chown -R hduser_:hadoop_ hadoop

chown tilordner hadoop-mappen til hduser_ og hadoop_

Erstatt versjonen du faktisk lastet ned med hadoop-2.2.0 i de tre kommandoene ovenfor.

Del 2) Konfigurer Hadoop

Trinn 1) Endre ~/.bashrc-filen

Legg til følgende linjer på slutten av filen ~/.bashrc.

#Set HADOOP_HOME
export HADOOP_HOME=<Installation Directory of Hadoop>
#Set JAVA_HOME
export JAVA_HOME=<Installation Directory of Java>
# Add bin/ directory of Hadoop to PATH
export PATH=$PATH:$HADOOP_HOME/bin

bashrc-filen med HADOOP_HOME-, JAVA_HOME- og PATH-eksportene vedlagt

Nå, bruk kommandoen nedenfor til å opprette kildekode for denne miljøkonfigurasjonen.

. ~/.bashrc

Sourcing av bashrc slik at de nye miljøvariablene trer i kraft

Trinn 2) Konfigurasjoner relatert til HDFS

Sett JAVA_HOME i filen $HADOOP_HOME/etc/hadoop/hadoop-env.sh, som vist nedenfor.

Standard JAVA_HOME-linjen i hadoop-env.sh

hadoop-env.sh åpnet i editoren og viser JAVA_HOME-eksporten

Med

hadoop-env.sh JAVA_HOME erstattet med den ekte Java installasjonsvei

Det er to parametere i $HADOOP_HOME/etc/hadoop/core-site.xml som må settes-

1. 'hadoop.tmp.dir' – Brukes til å angi en katalog som skal brukes av Hadoop til å lagre datafilene.

2. 'fs.defaultFS' – Dette angir standard filsystem. Det eldre navnet for den samme egenskapen, 'fs.default.name', er utdatert.

For å angi disse parameterne, åpne core-site.xml

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

Åpner core-site.xml med gedit

Kopier linjene nedenfor mellom tagger.

<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>Parent directory for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS </name>
<value>hdfs://localhost:54310</value>
<description>The name of the default file system. </description>
</property>

core-site.xml som inneholder egenskapene hadoop.tmp.dir og fs.defaultFS

Naviger til katalogen $HADOOP_HOME/etc/hadoop.

Terminal i konfigurasjonskatalogen Hadoop etc/hadoop

Opprett nå mappen som er nevnt i core-site.xml.

sudo mkdir -p <Path of Directory used in above setting>

mkdir -p oppretter hadoop.tmp.dir-banen

Gi tillatelser til katalogen.

sudo chown -R hduser_:Hadoop_ <Path of Directory created in above step>

chown gir hduser_ eierskap til den midlertidige katalogen

sudo chmod 750 <Path of Directory created in above step>

chmod 750 ble brukt på den midlertidige mappen

Trinn 3) MapReduce-konfigurasjon

Før du begynner med disse konfigurasjonene, la oss angi HADOOP_HOME-banen.

sudo gedit /etc/profile.d/hadoop.sh

Og Enter

export HADOOP_HOME=/home/guru99/Downloads/Hadoop

hadoop.sh profilskript eksporterer HADOOP_HOME

Neste inn

sudo chmod +x /etc/profile.d/hadoop.sh

chmod +x gjør hadoop.sh-profilskriptet kjørbart

Gå ut av terminalen og start den på nytt.

Skriv inn echo $HADOOP_HOME for å bekrefte banen.

echo $HADOOP_HOME skriver ut den konfigurerte installasjonsstien

Kopier nå filer

sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

Kopierer mapred-site.xml.template til mapred-site.xml

Åpne mapred-site.xml-filen

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

Åpner mapred-site.xml med gedit

Legg til innstillingene nedenfor mellom og tagger.

<property>
<name>mapreduce.jobtracker.address</name>
<value>localhost:54311</value>
<description>MapReduce job tracker runs at this host and port.
</description>
</property>

mapred-site.xml som inneholder MapReduce-jobben tracker-eiendom

Åpne $HADOOP_HOME/etc/hadoop/hdfs-site.xml som vist nedenfor,

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

Åpner hdfs-site.xml med gedit

Legg til innstillingene nedenfor mellom og tagger.

<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hduser_/hdfs</value>
</property>

hdfs-site.xml som inneholder egenskapene dfs.replication og dfs.datanode.data.dir

Opprett mappen som er angitt i innstillingen ovenfor.

sudo mkdir -p <Path of Directory used in above setting>
sudo mkdir -p /home/hduser_/hdfs

mkdir -p oppretter DataNode-datakatalogen

Gi deretter eierskap og tillatelser til den.

sudo chown -R hduser_:hadoop_ <Path of Directory created in above step>
sudo chown -R hduser_:hadoop_ /home/hduser_/hdfs

chown gir hduser_ eierskap til DataNode-datakatalogen

sudo chmod 750 <Path of Directory created in above step>
sudo chmod 750 /home/hduser_/hdfs

chmod 750 brukt på DataNode-datakatalogen

Trinn 4) Formater HDFS

Før vi starter Hadoop for første gang, formaterer du HDFS ved hjelp av kommandoen nedenfor.

$HADOOP_HOME/bin/hdfs namenode -format

hdfs namenode -format output formatering av det nye filsystemet

Trinn 5) Start Hadoop-klyngen med én node

Start Hadoop-klyngen for én node ved hjelp av kommandoen nedenfor.

$HADOOP_HOME/sbin/start-dfs.sh

Resultatet av kommandoen ovenfor vises nedenfor.

start-dfs.sh-utdata som starter NameNode og DataNode

Start deretter YARN-daemonene.

$HADOOP_HOME/sbin/start-yarn.sh

start-yarn.sh-utdata som starter ResourceManager og NodeManager

Bruk verktøyet «jps» til å bekrefte om alle Hadoop-relaterte prosesser kjører.

jps-utdata som viser de fem kjørende Hadoop-daemonene

Hvis Hadoop har startet uten problemer, skal jps-utdataene vise NameNode, NodeManager, ResourceManager, SecondaryNameNode og DataNode.

Trinn 6) Stoppping Hadoop

Slå av klyngen i motsatt rekkefølge.

$HADOOP_HOME/sbin/stop-dfs.sh

stop-dfs.sh-utdata slår av HDFS-daemonene

$HADOOP_HOME/sbin/stop-yarn.sh

stop-yarn.sh-utdata slår av YARN-daemonene

Slik bekrefter du at Hadoop kjører og retter vanlige feil

jps-utdataene bekrefter at prosesser har startet, men ikke at klyngen er brukbar. Fire ekstra kontroller avgjør det spørsmålet.

  • Åpne NameNode-nettgrensesnittet på http://localhost:9870 (port 50070 på Hadoop 2.x) og bekreft sammendragsrapportene for én aktiv node.
  • Åpne ResourceManager-grensesnittet på http://localhost:8088 for å bekrefte at YARN aksepterte NodeManager.
  • Kjør hdfs dfsadmin -report for kapasitet, levende DataNodes og eventuelle underreplikerte blokker.
  • Skriv noe: hdfs dfs -mkdir /test etterfulgt av hdfs dfs -ls / beviser at navnerommet aksepterer endringer.

De fleste førstegangsfeil faller inn under en av fem kategorier.

Symptom Årsak Fix
JAVA_HOME er ikke satt og ble ikke funnet Variabelen eksporteres i .bashrc, men ikke i hadoop-env.sh Angi også den absolutte JDK-banen i hadoop-env.sh
Tillatelse nektet (offentlig nøkkel, passord) på ssh localhost authorized_keys mangler eller er for permissiv Legg til id_rsa.pub på nytt, og kjør deretter chmod 600 på ~/.ssh/authorized_keys
Tilkobling avvist på port 22 openssh-serveren er ikke installert eller kjører ikke Installer openssh-server og start ssh-tjenesten
DataNode mangler fra jps etter en omformatering Cluster ID-avvik mellom den formaterte NameNode og den gamle DataNode-katalogen Tøm mappen dfs.datanode.data.dir, og formater deretter på nytt
start-dfs.sh: kommandoen ble ikke funnet HADOOP_HOME og PATH ble aldri hentet fra kildekoden i det nåværende skallet Kjør .~/.bashrc eller åpne en ny terminal

Spørsmål og svar

Alle aktivt støttede Ubuntu LTS-utgivelser fungerer, inkludert 22.04 og 24.04. Hadoop 3.x er bygget og testet mot Java 8 og Java 11, så installer en av disse JDK-ene; nyere JDK-er støttes ikke fullt ut, og eldre Java 7 bygg gjelder ikke lenger.

Skriptene start-dfs.sh og start-yarn.sh starter alle daemoner via SSH, selv når den eneste verten er localhost. Uten en passordløs nøkkel stopper skriptene ved en passordforespørsel, og ingen daemon dukker opp.

hadoop.tmp.dir er den grunnleggende scratch-stien Hadoop utleder andre midlertidige plasseringer fra. dfs.datanode.data.dir er der en DataNode oppbevarer ekte blokkfiler. Pek den andre mot varig lagring, aldri mot /tmp, ellers forsvinner blokkene ved omstart.

Formater én gang, før første oppstart. Å kjøre formateringen på nytt sletter navnerommet og etterlater eksisterende DataNode-kataloger med en eldre klynge-ID, og ​​det er derfor DataNode nekter å registrere seg og forsvinner fra jps-utdataene.

Ja, skjønt Windows trenger de innebygde binærfilene winutils.exe og hadoop.dll for den samsvarende utgivelsen. De fleste unngår det ved å kjøre den samme Ubuntu trinnene i WSL 2, som oppfører seg som en vanlig Linux-vert.

For læring, ja: et forhåndsbygd bilde hopper over brukeroppretting, SSH-nøkler og XML-redigering. Manuell installasjon er fortsatt verdt å gjøre én gang, fordi det viser hvilken fil som kontrollerer hver innstilling når en ekte klynge oppfører seg feil.

Maskinlæringsmodeller over NameNode- og YARN-beregninger forutsier kapasitetsgrenser, oppdager skjeve jobber og flagger sviktende disker tidlig. Flere plattformer anbefaler også containerstørrelser automatisk, og erstatter mye av den manuelle finjusteringen av denne konfigurasjonen når den er nødvendig.

Copilot utkasterer egenskapsblokker for core-site.xml og hdfs-site.xml raskt og husker nøyaktig stavemåte. Bekreft hvert forslag mot dokumentasjonen for utgivelsen din, fordi den ofte foreslår utgåtte egenskaper som mapreduce.job.tracker.adresse eller fs.standard.navn.

Oppsummer dette innlegget med: