Wir erfinden das Rad neu: Hier verwenden wir Neuverpackung, um ein Docker-basiertes Hadoop-Image zu generieren. Die Software, von der der Hadoop-Cluster abhängt, ist: JDK, SSH usw., solange diese beiden Elemente und Hadoop-bezogene Pakete in das Image gepackt sind; Vorbereitung der Konfigurationsdatei 1. Hadoop-bezogene Konfigurationsdateien: core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml, slaves, hadoop-env.sh Erstellen Sie ein Bild 1. Installationsabhängigkeiten Führen Sie apt-get update && \ aus. apt-get install -y openssh-server openjdk-8-jdk wget 2. Laden Sie das Hadoop-Paket herunter Führen Sie wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz && \ aus. tar -xzvf hadoop-2.10.0.tar.gz && \ mv hadoop-2.10.0 /usr/local/hadoop && \ rm hadoop-2.10.0.tar.gz && \ rm /usr/local/hadoop/share/doc -rf 3. Umgebungsvariablen konfigurieren ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ENV HADOOP_HOME=/usr/local/hadoop ENV PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin 4. SSH-Schlüssel für passwortfreie Node-Anmeldung generieren Führen Sie den Befehl ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \ aus. cat ~/.ssh/id_rsa.pub >> ~/.ssh/autorisierte_schlüssel 5. Erstellen Sie Hadoop-bezogene Verzeichnisse, kopieren Sie die zugehörigen Konfigurationsdateien, fügen Sie den zugehörigen Dateien Ausführungsberechtigungen hinzu und formatieren Sie schließlich den Namenode-Knoten. Starten Sie den SSH-Dienst, wenn jeder Knoten gestartet wird. RUN mkdir -p ~/hdfs/namenode && \ mkdir -p ~/hdfs/datanode && \ mkdir $HADOOP_HOME/logs KOPIEREN Sie config/* /tmp/ #SSH kopieren, Hadoop-Konfiguration bezogen RUN mv /tmp/ssh_config ~/.ssh/config && \ mv /tmp/hadoop-env.sh /usr/local/hadoop/etc/hadoop/hadoop-env.sh && \ mv /tmp/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml && \ mv /tmp/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml && \ mv /tmp/mapred-site.xml $HADOOP_HOME/etc/hadoop/mapred-site.xml && \ mv /tmp/yarn-site.xml $HADOOP_HOME/etc/hadoop/yarn-site.xml && \ mv /tmp/slaves $HADOOP_HOME/etc/hadoop/slaves && \ mv /tmp/start-hadoop.sh ~/start-hadoop.sh && \ mv /tmp/run-wordcount.sh ~/run-wordcount.sh #Ausführungsberechtigung hinzufügen RUN chmod +x ~/start-hadoop.sh && \ chmod +x ~/run-wordcount.sh && \ chmod +x $HADOOP_HOME/sbin/start-dfs.sh && \ chmod +x $HADOOP_HOME/sbin/start-yarn.sh #Format Namenknoten RUN /usr/local/hadoop/bin/hdfs namenode -format Ausführen eines Hadoop-Clusters in Docker Nachdem das Image über die obige Docker-Datei generiert wurde, können Sie das oben generierte Image zum Erstellen eines Hadoop-Clusters verwenden. Starten Sie hier einen Master- und zwei Slave-Knoten. Fügen Sie ein Bridge-Netzwerk hinzu: Docker-Netzwerk erstellen --driver=bridge solinx-hadoop Starten Sie den Masterknoten: docker run -itd --net=solinx-hadoop -p 10070:50070 -p 8088:8088 --name solinx-hadoop-master --hostname solinx-hadoop-master solinx/hadoop:0.1 Starten Sie den Slave1-Knoten: docker run -itd --net=solinx-hadoop --name solinx-hadoop-slave1 --hostname solinx-hadoop-slave1 solinx/hadoop:0.1 Starten Sie den Slave2-Knoten: docker run -itd --net=solinx-hadoop --name solinx-hadoop-slave2 --hostname solinx-hadoop-slave1 solinx/hadoop:0.1 Rufen Sie den Master-Knoten auf und führen Sie das Skript aus, um den Hadoop-Cluster zu starten: Zusammenfassen Oben habe ich Ihnen das Ausführen von Hadoop und die Imageerstellung in Docker vorgestellt. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der in MySQL häufig verwendeten Typkonvertierungsfunktionen (empfohlen)
brauchen: Implementieren Sie die dynamische Anzei...
Inhaltsverzeichnis Einführung MySQL-Hochverfügbar...
Der Standardanforderungsheader des http1.1-Protok...
Inhaltsverzeichnis Die erste Methode: Wenn die My...
* Adresse - Adresse * Blockzitat - Blockzitat * Mi...
In diesem Artikelbeispiel wird der spezifische Co...
Vor kurzem musste ich alle Hostnamen im LAN aufli...
/******************** * Anwendung von verknüpften...
Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...
Inhaltsverzeichnis Nachdem Sie einen Container lo...
Fügen Sie einfach den folgenden Code hinzu, um die...
Inhaltsverzeichnis Vorwort Kommunikation zwischen...
Detaillierte Erklärung der MySQL-Instanz mit akti...
Frage Wie greife ich in Docker auf die lokale Dat...
Wenn Sie Schaltflächen (Eingabe, Schaltfläche) sch...