Guten Tag.
Es gibt viele Dienste im Internet, die Cloud-Dienste bereitstellen. Mit ihrer Hilfe können Sie die Technologie von BigData erlernen.
In diesem Artikel werden wir Apache Kafka, Apache Spark, Zookeeper und Spark-Shell auf der EC2 AWS-Plattform (Amazon Web Services) zu Hause installieren und lernen, wie Sie alles verwenden.
Einführung in Amazon Web Services
Sie müssen sich unter
aws.amazon.com/console registrieren. Geben Sie einen Namen ein und merken Sie sich das Passwort.
Konfigurieren Sie Knoteninstanzen für Zookeeper- und Kafka-Dienste.
- Wählen Sie "Services-> EC2" aus dem Menü. Wählen Sie als Nächstes die Version des Betriebssystems des Images der virtuellen Maschine aus, wählen Sie Ubuntu Server 16.04 LTS (HVM), SSD-Volume-Typ, klicken Sie auf „Auswählen“. Wir konfigurieren die Serverinstanz: Geben Sie „t3.medium“ mit den Parametern 2vCPU, 4 GB Speicher, Allgemeiner Zweck ein Klicken Sie auf "Weiter: Instanzdetails konfigurieren".
- Fügen Sie die Anzahl der Instanzen 1 hinzu und klicken Sie auf "Weiter: Speicher hinzufügen".
- Wir akzeptieren den Standardwert für die Festplattengröße von 8 GB und ändern den Typ in "Magnetisch" (in den Produktionseinstellungen basierend auf Datenvolumen und Hochleistungs-SSD).
- Geben Sie im Abschnitt "Tag-Instanzen" für "Name" den Namen der Instanz des Knotens "Home1" ein (wobei 1 nur eine Seriennummer ist) und klicken Sie auf "Weiter: ...".
- Wählen Sie im Abschnitt "Sicherheitsgruppen konfigurieren" die Option "Vorhandene Sicherheitsgruppe verwenden" aus, indem Sie den Namen der Sicherheitsgruppe ("Spark_Kafka_Zoo_Project") auswählen und die Regeln für eingehenden Datenverkehr festlegen. Klicken Sie auf "Weiter: ..."
- Scrollen Sie durch den Überprüfungsbildschirm, um Ihre Eingaben zu überprüfen und Launch zu starten.
- Um eine Verbindung zu den Clusterknoten herzustellen, müssen Sie ein Paar öffentlicher Schlüssel zur Identifizierung und Autorisierung erstellen (in unserem Fall die vorhandenen verwenden). Wählen Sie dazu in der Liste den Operationstyp „Vorhandenes Paar verwenden“.
Schlüsselerstellung
- Laden Sie Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) für den Client herunter oder verwenden Sie die SSH-Verbindung vom Terminal.
- Die .pem-Schlüsseldatei verwendet der Einfachheit halber das alte Format. Wir konvertieren es in das von Putty verwendete ppk-Format. Führen Sie dazu das Dienstprogramm PuTTYgen aus und laden Sie den Schlüssel im alten PEM-Format in das Dienstprogramm. Wir konvertieren den Schlüssel und speichern ihn (Save Private Key) zur späteren Verwendung im Home-Ordner mit der Erweiterung .ppk.
Clusterstart
Benennen Sie die Clusterknoten der Einfachheit halber in Node01-04-Notation um. Um vom lokalen Computer aus über SSH eine Verbindung zu Clusterknoten herzustellen, müssen Sie die IP-Adresse des Knotens und seinen öffentlichen / privaten DNS-Namen ermitteln, jeden Clusterknoten einzeln auswählen und für die ausgewählte Instanz seinen öffentlichen / privaten DNS-Namen für die Verbindung über SSH und für die Installation notieren Software zur Textdatei HadoopAdm01.txt.
Beispiel: ec2-35-162-169-76.us-west-2.compute.amazonaws.com
Installieren Sie Apache Kafka im SingleNode-Modus auf einem AWS-Clusterknoten
Um die Software zu installieren, wählen Sie unseren Knoten aus (kopieren Sie dessen öffentliches DNS), um eine Verbindung über SSH herzustellen. Wir konfigurieren die Verbindung über SSH. Wir verwenden den gespeicherten Namen des ersten Knotens, um die Verbindung über SSH mithilfe des in Abschnitt 1.3 erstellten privaten / öffentlichen Schlüsselpaars „HadoopUser01.ppk“ zu konfigurieren. Wir gehen über die Schaltfläche Durchsuchen zum Abschnitt Verbindung / Authentifizierung und suchen nach dem Ordner, in dem wir zuvor die Datei „HadoopUserXX.ppk“ gespeichert haben.
Wir speichern die Verbindungskonfiguration in den Einstellungen.
Wir sind mit dem Knoten verbunden und verwenden login: ubuntu.
- Mit Root-Rechten aktualisieren wir Pakete und installieren zusätzliche Pakete, die für die weitere Installation und Konfiguration des Clusters erforderlich sind.
sudo apt-get update sudo apt-get -y install wget net-tools netcat tar
- Installieren Sie Java 8 jdk und überprüfen Sie die Version von Java.
sudo apt-get -y install openjdk-8-jdk
- Für eine normale Leistung des Clusterknotens müssen Sie die Speicheraustauscheinstellungen anpassen. VM-Swappines sind standardmäßig auf 60% eingestellt. Dies bedeutet, dass das System bei einer Speicherauslastung von 60% aktiv Daten vom RAM auf die Festplatte austauscht. Abhängig von der Linux-Version kann der Parameter VM swappines auf 0 oder 1 gesetzt werden:
sudo sysctl vm.swappiness=1
- Fügen Sie der Konfigurationsdatei eine Zeile hinzu, um die Einstellungen während des Neustarts zu speichern.
echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf
- Bearbeiten von Einträgen in der Datei / etc / hosts zur bequemen Auflösung der Knotennamen des Kafka-Clusters und
zookeeper an privaten IP-Adressen zu den zugewiesenen Clusterknoten.
echo "172.31.26.162 host01" | sudo tee --append /etc/hosts
Wir überprüfen die korrekte Erkennung von Namen, indem wir einen der Einträge pingen.
- Laden Sie die neuesten Versionen (http://kafka.apache.org/downloads) der Kafka- und Scala-Distributionen herunter und bereiten Sie das Verzeichnis mit den Installationsdateien vor.
wget http://mirror.linux-ia64.org/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz tar -xvzf kafka_2.12-2.1.0.tgz ln -s kafka_2.12-2.1.0 kafka
- Löschen Sie die tgz-Archivdatei, wir brauchen sie nicht mehr
- Versuchen wir dazu den Zookeeper-Dienst:
~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties
Zookeeper startet mit Standardstartoptionen. Sie können das Protokoll überprüfen:
tail -n 5 ~/kafka/logs/zookeeper.out
Um sicherzustellen, dass der Zookeeper-Daemon nach dem Neustart gestartet wird, müssen wir Zookeper als Hintergrunddienst starten:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
Um den Start von Zookepper zu überprüfen, überprüfen Sie
netcat -vz localhost 2181
Wir konfigurieren den Zookeeper- und Kafka-Dienst für die Arbeit. Bearbeiten / erstellen Sie zunächst die Datei /etc/systemd/system/zookeeper.service (Dateiinhalt unten).
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target
Bearbeiten / erstellen Sie als Nächstes für Kafka die Datei /etc/systemd/system/kafka.service (Dateiinhalt unten).
[Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
- Wir aktivieren systemd-Skripte für Kafka- und Zookeeper-Dienste.
sudo systemctl enable zookeeper sudo systemctl enable kafka
- Überprüfen Sie die Funktion von systemd-Skripten.
sudo systemctl start zookeeper sudo systemctl start kafka sudo systemctl status zookeeper sudo systemctl status kafka sudo systemctl stop zookeeper sudo systemctl stop kafka
- Wir werden die Funktionalität der Dienste von Kafka und Zookeeper überprüfen.
netcat -vz localhost 2181 netcat -vz localhost 9092
- Überprüfen Sie die Zookeeper-Protokolldatei.
cat logs/zookeeper.out
Erste Freude
Wir erstellen unser erstes Thema auf dem zusammengebauten Kafka-Server.
- Es ist wichtig, die Verbindung zu "host01: 2181" zu verwenden, wie Sie in der Konfigurationsdatei server.properties angegeben haben.
- Wir schreiben einige Daten in das Thema.
kafka-console-producer.sh --broker-list host01:9092 --topic first_topic
Strg-C - Beenden Sie die Themenkonsole.
- Versuchen Sie nun, die Daten aus dem Thema zu lesen.
kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning
- Schauen wir uns die Liste der Kafka-Themen an.
bin/kafka-topics.sh --zookeeper spark01:2181 --list
- Bearbeiten der Kafka-Servereinstellungen für die Optimierung der Einrichtung einzelner Cluster
# Sie müssen den ISR-Parameter auf 1 ändern.
bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter
- Wir starten den Kafka-Server neu und versuchen erneut, den Verbraucher-Ohm anzuschließen
- Schauen wir uns die Themenliste an.
bin/kafka-topics.sh --zookeeper host01:2181 --list
Konfigurieren Sie Apache Spark auf einem Cluster mit einem Knoten
Wir haben eine Instanz des Knotens mit den auf AWS installierten Zookeeper- und Kafka-Diensten vorbereitet. Jetzt müssen Sie Apache Spark installieren.
Laden Sie die neueste Apache Spark-Distribution herunter.
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
- Entpacken Sie die Distribution und erstellen Sie einen symbolischen Link für spark und löschen Sie unnötige Archivdateien.
tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz
- Gehen Sie zum sbin-Verzeichnis und führen Sie den Spark-Assistenten aus.
./start-master.sh
- Wir stellen über einen Webbrowser eine Verbindung zum Spark-Server an Port 8080 her.
- Führen Sie Spark-Slaves auf demselben Knoten aus
./start-slave.sh spark://host01:7077
- Führen Sie die Funkenschale mit dem Master auf host01 aus.
./spark-shell --master spark://host01:7077
- Wenn der Start nicht funktioniert, fügen Sie den Pfad zu Spark in bash hinzu.
vi ~/.bashrc # SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH
source ~/.bashrc
- Führen Sie die Funkenschale erneut mit dem Master auf host01 aus.
./spark-shell --master spark://host01:7077
Ein Einzelknotencluster mit Kafka, Zookeeper und Spark funktioniert. Hurra!
Ein bisschen Kreativität
Laden Sie den Scala-IDE-Editor herunter (unter
scala-ide.org ). Wir beginnen und beginnen Code zu schreiben. Hier werde ich mich nicht mehr wiederholen, da es einen
guten Artikel über Habré gibt .
Nützliche Literatur und Kurse helfen:
Kurse.hadoopinrealworld.com/courses/enrolled/319237data-flair.training/blogs/kafka-consumerwww.udemy.com/apache-spark-with-scala-hands-on-with-big-data