Cloudera Cluster Automation mit Ansible (Teil 2)

big-data-title

Zielsetzung

Dieser Blog-Beitrag baut auf  Teil 1 der Beitragsreihe zum Thema Cloudera Cluster Automation mit Ansible auf. Ziel dieser Reihe von Blog-Beiträgen ist es, einen Überblick über die Möglichkeiten für den automatisierten Aufbau eines Cloudera Clusters (CDH 6.x) mithilfe von Ansible zu geben. Die in diesem Artikel beschriebene Vorgehensweise kann sowohl in der täglichen Administration von Cloudera Clustern als auch für die schnelle Realisierung von Proof of Concepts verwendet werden. Ziel dieses Beitrags ist die automatisierte Konfiguration des Cloudera Management Services innerhalb einer bestehenden Cloudera Manager Instanz.

Vorgehensweise

Wie auch bereits in Teil 1 der Beitragsreihe bilden die Cloudera Manager API und die Ansible Module "uri" und "template" die Kernkomponenten zur Erreichung der Zielsetzung. Da die in diesem Blog-Beitrag betrachteten JSON-Templates hinreichend groß und komplex sind, werden diese ausschnittsweise betrachtet. Ein "working Example" inklusive vollständiger JSON-Templates ist auf GitHub zu finden.

Voraussetzungen

Es wird davon ausgegangen, dass die Anleitung für die Installation eines Cloudera Clusters bis inklusive Schritt 6: "Install CDH and Other Software" durchgeführt wurde. Wichtig sind die Datenbanken und Service-Accounts für den Activity Monitor und den Reports Manager, welche Teil des Cloudera Management Services sind. Die Installation und Konfiguration ist in Schritt 4: "Install Databases" beschrieben. Bis auf den Reports Manager sind alle Dienste in der kostenlosen Version enthalten. Um den Reports Manager nutzen zu können, wird eine Cloudera Enterprise oder Trial Lizenz benötigt. Die Trial Lizenz kann bis Version 6.3.2 über den Cloudera Manager aktiviert werden.

Konfiguration des cloudera management service

Im Folgenden wird das Hinzufügen des Cloudera Management Service über die Cloudera Manager API näher betrachtet. Die Cloudera Manager API stellt über den Endpunkt /api/v32/cm/service die Möglichkeit bereit, den Cloudera Management Service dem Cloudera Manager hinzuzufügen. Über diesen Endpunkt kann mithilfe eines JSON-Templates der Cloudera Management Service inklusive der Rollen Service Monitor, Activity Monitor, Host Monitor, Reports Manager, Event Server und Alert Publisher konfiguriert werden. Zu beachten ist, dass keine Rollen gestartet werden. Außerdem wird das Hinzufügen oder Konfigurieren über diesen Endpunkt fehlschlagen, wenn bereits ein Cloudera Management Service existiert. 

Grundsätzlich reicht es, dem Endpunkt ein minimales JSON-Template in der folgenden Form zu übergeben:

Damit werden der Cloudera Management Service und alle zugehörigen Rollen automatisch konfiguriert. Mit diesem Vorgehen kann nicht beeinflusst werden, welchen Hosts die Rollen zugewiesen werden. Auch werden wichtige Konfigurationen wie die Datenbankparameter für den Activity Monitor und den Reports Manager nicht gesetzt. Es bedarf also weiterer manueller Konfigurationen im Anschluss oder eines erweiterten JSON-Templates. 

Beispielhaft ist im Folgenden abgebildet, wie der Activity Monitor über das JSON-Template einem Host zugewiesen werden kann. Gleichzeitig wird auch die Datenbankverbindung mithilfe des JSON-Templates konfiguriert.

In dem gezeigten Template wird der Host für den Activity Monitor Service über die "hostId" zugewiesen. 

Über roleConfigGroupName wird auf die Rollen-Konfigurationsgruppe verwiesen, in welcher die Konfiguration festgehalten wird. Bei der mgmt-ACTIVITYMONITOR-BASE-Gruppe handelt sich dabei um die Standardrollengruppe. Eine Rollengruppe besteht aus einer Reihe von Konfigurationseigenschaften für einen Rollentyp sowie einer Liste von Rolleninstanzen, die dieser Gruppe zugeordnet sind. Der Cloudera Manager erstellt automatisch eine Standardrollengruppe für jeden Rollentyp. 

Alle über die Cloudera Manager API zulässigen Parameter zur Konfiguration über ein JSON-Template können in der Dokumentation des Endpunkts eingesehen werden. Im konkreten Beispiel werden mithilfe des template-Moduls von Ansible alle Stellen der Form "{{..}}" zur Laufzeit angepasst. Das Beispiel ist auch in dem "working Example" auf GitHub zu finden. Ist ein JSON-Template mit entsprechender Cloudera-Management-Service-Konfiguration vorhanden, kann der Service dem Cloudera Manager mit Ansible in zwei Schritten hinzugefügt werden.

 Schritt 1: Hinzufügen und Konfiguration des Service

 Schritt 2: Starten des Cloudera Management Service

Wurden die beiden Ansible-Tasks erfolgreich ausgeführt, ist der Cloudera Management Service entsprechend der Konfiguration über das JSON-Template im Cloudera Manager verfügbar. 

Fazit 

In diesem Beitrag wurde gezeigt, wie mit geringem Aufwand und wenigen Ansible Tasks der Cloudera Management Service einem Cloudera Manager hinzugefügt werden kann. Ein "working Example" Ansible Playbook inklusive vollständigem Cloudera Management Service JSON-Template ist auf Github verfügbar. In Teil 3 der Beitragsreihe schauen wir uns die spezifische Konfiguration einzelner Cluster-Dienste im Detail an.

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/