Verwenden Sie Hue, um mit Amazon EMR (SparkSQL, Phoenix) und Amazon Redshift zu spielen

Status Quo

Apache Hue ist ein webbasierter interaktiver SQL-Assistent, mit dem Big-Data-Anwender (Data-Warehouse-Ingenieure, Datenanalysten usw.) mit SQL mit dem Data-Warehouse interagieren können. Wenn der Amazon EMR-Cluster startet, installieren Sie ihn, indem Sie Hue aktivieren. Nach der Aktivierung von Hue wird die Arbeit, die ursprünglich für die Anmeldung am Masterknoten zum Schreiben und Senden von SQL erforderlich war, an das Web-Frontend übertragen, was nicht nur die einheitliche Verwaltung des täglichen Entwicklungsbedarfs erleichtert, sondern auch die Sicherheit des Clusterzugriffs gewährleistet . Auf der anderen Seite verfügt Hue über den einzigartigen Vorteil, dass SparkSQL für die Remote-Übermittlung von Spark-Aufgaben verwendet werden kann, was die Entwicklung im Vergleich zu den beiden Methoden der zusätzlichen Konfiguration von Hive on Spark für Amazon EMR-Cluster oder der Verwendung von Code für die Livy-Remote-Übermittlung erheblich verbessert. und Betriebseffizienz. In diesem Artikel wird außerdem erläutert, wie Sie Amazon Redshift-Data Warehouses über Hue integrieren und Phoenix-Aufgaben aus der Ferne übermitteln, um mit HBase zu interagieren, wodurch Hue zu einer einheitlichen SQL-Zugriffsplattform für Data Warehouses wird.

Die Amazon-Cloud-Technologie-Entwickler-Community stellt Entwicklern globale Ressourcen für Entwicklungstechnologie zur Verfügung. Es gibt technische Dokumente, Entwicklungsfälle, technische Kolumnen, Schulungsvideos, Aktivitäten und Wettbewerbe usw. Helfen Sie chinesischen Entwicklern, sich mit den modernsten Technologien, Ideen und Projekten der Welt zu vernetzen, und empfehlen Sie der globalen Cloud-Community herausragende chinesische Entwickler oder Technologien. Wenn Sie noch nicht aufgepasst/Favoriten gefunden haben, beeilen Sie sich bitte nicht, wenn Sie dies sehen. Klicken Sie hier , um es zu Ihrer technischen Schatzkammer zu machen!

Überblick über die Lösungsarchitektur

Bild.png

Eine Einleitung

Senden Sie den SparkSQL-Job über Livy

Status der Ausführungs-Engine

Vergleichen wir zunächst kurz den aktuellen Status mehrerer beliebter Ausführungs-Engines:

  • Apache MapReduce  ist die langsamste Abfrageausführungs-Engine, da für die Verarbeitung von Clientabfragen viele Festplatten-IOs erforderlich sind .
  • Apache Tez  ist deutlich schneller als Apache MapReduce und hält gleichzeitig die Festplatten-IO konstant .
  • Apache Spark  ist etwas schneller als Apache Tez ohne E/A-Blockierung. Wie Apache Tez verarbeitet es Daten auf DAG-Art. Spark ist vielseitiger und bietet Speicherberechnung, Echtzeit-Stream-Verarbeitung, maschinelles Lernen und andere Rechenmethoden, die für iteratives Rechnen geeignet sind .

 Einführung in Apache Livy

Apache Livy ist ein Dienst, der über eine REST-API problemlos mit Spark-Clustern interagiert. Die Konfigurationsmethode in dieser Lösung kann das von der Hue-Seite geschriebene SparkSQL über die Livy-Schnittstelle an den EMR-Cluster senden.

EMR Hue verarbeitet das SparkSQL-Standardverhalten

Wenn der Editor SparkSQL im Hue-Bedienfeld auswählt und die SQL-Aufgabe sendet, gehen wir zur Resource Manager-Konsole, um den entsprechenden Anwendungstyp Tez entsprechend der application_id abzufragen ((Ausführung auf YARN-Cluster mit App-ID application_1656071365605_0006)):

Bild.png

Bild.png

Wenn wir die Hue-Konfigurationsdatei (/etc/hue/conf/hue.ini) öffnen und die Konfiguration unter [[[sql]]] sehen, wie in der Abbildung unten gezeigt, lautet die Schnittstellenkonfiguration hiveserver2, sodass wir wissen, dass es SparkSQL ist Ich verwende derzeit noch hiveserver2, daher wird die Tez-Engine verwendet (die Hive-Ausführungs-Engine auf EMR ist standardmäßig Tez), was bedeutet, dass die obige Abfrage nicht tatsächlich mit der Spark-Ausführungs-Engine ausgeführt wird.

Bild.png

Senden Sie SparkSQL-Aufgaben über Livy in EMR Hue

(1) Ändern Sie die Ausführungs-Engine in der Hue-Konfigurationsdatei (/etc/hue/conf/hue.ini) und starten Sie den Hue-Dienst neu

Bild.png

sudo systemctl restart hue.service
sudo systemctl status hue.service

Nach erneuter Übermittlung der SparkSQL-Aufgabe können Sie sehen, dass sich der ApplicationType der Anwendung in SPARK geändert hat.

Bild.png

Leistungsoptimierung in Produktionsszenarien:

Die obige Anwendung überprüft die Umgebungsdetails über die Spark-Verwaltungsschnittstelle:

Bild.png

Siehe spark.driver.memory und spark.executor.memory sind auf 1G eingestellt

Bild.png

Dies liegt daran, dass der Wert der beiden oben genannten Parameter im Hue-Quellcode direkt auf 1G festgelegt ist:

https://github.com/cloudera/hue/blob/bd6324a79c2e6b6d002ddd6767b0e63883373320/desktop/libs/notebook/src/notebook/connectors/spark_shell.py

{
	      "name": "driverMemory",
	      "nice_name": _("Driver Memory"),
	      "help_text": _("Amount of memory to use for the driver process in GB. (Default: 1). "),
	      "type": "jvm",
	      "is_yarn": False,
	      "multiple": False,
	      "defaultValue": '1G',
	      "value": '1G',
	},
{
	      "name": "executorMemory",
	      "nice_name": _("Executor Memory"),
	      "help_text": _("Amount of memory to use per executor process in GB. (Default: 1)"),
	      "type": "jvm",
	      "is_yarn": True,
	      "multiple": False,
	      "defaultValue": '1G',
	      "value": '1G',
	    }

Wenn es leicht ist, während der Aufgabenausführung mit Standardparameterwerten eine OOM-Ausnahme auszulösen, die zu einem Aufgabenfehler führt, können wir sie mit den folgenden Methoden optimieren:

cp /usr/lib/hue/desktop/libs/notebook/src/notebook/connectors/spark_shell.py /usr/lib/hue/desktop/libs/notebook/src/notebook/connectors/spark_shell.py.bak
sudo vi /usr/lib/hue/desktop/libs/notebook/src/notebook/connectors/spark_shell.py


Löschen Sie die Konfiguration von „driverMemory“ und „executorMemory“ und starten Sie den Hue-Dienst neu

sudo systemctl restart hue.service
sudo systemctl status hue.service

Bild.png

Führen Sie SparkSQL erneut aus und stellen Sie sicher, dass die beiden Speicherparameter von Environment aktualisiert wurden, was mit der Definition in /etc/spark/conf/spark-defaults.conf übereinstimmt:

Bild.png

Bild.png

Hue konfiguriert Phoenix für die Übermittlung von HBase-Aufgaben

Einführung in Apache Phoenix

Apache Phoenix ist eine Open-Source-Engine für massiv parallele relationale Datenbanken, die OLTP für Hadoop unterstützt und Apache HBase als Backing-Store verwendet. Phoenix bietet einen JDBC-Treiber, der die Komplexität des NoSQL-Speichers verbirgt und es Benutzern ermöglicht, SQL-Tabellen, Ansichten, Indizes und Sequenzen zu erstellen, zu löschen und zu ändern.

Konfigurieren Sie Phoenix

(1) Bereiten Sie die virtuelle Hue Python-Umgebung vor

sudo /usr/lib/hue/build/env/bin/pip install phoenixdb

(2) Ändern Sie die Hue-Konfigurationsdatei:

Fügen Sie im Abschnitt [notebook] [[interpreters]] von /etc/hue/conf/hue.ini Folgendes hinzu:

[[[phoenix]]]
name=HBase Phoenix
interface=sqlalchemy
options='{"url": "phoenix:// ip-172-31-37-125.ap-southeast-1.compute.internal:8765/"}'

Starten Sie den Hue-Dienst neu

sudo systemctl restart hue.service
sudo systemctl status hue.service

(3) Senden Sie die Phoenix-Aufgabe auf der Hue-Seite:

Hue – Editor Teilweise aufgrund der Aktualisierung der Konfigurationsdatei erscheint die Option von HBase Phoenix, Tabelle zu erstellen und abzufragen:

Bild.png

CREATE TABLE user (id varchar PRIMARY KEY,name varchar,passwd varchar)
upsert into user(id, name, passwd) values('001', 'admin', 'admin')
select * from user

Bild.png

Korrektur des verstümmelten Namens der HBase-Anzeigespalte

(1) Wenn die oben genannten Vorgänge abgeschlossen sind, kehren Sie zur HBase-Shell zurück, um den Inhalt der Tabelle anzuzeigen und festzustellen, dass der Spaltenname verstümmelt ist:

Bild.png

Durch die Verwendung der Phoenix-Befehlszeile (/usr/lib/phoenix/bin/sqlline.py, nicht über Hue) zum Erstellen einer Tabelle kann das Problem immer noch reproduziert werden, und die verstümmelten Zeichen werden nicht in der Phoenix-JDBC-Verbindung angezeigt:

Bild.png

(2) Durch Hinzufügen von COLUMN_ENCODED_BYTES= 0 am Ende beim Erstellen einer Tabelle in Phoenix kann dieses Problem vermieden werden:

CREATE TABLE user02 (id varchar PRIMARY KEY,name varchar,passwd varchar) COLUMN_ENCODED_BYTES= 0
upsert into user02(id, name, passwd) values('002', 'admin', 'admin')
select * from user02

HBase Shell Sehen Sie sich die Ergebnisse an, die Spaltennamen wurden normal angezeigt:

Bild.png

Hue stellt eine Verbindung zu Redshift her, um Aufgaben zu übermitteln

Wenn mehrere Dienste wie Amazon EMR und Amazon Redshift an der Data Warehouse-Plattform beteiligt sind, kann die einheitliche Interaktionsfunktion einfach durch die umfangreichen Connectors-Erweiterungstypen von Hue realisiert werden.

(1) Bereiten Sie die virtuelle Hue Python-Umgebung vor

cd /usr/lib/hue/
sudo ./build/env/bin/pip install sqlalchemy-redshift
sudo /usr/lib/hue/build/env/bin/pip2.7 install psycopg2-binary

(2) Ändern Sie die Hue-Konfigurationsdatei:

Fügen Sie im Abschnitt [notebook] [[interpreters]] von /etc/hue/conf/hue.ini Folgendes hinzu:

[[[redshift]]]
name = Redshift
interface=sqlalchemy
  options='{"url": "redshift+psycopg2://username:[email protected]:5439/database"}'

Starten Sie den Hue-Dienst neu

sudo systemctl restart hue.service
sudo systemctl status hue.service

(3) Senden Sie die Redshift-Aufgabe auf der Hue-Seite:

Hue – Editor teilweise aufgrund der Aktualisierung der Konfigurationsdatei erscheint die Option von Reshift:

Bild.png

Senden Sie SQL-Abfragen, um ganz einfach Amazon-Redshift-Data-Warehouse-Daten zu erhalten:

Bild.png

Zusammenfassen

Dieser Artikel hilft hauptsächlich Benutzern, die Amazon EMR verwenden, bei der Implementierung eines einheitlichen Data Warehouse-Plattform-Entwicklungstools über Hue. Einerseits zentralisiert es die Verwaltung von Data Warehouse-SQL-Entwicklungsaufgaben und andererseits stellt es anderen Abteilungen eine Plattform zur Verfügung Für unabhängige Analysen wird der Aufbau eines Data Warehouse gefördert.

Der Autor dieses Artikels

Bild.png

Der technische Account Manager von Sunny Fang  Amazon unterstützt hauptsächlich die Architekturoptimierung, das Kostenmanagement, die technische Beratung usw. von Kunden aus der Finanz- und Internetbranche und konzentriert sich auf technische Forschung und Praxis in Richtung Big Data und Container. Bevor er zu Amazon kam, arbeitete er in Technologieunternehmen wie Citrix und Microsoft und verfügt über 8 Jahre Erfahrung in der Architekturoptimierung und -unterstützung im Bereich Virtualisierung und Public Cloud.

Bild.png

Yin Zhang  Technischer Account Manager bei Amazon, verantwortlich für Kundenarchitektur und Kostenoptimierung auf Unternehmensebene, technischen Support und andere Arbeiten. Er verfügt über langjährige praktische Erfahrung im Big-Data-Architekturdesign und der Data-Warehouse-Modellierung. Bevor er zu Amazon kam, war er lange Zeit für das Architekturdesign, die Data-Warehouse-Modellierung, den Betrieb und die Wartung der führenden E-Commerce-Big-Data-Plattform verantwortlich.

Artikelquelle: https://dev.amazoncloud.cn/column/article/630b3f0176658473a3220015?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

Guess you like

Origin blog.csdn.net/u012365585/article/details/132643819