Jak zainstalować Hadoop na Ubuntu: Kroki pobierania i konfiguracji

⚡ Inteligentne podsumowanie

Instalowanie Apache Hadoop na Ubuntu wymaga dwóch przejść: rozpakowania wydania na dedykowanym koncie systemowym z użyciem protokołu SSH bez hasła, a następnie edycji czterech plików XML przed sformatowaniem HDFS i uruchomieniem klastra jednowęzłowego.

  • 🔘 Wymagania wstępne: Bieganie Ubuntu maszyna i wspierana Java Najpierw należy wdrożyć zestaw narzędzi deweloperskich.
  • Konto dedykowane: Utwórz grupę hadoop_ i konto hduser_, aby demony nigdy nie uruchamiały się jako użytkownik zalogowany.
  • SSH bez hasła: Hadoop uruchamia demony przez SSH, więc połączenie ssh localhost musi zakończyć się sukcesem bez wyświetlania monitu o podanie hasła.
  • 🧪 Cztery pliki konfiguracyjne: hadoop-env.sh, core-site.xml, mapred-site.xml i hdfs-site.xml zawierają wszystkie ustawienia zmienione w tym przewodniku.
  • 🛠️. Pierwsze uruchomienie: Sformatuj NameNode raz, a następnie uruchom start-dfs.sh i start-yarn.sh i potwierdź pięć demonów za pomocą jps.
  • 🧭 Zmiana wersji: Zrzuty ekranu wykorzystują Hadoop 2.2.0, dlatego należy sprawdzić wersję, porty i nazwy właściwości w odniesieniu do Hadoop 3.x.

Jak zainstalować Hadoop na Ubuntu

W tym samouczku przeprowadzimy Cię krok po kroku przez proces instalacji Apache Hadoop na komputerze z systemem Linux (Ubuntu). Proces ten składa się z dwóch części: najpierw należy pobrać i zainstalować wersję, a następnie ją skonfigurować.

Istnieją dwa warunki wstępne:

Notatki dotyczące wersji Hadoop 3.x dla tej konfiguracji

Zrzuty ekranu w tym przewodniku zostały wykonane w systemie Hadoop 2.2.0. Kolejność kroków pozostaje niezmieniona w obecnych wersjach, ale kilka nazw i ustawień domyślnych uległo zmianie. Przed skopiowaniem dowolnego polecenia w całości zapoznaj się z poniższą tabelą.

Ustawienie lub krok W tym samouczku (Hadoop 2.x) Aktualny Hadoop 3.x
Archiwum wydań hadoop-2.2.0.tar.gz hadoop-3.5.0.tar.gz, pierwsza stabilna wersja 3.5, opublikowana 2 kwietnia 2026 r.
Domyślna właściwość systemu plików fs.default.name w prozie, fs.defaultFS w XML-u fs.defaultFS tylko; fs.default.name jest przestarzały
Właściwość MapReduce mapreduce.jobtracker.address mapreduce.framework.name Ustawić yarn; pracaTracker nie będzie już istniał, gdy YARN zaplanuje pracę
mapred-site.xml Skopiowane z mapred-site.xml.template Statki w etc/hadoop już, więc krok kopiowania jest zbędny
Port interfejsu użytkownika sieci Web NameNode 50070 9870
Java Java 6 lub Java 7 Java 8 lub Java 11

Wszystkie pozostałe elementy w tym przewodniku działają tak samo w systemie Hadoop 3: dedykowane konto, klucz SSH, cztery pliki konfiguracyjne oraz skrypty uruchamiania i zatrzymywania.

Część 1) Pobierz i zainstaluj Hadoop

Krok 1) Dodaj użytkownika systemu Hadoop

Dodaj użytkownika systemu Hadoop, korzystając z poniższego polecenia.

sudo addgroup hadoop_

Terminal uruchamiający sudo addgroup hadoop_

sudo adduser --ingroup hadoop_ hduser_

polecenie adduser umożliwiające zebranie szczegółów dla hduser_

Wprowadź swoje hasło, imię i inne dane.

UWAGA: Istnieje możliwość wystąpienia poniższego błędu w procesie konfiguracji i instalacji.

„hduser nie znajduje się w pliku sudoers. Zdarzenie to zostanie zgłoszone.”

Komunikat o błędzie: hduser nie znajduje się w pliku sudoers

Ten błąd można rozwiązać logując się jako użytkownik root.

Przełączanie na użytkownika root w terminalu

Wykonaj polecenie

sudo adduser hduser_ sudo

Dodawanie hduser_ do grupy sudo

Re-login as hduser_

Ponowne logowanie jako hduser_

Krok 2) Skonfiguruj SSH

Aby zarządzać węzłami w klastrze, Hadoop wymaga dostępu SSH.

Najpierw zmień użytkownika i wprowadź następujące polecenie

su - hduser_

Przełączanie użytkownika za pomocą su - hduser_

To polecenie utworzy nowy klucz.

ssh-keygen -t rsa -P ""

ssh-keygen generuje parę kluczy RSA dla hduser_

Włącz dostęp SSH do komputera lokalnego za pomocą tego klucza.

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

Dołączanie id_rsa.pub do pliku authorized_keys

Teraz przetestuj konfigurację SSH, łącząc się z localhost jako użytkownik 'hduser_'.

ssh localhost

Pomyślna sesja ssh localhost dla hduser_

Uwaga: Jeśli w odpowiedzi na polecenie „ssh localhost” widzisz poniższy błąd, istnieje prawdopodobieństwo, że protokół SSH nie jest dostępny w tym systemie.

ssh localhost kończy się niepowodzeniem z błędem odrzucenia połączenia

Aby rozwiązać ten problem –

Usuń SSH za pomocą,

sudo apt-get purge openssh-server

Dobrą praktyką jest przeprowadzenie czyszczenia przed rozpoczęciem instalacji.

apt-get purge usuwanie istniejącego pakietu openssh-server

Zainstaluj SSH za pomocą polecenia-

sudo apt-get install openssh-server

apt-get instalujący pakiet openssh-server

Krok 3) Pobierz Hadoop

Następnym krokiem jest pobranie Hadoop z Strona wydań Apache Hadoop.

Apache Hadoop publikuje stronę z listą dostępnych wersji

Wybierz Stabilny

Lista katalogów dla stabilnej wersji Hadoop

Wybierz plik tar.gz (nie plik z rozszerzeniem src).

Wybór pliku binarnego Hadoop tar.gz zamiast archiwum src

Po zakończeniu pobierania przejdź do katalogu zawierającego plik tar.

Terminal został otwarty w katalogu zawierającym pobrany plik tar

Enter

sudo tar xzf hadoop-2.2.0.tar.gz

Extracting tarballa Hadoop za pomocą tar xzf

Teraz zmień nazwę hadoop-2.2.0 na hadoop.

sudo mv hadoop-2.2.0 hadoop

Zmiana nazwy byłegotracfolder ted hadoop-2.2.0 do hadoop

Na koniec przekaż folder nowemu kontu.

sudo chown -R hduser_:hadoop_ hadoop

chown przypisuje folder hadoop do hduser_ i hadoop_

Zastąp wersję, którą faktycznie pobrałeś hadoop-2.2.0 w trzech powyższych poleceniach.

Część 2) Skonfiguruj Hadoop

Krok 1) Modyfikuj plik ~/.bashrc

Dodaj następujące wiersze na końcu pliku ~/.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

plik bashrc z dołączonymi eksportami HADOOP_HOME, JAVA_HOME i PATH

Teraz skonfiguruj środowisko za pomocą poniższego polecenia.

. ~/.bashrc

Źródło bashrc, aby nowe zmienne środowiskowe zaczęły obowiązywać

Krok 2) Konfiguracje związane z HDFS

Ustaw JAVA_HOME w pliku $HADOOP_HOME/etc/hadoop/hadoop-env.sh, jak pokazano poniżej.

Domyślny wiersz JAVA_HOME w pliku hadoop-env.sh

hadoop-env.sh został otwarty w edytorze, pokazując eksport JAVA_HOME

Z

hadoop-env.sh JAVA_HOME zastąpiono prawdziwym Java ścieżka instalacji

W pliku $HADOOP_HOME/etc/hadoop/core-site.xml znajdują się dwa parametry, które należy ustawić:

1. 'hadoop.tmp.dir' – służy do określenia katalogu, w którym Hadoop będzie przechowywał pliki danych.

2. „fs.defaultFS” – określa domyślny system plików. Starsza nazwa tej samej właściwości, „fs.default.name”, jest przestarzała.

Aby ustawić te parametry, otwórz plik core-site.xml

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

Otwieranie pliku core-site.xml za pomocą gedit

Skopiuj poniższe linie pomiędzy tagi.

<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 zawierający właściwości hadoop.tmp.dir i fs.defaultFS

Przejdź do katalogu $HADOOP_HOME/etc/hadoop.

Terminal w katalogu konfiguracyjnym Hadoop etc/hadoop

Teraz utwórz katalog wymieniony w pliku core-site.xml.

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

mkdir -p tworzenie ścieżki hadoop.tmp.dir

Nadaj uprawnienia do katalogu.

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

chown przyznaje hduser_ prawo własności do katalogu tymczasowego

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

chmod 750 zastosowany do katalogu tymczasowego

Krok 3) Konfiguracja MapReduce

Zanim rozpoczniesz konfigurację, ustawmy ścieżkę HADOOP_HOME.

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

I wejdź

export HADOOP_HOME=/home/guru99/Downloads/Hadoop

Skrypt profilu hadoop.sh eksportujący HADOOP_HOME

Dalej wejdź

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

chmod +x powoduje, że skrypt profilu hadoop.sh staje się wykonywalny

Wyjdź z terminala i uruchom go ponownie.

Wpisz echo $HADOOP_HOME, aby sprawdzić ścieżkę.

echo $HADOOP_HOME drukuje skonfigurowaną ścieżkę instalacji

Teraz skopiuj pliki

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

Kopiowanie pliku mapred-site.xml.template do mapred-site.xml

Otwórz plik mapred-site.xml

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

Otwieranie pliku mapred-site.xml za pomocą gedit

Dodaj poniższe ustawienia pomiędzy I tagi.

<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 zawierający zadanie MapReduce tracnieruchomość ker

Otwórz $HADOOP_HOME/etc/hadoop/hdfs-site.xml jak poniżej,

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

Otwieranie pliku hdfs-site.xml za pomocą gedit

Dodaj poniższe ustawienia pomiędzy I tagi.

<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>

Plik hdfs-site.xml zawierający właściwości dfs.replication i dfs.datanode.data.dir

Utwórz katalog określony w ustawieniach powyżej.

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

mkdir -p tworzenie katalogu danych DataNode

Następnie przyznaj mu prawo własności i uprawnienia.

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

chown przyznaje hduser_ własność katalogu danych DataNode

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

chmod 750 zastosowany do katalogu danych DataNode

Krok 4) Formatowanie HDFS

Zanim uruchomisz Hadoop po raz pierwszy, sformatuj HDFS przy pomocy poniższego polecenia.

$HADOOP_HOME/bin/hdfs namenode -format

hdfs namenode -format formatowanie wyjścia nowego systemu plików

Krok 5) Uruchom klaster jednowęzłowy Hadoop

Uruchom klaster jednowęzłowy Hadoop za pomocą poniższego polecenia.

$HADOOP_HOME/sbin/start-dfs.sh

Wynik powyższego polecenia pokazano poniżej.

Dane wyjściowe start-dfs.sh uruchamiające NameNode i DataNode

Następnie uruchom demony YARN.

$HADOOP_HOME/sbin/start-yarn.sh

start-yarn.sh wyjście uruchamiające ResourceManager i NodeManager

Sprawdź za pomocą narzędzia „jps”, czy wszystkie procesy związane z Hadoopem są uruchomione.

wyjście jps zawierające listę pięciu uruchomionych demonów Hadoop

Jeśli Hadoop uruchomił się pomyślnie, w wynikach jps powinny być wymienione: NameNode, NodeManager, ResourceManager, SecondaryNameNode i DataNode.

Krok 6) Zatrzymaj sięping Hadoop

Wyłącz klaster, wykonując czynności w odwrotnej kolejności.

$HADOOP_HOME/sbin/stop-dfs.sh

wyjście stop-dfs.sh wyłączające demony HDFS

$HADOOP_HOME/sbin/stop-yarn.sh

wyjście stop-yarn.sh wyłączające demony YARN

Jak sprawdzić, czy Hadoop działa i naprawić typowe błędy

Dane wyjściowe jps potwierdzają uruchomienie procesów, ale nie gotowość klastra do użytku. Cztery dodatkowe sprawdzenia rozstrzygają tę kwestię.

  • Otwórz interfejs internetowy NameNode pod adresem http://localhost:9870 (port 50070 na Hadoop 2.x) i sprawdź raporty podsumowujące na jednym aktywnym węźle.
  • Otwórz interfejs ResourceManager w http://localhost:8088 aby potwierdzić, że YARN zaakceptował NodeManager.
  • Uruchom hdfs dfsadmin -report pod kątem pojemności, aktywnych węzłów danych i wszelkich niedostatecznie replikowanych bloków.
  • Napisz coś: hdfs dfs -mkdir /test następnie hdfs dfs -ls / udowadnia, że ​​przestrzeń nazw akceptuje zmiany.

Większość niepowodzeń, które zdarzają się po raz pierwszy, można zaliczyć do jednej z pięciu kategorii.

Objaw Spowodować Fix
JAVA_HOME nie jest ustawiony i nie można go znaleźć Zmienna jest eksportowana w pliku .bashrc, ale nie w pliku hadoop-env.sh Ustaw także absolutną ścieżkę JDK w hadoop-env.sh
Odmowa dostępu (klucz publiczny, hasło) na lokalnym hoście ssh brakuje author_keys lub jest zbyt liberalny Ponownie dodaj id_rsa.pub, a następnie uruchom chmod 600 w ~/.ssh/authorized_keys
Połączenie odrzucone na porcie 22 openssh-server nie jest zainstalowany lub nie działa Zainstaluj openssh-server i uruchom usługę SSH
Brak DataNode w jps po ponownym sformatowaniu Cluster Niezgodność identyfikatorów pomiędzy sformatowanym NameNode i starym katalogiem DataNode Opróżnij folder dfs.datanode.data.dir, a następnie sformatuj go ponownie
start-dfs.sh: polecenie nie znalezione HADOOP_HOME i PATH nigdy nie były pobierane z bieżącej powłoki Uruchom . ~/.bashrc lub otwórz nowy terminal

FAQ

Każdy aktywnie wspierany Ubuntu Wersja LTS działa, w tym 22.04 i 24.04. Hadoop 3.x został skompilowany i przetestowany pod kątem Java 8 i Java 11, więc zainstaluj jeden z tych pakietów JDK; nowsze pakiety JDK nie są w pełni obsługiwane, a starsze Java Kompilacje nr 7 nie są już aktualne.

Skrypty start-dfs.sh i start-yarn.sh uruchamiają każdego demona przez SSH, nawet gdy jedynym hostem jest localhost. Bez klucza bez hasła skrypty zatrzymują się na monicie o hasło i demon nie uruchamia się.

hadoop.tmp.dir to podstawowa ścieżka, z której Hadoop czerpie inne tymczasowe lokalizacje. dfs.datanode.data.dir to miejsce, w którym węzeł danych przechowuje rzeczywiste pliki blokowe. Drugie miejsce należy ustawić na trwałym nośniku danych, nigdy na /tmp, w przeciwnym razie bloki znikną po ponownym uruchomieniu.

Sformatuj raz, przed pierwszym uruchomieniem. Ponowne uruchomienie formatowania usuwa przestrzeń nazw i pozostawia istniejące katalogi DataNode ze starszym identyfikatorem klastra, dlatego DataNode odmawia rejestracji i znika z wyników jps.

Tak, chociaż Windows Potrzebuje natywnych plików binarnych winutils.exe i hadoop.dll dla pasującej wersji. Większość użytkowników unika tego, uruchamiając to samo Ubuntu kroki wewnątrz WSL 2, który zachowuje się jak normalny host Linux.

Do nauki – tak: gotowy obraz pomija tworzenie użytkownika, klucze SSH i edycję XML. Warto jednak raz przeprowadzić instalację ręczną, ponieważ pokazuje ona, który plik kontroluje każde ustawienie, gdy rzeczywisty klaster zachowuje się nieprawidłowo.

Modele uczenia maszynowego oparte na metrykach NameNode i YARN prognozują limity pojemności, wykrywają nieprawidłowo wykonywane zadania i sygnalizują awarie dysków na wczesnym etapie. Niektóre platformy automatycznie rekomendują również rozmiary kontenerów, eliminując znaczną część ręcznego dostrajania tej konfiguracji, gdy było to konieczne.

Copilot szybko tworzy bloki właściwości core-site.xml i hdfs-site.xml i zapamiętuje dokładną pisownię. Sprawdź każdą sugestię z dokumentacją dla swojego wydania, ponieważ często proponuje ona wycofane właściwości, takie jak mapreduce.job.tracker.address lub fs.default.name.

Podsumuj ten post następująco: