Von ORDIX AG auf Dienstag, 06. August 2019
Kategorie: Data Management

Apache Kudu 1.10 - jetzt mit Autorisierung & Backup

Am 9. Juli wurde Apache Kudu 1.10 veröffentlicht. Nur wenige Wochen später hat Cloudera diese Kudu-Version in die neue Hadoop-Distribution CDH 6.3 integriert. Neben vielen Detailverbesserungen und Fehlerkorrekturen enthält Kudu jetzt einige, seit langem erwartete neue Features:

Alle neuen Features, Fehlerkorrekturen und Änderungen werden in den Kudu Release Notes beschrieben [1].

Hive Metastore Integration

Die Hive Metastore Integration synchronisiert den Kudu Datenbankkatalog automatisch mit den Daten im Hive Metastore (HMS). Dadurch können Applikationen, die den HMS nutzen, automatisch auf die aktuellen Metadaten der Kudu Datenbank zugreifen. Beispiele dafür sind Impala und Sentry. Der HMS verwendet Datenbanken und Tabellen während Kudu das Konzept einer Datenbank nicht unterstützt, sondern nur Tabellen kennt. Für die HMS Integration müssen sich alle Kudu Tabellen an die Namenskonventionen des HMS halten. D.h. Tabellennamen in Kudu dürfen nur aus ASCII Zeichen, dem Underscore "_" und einem Punkt "." bestehen. Der Punkt trennt dabei den Namen der Datenbank (im HMS) vom Namen der Tabelle (z.B. "MEINE_DATENBANK.MEINE_TABELLE"). Enthält die Kudu Datenbank Tabellen, die sich nicht an diese Konvention halten, dann müssen die Tabellennamen vor der Aktivierung der HMS Integration umbenannt werden.

Fine-Grained Authorization

Eins der wichtigsten neunen Features ist die Sentry Integration und damit die Möglichkeit, Zugriffsrechte fein granular zu vergeben und zu verwalten. Bisher konnten Rechte für einzelne Tabellen oder Spalten einer Kudu-Datenbank nur über Impala vergeben werden [2]. Dadurch war es möglich, den Zugriff über Impala SQL einzuschränken. Beim direkten Zugriff über die Kudu-Datenbanktreiber, wie zum Beispiel in einem Spark Job, wurden diese Policies aber ignoriert. Ab Version 1.10 ist es mit Sentry möglich, die Zugriffsrechte direkt für Kudu zu konfigurieren. Rechte können für den Server, einzelne Datenbanken, Tabellen und Spalten vergeben werden. Eine Datenbank in Kudu wird durch eine simple Namenskonvention definiert. Alles vor dem ersten Punkt (".") im Namen einer Tabelle wird als Datenbankname betrachtet. Für die unterschiedenen Datenbankobjekte können Rechte für das Lesen der Metadaten sowie das Erstellen, Ändern und Löschen der Objekte selbst festgelegt werden. Zusätzlich ist die Rechtevergabe für das Einfügen, Ändern, Löschen und Selektieren von Daten möglich. Voraussetzung für die Nutzung von Sentry, ist die Aktivierung der Hive Metastore Integration. Voraussetzung für die Nutzung von Sentry, ist die Aktivierung der Hive Metastore Integration. Die Details werden in der Kudu-Dokumentation auf der Homepage des Apache-Projektes [3] und bei Cloudera [4] ausführlich beschrieben.  

Backup & Restore

Mit dem neuen Backup & Restore Feature können Kudu-Tabellen gesichert und wiederhergestellt werden. Für die Datensicherung und die Wiederherstellung werden Spark Jobs verwendet. Zusätzlich gibt es noch Tools für die Verwaltung der Backups. Die Sicherung der Daten erfolgt in Dateien. Als Ziel für das Backup kann jeder von Spark unterstützte Verzeichnispfad angeben werden. Das kann zum Beispiel ein HDFS Verzeichnis sein. Beim ersten Backup wird automatsch ein Full-Backup erstellt. Weitere Backups werden dann inkrementell durchgeführt. Zusätzlich kann jederzeit ein Full-Backup erzwungen werden. Beim Restore wird die gesicherte Tabelle automatisch neu angelegt. Alternativ kann ein Suffix, das an den Namen der Tabelle angehängt wird, angegeben werden. Das ist zum Beispiel hilfreich, wenn eine Tabelle mit dem Namen existiert und nicht überschrieben werden soll. Weitere Details gibt es wieder auf der Homepage des Apache Projektes [5] und in der Cloudera Dokumentation [6]. 

CDH Integration

Die beschriebenen Features sind abhängig von der Integration in eine existierende Hadoop Installation. Insbesondere werden Sentry und Spark benötigt. Weiterhin ist für die Ausführung der Spark Jobs ein Cluster Manager und für die Speicherung der Backups ein Dateisystem (wie zum Beispiel HDFS) notwendig. Hier bieten sich YARN und HDFS an. Einige der Kudu-Features benötigen eine Integration mit Impala und Hive bzw. den Hive Metastore. In der aktuellen Cloudera Distribution sind all diese Dienste bereits integriert. Weitere interessante Neuerungen in CDH bzw. Cloudera Enterprise 6.3 sind:  


​ Die CDH Release Notes enthalten eine ausführliche Beschreibung der Änderungen und Neuheiten [7].

Quellen 

Kudu Blog
https://kudu.apache.org/2019/07/09/apache-kudu-1-10-0-release.html

[1] Apache Kudu 1.10.0 Release Notes:
https://kudu.apache.org/releases/1.10.0/docs/release_notes.html

[2] Fine-Grained Authorization with Apache Kudu and Impala
https://kudu.apache.org/2019/04/22/fine-grained-authorization-with-apache-kudu-and-impala.html

[3] Apache Kudu Security - Fine-Grained Authorization
https://kudu.apache.org/docs/security.html#fine_grained_authz

[4] Cloudera Security Documentation - Kudu Security Overview
https://www.cloudera.com/documentation/enterprise/6/latest/topics/kudu_security.html#concept_yb4_jxp_h3b

[5] Apache Kudu Administration - Backup and Restore
https://kudu.apache.org/docs/administration.html#backup

[6] CDH Documentation - Apache Kudu Administration
https://www.cloudera.com/documentation/enterprise/6/latest/topics/kudu_administration_cli.html#concept_h35_pwk_33b

[7] Cloudera CDH 6.3 Release Notes 
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_630_release_notes.html
 

Kommentare hinterlassen