Ich möchte in meinem Unternehmen kürzlich einen Hadoop-Testcluster erstellen und verwende daher Docker, um den Hadoop-Cluster schnell bereitzustellen. 0. Schreiben Sie vor Es gibt bereits viele Tutorials im Internet, aber sie bergen viele Fallstricke. Hier werde ich meinen eigenen Installationsprozess aufzeichnen. Ziel: Verwenden Sie Docker, um einen Hadoop 2.7.7-Cluster mit einem Master und zwei Slaves zu erstellen. Vorbereiten: Zunächst benötigen Sie eine CentOS7-Maschine mit mehr als 8 GB Arbeitsspeicher. Ich verwende den Alibaba Cloud-Host. Zweitens, laden Sie die JDK- und Hadoop-Pakete auf den Server hoch. Ich habe hadoop2.7.7 installiert. Das Paket steht für alle bereit, Link: https://pan.baidu.com/s/15n_W-1rqOd2cUzhfvbkH4g Extraktionscode: vmzw. 1. Schritte Es lässt sich grob in folgende Schritte unterteilen:
1.1 Docker installieren Befolgen Sie die nachstehenden Schritte, um Docker zu installieren. Wenn Sie eine Docker-Umgebung haben, können Sie diesen Schritt überspringen. Yum-Aktualisierung yum install -y yum-utils Gerätemapper-Persistent-Data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce systemctl starte Docker Docker -v 1.2 Grundlegende Umgebungsvorbereitung 1.2.1 Erstellen Sie ein grundlegendes CentOS7-Image und ziehen Sie das offizielle CentOS7-Image Docker-Pull Centos Generieren Sie ein CentOS-Image mit der SSH-Funktion, indem Sie eine Dockdatei erstellen Erstellen einer Docker-Datei vi Docker-Datei Schreiben Sie den folgenden Inhalt in das Dockerfile VON centos WARTUNGSMITARBEITER mwf Führen Sie den Befehl yum install -y openssh-server sudo aus. RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config Führen Sie den Befehl yum install -y openssh-clients aus. RUN echo "root:qwe123" | chpasswd Führen Sie echo "root ALL=(ALL) ALL" aus >> /etc/sudoers Führen Sie den Befehl ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key aus. Führen Sie den Befehl ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key aus. FÜHREN Sie mkdir /var/run/sshd aus EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] Der obige Inhalt bedeutet wahrscheinlich: Setzen Sie basierend auf dem CentOS-Image das Kennwort auf wqe123, installieren Sie den SSH-Dienst und starten Sie ihn Erstellen der Docker-Datei docker build -t="centos7-ssh" . Es wird ein Spiegel mit dem Namen 1.2.2 Generieren Sie ein Image mit einer Hadoop- und JDK-Umgebung
Es wurde gerade eine Docker-Datei erstellt, also räumen wir sie aus dem Weg. Dockerfile erstellen vi Docker-Datei Schreiben Sie Folgendes: VON centos7-ssh HINZUFÜGEN jdk-8u202-linux-x64.tar.gz /usr/local/ RUN mv /usr/local/jdk1.8.0_202 /usr/local/jdk1.8 ENV JAVA_HOME /usr/local/jdk1.8 ENV-PFAD $JAVA_HOME/bin:$PATH Füge hadoop-2.7.7.tar.gz /usr/local hinzu Ausführen von mv /usr/local/hadoop-2.7.7 /usr/local/hadoop ENV HADOOP_HOME /usr/local/hadoop ENV-PFAD $HADOOP_HOME/bin:$PATH Führen Sie den Befehl yum install -y aus, wobei sudo Der obige Inhalt bedeutet ungefähr: Basierend auf dem oben generierten Centos7-SSH fügen Sie die Hadoop- und JDK-Pakete ein und konfigurieren Sie dann die Umgebungsvariablen. Erstellen der Docker-Datei docker build -t="hadoop" . Ein Spiegel mit dem Namen hadoop wird generiert 1.3 Konfigurieren Sie das Netzwerk und starten Sie den Docker-Container Da die Cluster über das Netzwerk verbunden werden müssen, muss zuerst das Netzwerk konfiguriert werden. Ein Netzwerk aufbauen Docker-Netzwerk erstellen --Treiber Bridge Hadoop-BR Der obige Befehl erstellt ein Bridge-Netzwerk mit dem Namen Geben Sie das Netzwerk beim Starten von Docker an docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop docker run -itd --network hadoop-br --name hadoop2 hadoop docker run -itd --network hadoop-br --name hadoop3 hadoop Der obige Befehl startet drei Maschinen, das Netzwerk wird als Überprüfen des Netzwerkstatus Docker-Netzwerkinspektion Hadoop-br Führen Sie den obigen Befehl aus, um die entsprechenden Netzwerkinformationen anzuzeigen: [ { "Name": "hadoop-br", "ID": "88b7839f412a140462b87a353769e8091e92b5451c47b5c6e7b44a1879bc7c9a", "Container": { "86e52eb15351114d45fdad4462cc2050c05202554849bedb8702822945268631": { "Name": "hadoop1", "IPv4Adresse": "172.18.0.2/16", "IPv6Adresse": "" }, "9baa1ff183f557f180da2b7af8366759a0d70834f43d6b60fba2e64f340e0558": { "Name": "hadoop2", "IPv4Adresse": "172.18.0.3/16", "IPv6Adresse": "" }, "e18a3166e965a81d28b4fe5168d1f0c3df1cb9f7e0cbe0673864779b224c8a7f": { "Name": "hadoop3", "IPv4Adresse": "172.18.0.4/16", "IPv6Adresse": "" } }, } ] Wir können die IP-Adressen der drei Maschinen herausfinden: 172.18.0.2 hadoop1 172.18.0.3 hadoop2 172.18.0.4 hadoop3 Melden Sie sich beim Docker-Container an und Sie können sich gegenseitig anpingen. docker exec -it hadoop1 bash docker exec -it hadoop2 bash docker exec -it hadoop3 bash 1.4 Konfigurieren Sie den Host und die SSH-Anmeldung ohne Passwort 1.4.1 Konfigurieren des Hosts Ändern Sie den Host jeder Maschine separat vi /etc/hosts Schreiben Sie den folgenden Inhalt (Hinweis: Die von Docker zugewiesene IP kann für jede Person unterschiedlich sein, geben Sie Ihre eigene ein): 172.18.0.2 hadoop1 172.18.0.3 hadoop2 172.18.0.4 hadoop3 1.4.2 SSH-Anmeldung ohne Passwort Da im obigen Image der SSH-Dienst installiert wurde, führen Sie die folgenden Befehle direkt auf jedem Computer aus: ssh-keygen Drücken Sie die Eingabetaste vollständig ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1 Geben Sie das Passwort ein. Meins lautet qwe123. ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2 Geben Sie das Passwort ein. Meins lautet qwe123. ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3 Geben Sie das Passwort ein. Meins lautet qwe123. 1.4.3 Testen, ob die Konfiguration erfolgreich ist ping hadoop1 ping hadoop2 ping hadoop3 ssh hadoop1 ssh hadoop2 ssh hadoop3 1.5 Installieren und Konfigurieren von Hadoop 1.5.1 Betrieb auf hadoop1 Geben Sie hadoop1 ein docker exec -it hadoop1 bash Erstellen Sie einige Ordner, die später in der Konfiguration verwendet werden mkdir /home/hadoop mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_daten Wechseln Sie zum Hadoop-Konfigurationsverzeichnis cd $HADOOP_HOME/etc/hadoop/ Bearbeiten Sie core-site.xml <Eigenschaft> <name>fs.defaultFS</name> <Wert>hdfs://hadoop1:9000</Wert> </Eigenschaft> <Eigenschaft> <name>hadoop.tmp.dir</name> <Wert>Datei:/home/hadoop/tmp</Wert> </Eigenschaft> <Eigenschaft> <name>io.Datei.Puffergröße</name> <Wert>131702</Wert> </Eigenschaft> Bearbeiten Sie hdfs-site.xml <Eigenschaft> <name>dfs.namenode.name.dir</name> <Wert>Datei:/home/hadoop/hdfs_name</Wert> </Eigenschaft> <Eigenschaft> <name>dfs.datanode.data.dir</name> <Wert>Datei:/home/hadoop/hdfs_data</Wert> </Eigenschaft> <Eigenschaft> <name>dfs.replikation</name> <Wert>2</Wert> </Eigenschaft> <Eigenschaft> <name>dfs.namenode.secondary.http-Adresse</name> <Wert>hadoop1:9001</Wert> </Eigenschaft> <Eigenschaft> <name>dfs.webhdfs.aktiviert</name> <Wert>wahr</Wert> </Eigenschaft> Bearbeiten Sie mapred-site.xml mapred-site.xml existiert standardmäßig nicht. Führen Sie dazu <Eigenschaft> <name>mapreduce.framework.name</name> <value>Garn</value> </Eigenschaft> <Eigenschaft> <name>mapreduce.jobhistory.adresse</name> <Wert>hadoop1:10020</Wert> </Eigenschaft> <Eigenschaft> <name>mapreduce.jobhistory.webapp.adresse</name> <Wert>hadoop1:19888</Wert> </Eigenschaft> yarn-site.xml bearbeiten <Eigenschaft> <name>yarn.nodemanager.aux-services</name> <Wert>mapreduce_shuffle</Wert> </Eigenschaft> <Eigenschaft> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <Wert>org.apache.hadoop.mapred.ShuffleHandler</Wert> </Eigenschaft> <Eigenschaft> <name>Garn.Resourcemanager.Adresse</name> <Wert>hadoop1:8032</Wert> </Eigenschaft> <Eigenschaft> <name>garn.resourcemanager.scheduler.adresse</name> <Wert>hadoop1:8030</Wert> </Eigenschaft> <Eigenschaft> <name>Garn.Resourcemanager.Resource-Tracker.Adresse</name> <Wert>hadoop1:8031</Wert> </Eigenschaft> <Eigenschaft> <name>yarn.resourcemanager.admin.adresse</name> <Wert>hadoop1:8033</Wert> </Eigenschaft> <Eigenschaft> <name>yarn.resourcemanager.webapp.adresse</name> <Wert>hadoop1:8088</Wert> </Eigenschaft> Slaves bearbeiten Hier verwende ich hadoop1 als Masterknoten und hadoop2 und 3 als Slaveknoten hadoop2 hadoop3 Kopieren Sie die Datei nach hadoop2 und hadoop3 Führen Sie die folgenden Befehle nacheinander aus: scp -r $HADOOP_HOME/hadoop2:/usr/local/ scp -r $HADOOP_HOME/hadoop3:/usr/local/ scp -r /home/hadoop hadoop2:/ scp -r /home/hadoop hadoop3:/ 1.5.2 Bedienung an den einzelnen Maschinen Stellen Sie eine separate Verbindung zu jedem Computer her docker exec -it hadoop1 bash Docker Exec -it Hadoop2 Bash docker exec -it hadoop3 bash Konfigurieren Sie die Umgebungsvariablen des Hadoop-Sbin-Verzeichnisses Da das Hadoop-Bin-Verzeichnis bei der vorherigen Erstellung des Images konfiguriert wurde, das Sbin-Verzeichnis jedoch nicht, muss es separat konfiguriert werden. Weisen Sie jeder Maschine eine Konfiguration zu: vi ~/.bashrc Fügen Sie den folgenden Inhalt an: export PATH=$PATH:$HADOOP_HOME/sbin implementieren: Quelle ~/.bashrc 1.5.3 Hadoop starten Führen Sie den folgenden Befehl auf hadoop1 aus: Formatieren von HDFS hdfs-Namensknoten -Format Ein-Klick-Start start-all.sh Wer keine Fehler macht, kann feiern. Wenn Sie einen Fehler machen, kommen Sie. 1.6 Testen mit hadoopjps #hadoop1 1748 Jps 490 NameNode 846 RessourcenManager 686 SekundärerNamensknoten #hadoop2 400 Datenknoten 721 Jps 509 KnotenManager #hadoop3 425 KnotenManager 316 Datenknoten 591 Jps Dateien hochladen hdfs dfs -mkdir /mwf echo hallo > a.txt hdfs dfs -put eine.txt /mwf hdfs dfs -ls /mwf Gefunden 1 Artikel drwxr-xr-x - Root-Supergruppe 0 04.09.2020 11:14 /mwf Da es sich um einen Cloud-Server handelt, möchte ich den Port nicht konfigurieren und werde mir daher die UI-Oberfläche nicht ansehen. 2. Abschließend Oben ist der Prozess, den ich nach der erfolgreichen Installation zusammengefasst habe. Es sollte keine Probleme geben, aber es können Auslassungen auftreten. 3. Referenzen https://cloud.tencent.com/developer/article/1084166 https://cloud.tencent.com/developer/article/1084157?from=10680 https://blog.csdn.net/ifenggege/article/details/108396249 Dies ist das Ende dieses Artikels mit dem ausführlichen Tutorial zum Bereitstellen eines Hadoop-Clusters mit Docker. Weitere Informationen zum Bereitstellen eines Hadoop-Clusters mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung zum Schreiben von MySQL ungleich null und gleich null
>>: jQuery zum Erzielen eines gleitenden Treppeneffekts
Ich habe kürzlich an einem Projekt gearbeitet – B...
Innerhalb des Style-Tags der Vue-Komponente befin...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Vorwort 1. Der Effekt ist wie ...
Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...
Inhaltsverzeichnis 1. Teilzeichenfolge () 2. subs...
Vorwort Dieser Artikel enthält 1. Mehrere wesentl...
Dieser Artikel veranschaulicht anhand von Beispie...
1. Erstellen Sie zuerst die Datei (wechseln Sie p...
Finden Sie das Problem Heute werde ich den Tomcat...
In diesem Artikel wird der spezifische Code von J...
Bei der Installation von Puppeteer unter Linux kö...
1. Kurze Einführung in die Veranstaltung Ein Erei...
Vorwort Im Linux-Kernel ist Netfilter ein Subsyst...
1. Manuelles Erstellen und Hinzufügen der Datei m...