Das Hadoop Framework ermöglicht die verteilte Verwaltung und Berechnung großer Datenmengen mithilfe von Clustern, indem die auszuführenden Transformationen auf die Server verteilt und dort parallel ausgeführt werden. Hadoop und das dazugehörige Ökosystem sind durch die Vielzahl an verknüpften Tools sehr komplex und erfordern deshalb die Entwicklung und Wartung durch Spezialisten. Aus dieser Marktlücke sind einige Distributoren wie z.B. Hortonworks oder Cloudera entstanden, um z.B. die Installation zu vereinfachen und grafische Oberflächen zum Konfigurieren, Monitoren und Warten des Clusters anzubieten. Da die meisten Tools aus dem Hadoop Ökosystem Open-Source-Software sind, wird kein allgemeiner Herstellersupport angeboten. Allerdings bieten die Distributoren einen Support für ihren ausgewählten Toolstack an. Zwei weit verbreitete Hadoop-Distributionen sind “Cloudera’s Distribution Including Apache Hadoop” (CDH) und die “Hortonworks Data Platform” (HDP).
Dieser Beitrag beschäftigt sich mit den Unterschieden und Gemeinsamkeiten dieser beiden Distributionen.
Sowohl CDH als auch HDP stellen kostenfreie Versionen ihrer Hadoop-Distributionen zur Verfügung. Allerdings ist der Support beider Distributionen kostenpflichtig. CDH bietet außerdem eine kostenpflichtige Enterprise Version an, welche die Open-Source-Variante um zusätzliche nützliche Tools erweitert sowie den Support beinhaltet. Zu den Enterprise Features gehören Multi-Cluster Management, Rolling Upgrades, Auditing, Metadatenmanagement, erweiterbare Integration von Partner Services sowie Backup und Disaster Recovery.
Beide Distributionen bieten dem Anwender Sicherheit sowie Stabilität und unterstützen ähnliche Hadoop Kernwerkzeuge wie zum Beispiel HDFS, Yarn, MapReduce, Spark und Hive. Allerdings unterscheiden sie sich in der Auswahl der Apache Projekte, welche sie unterstützen. So bietet HDP beispielweise die Möglichkeit, mit den Tools Zeppelin und Phoenix zu arbeiten, CDH hingegen nutzt die Hadoop-User-Experience (HUE) als grafisches Userinterfaces für Abfragen. Apache Zeppelin ist ein Mehrzweck-Notebook, das die interaktive Datenanalyse ermöglicht. Es setzt verschiedene Interpreter ein, welche mit Datenquellen und Systemen interagieren. Phoenix ist ein SQL-Layer, der es ermöglicht, HBase Tabellen mit SQL-Queries abzufragen und die Funktionalität von HBase erweitert. Es wandelt SQL-Statements in HBase-Abfragen um und gibt sie in Form von JDBC-Resultsets zurück.
Auch unterscheiden sich die von den Distributionen unterstützten Tool-Versionen. Während HDP mit den aktuelleren Versionen von Hadoop, Hive, Spark, Oozie und Solr arbeitet, bietet CDH mehr Aktualität bezüglich der Tools HBase sowie Kafka. Beide Distributionen bieten also Teile, die in der jeweils anderen nicht enthalten sind. Hierin liegt eine wichtige Wettbewerbsdifferenzierung beider Distributionen. In der untenstehenden Tabelle sind die von CDH und HDP unterstützten Tool-Versionen im Vergleich mit anderen Distributionen abgebildet.
Amazon EMR 5.11 | Cloudera CDH 5.13 | Hortonworks HDP 2.6.2 | MapR MEP 3.0.1 | ||
Apache HDFS | 2.7.3 | 2.6.0 | 2.8.1 | 2.7.3 | API |
Apache Mapreduce | 2.7.3 | 2.6.0 | 2.8.1 | 2.7.3 | 2.7.0+ |
Apache YARN | 2.7.3 | 2.6.0 | 2.8.1 | 2.7.3 | 2.7.0+ |
Apache Hive | 2.3.2 | 1.2 | 2.1.1 | 2.1.0 | 2.1.1 |
Apache Pig | 0.17 | 0.12.0 | 0.16.0 | 0.16.0 | 0.16 |
Apache Spark | 2.2.1 | 2.2 | 2.2.0 | 2.1.1 | 2.1.0 |
Apache Avro | - | 1.7.6 | 1.8.2 | 1.7.5 | 1.7.4 |
Apache Flume | - | 1.7.0 | 1.7.0 | 1.5.2 | 1.7 |
Apache HBase | 1.3.1+S3 | 1.2 | 1.3.1 | 1.1.2 | 1.1.8 |
Apache Kafka | - | 0.11 | 0.11.0.1 | 0.10.1.2 | 0.9 (Streams) |
Apache Oozie | 4.3.0 | 4.1.0 | 4.3.0 | 4.2.0 | 4.3.0 |
Apache Parquet | - | 1.51 | 1.9.0 | 1.8.1 | 1.8.1 |
Apache Sqoop | 1.4.6 | 1.4.8 | 1.99.4 | 1.4.6 | 1.4.6 |
Apache Zookeeper | 3.4.10 | 3.4.5 | 3.4.6 | 3.4.6 | 3.4.5 |
Hue | 4.0.1 | 4.00 | 3.11.0 | 2.6.1 | 3.12 |
CDH stellt mit dem Cloudera Manager und der Hadoop-User-Experience (HUE) eine sehr gute grafische Benutzeroberfläche bereit, wohingegen die grafische Oberfläche Ambari, welche von HDP angeboten wird, eine etwas weniger intuitive User-Experience bietet. Der Cloudera Manager unterstützt High-Availability-Features und ermöglicht das Management von Multiclustern. Beides ist in Ambari bisher nicht möglich. Zudem ist es im Cloudera Manager einfacher, benutzerdefinierte Diagramme zu erstellen und eigene Metriken für das Monitoring zu erstellen. Um diese Metriken zu erstellen, hat der Cloudera Manager eine SQL-Ähnliche Abfragesprache für die gespeicherten Kennzahlen. Weitere Vorteile vom Cloudera Manager sind die einfache Unterscheidung und Konfiguration von dynamic und static Resource Pools, eine Suchfunktion für das gesamte Userinterface, sowie eine striktere Trennung zwischen User- und Adminbereichen. Ambari hat keine Suchfunktion und die statischen Ressourcen können nur über Umwege gefunden werden. Ein Vorteil von Ambari hingegen ist die Configuration History, mit welcher verschiedene Versionen verglichen und die aktuelle Version gegebenenfalls zurückgesetzt werden kann. Diese Funktionalität wird im Cloudera Manager lediglich in der Enterprise Version angeboten. Allgemein kann man sagen, dass der Cloudera Manager zwar detaillierter und besser strukturiert ist als Ambari, aber dass ein Großteil der Funktionalitäten sowohl vom Cloudera Manager als auch von Ambari unterstützt werden.
In beiden Distributionen besteht die Möglichkeit, Cluster nur mit benötigten Komponenten zusammenzubauen. In HDP werden dafür allerdings zusätzliche Installationen und Konfigurationen benötigt. In vielen Fällen bestehen bei Hortonworks größere Abhängigkeiten zwischen den einzelnen Komponenten, da Hortonworks mit Ambari Stacks arbeitet, welches die Komponenten aus einem Package Repository installiert. Bei Cloudera hingegen werden die einzelnen Komponenten durch Parcels stärker gekapselt. Parcels sind ein alternatives Binärdistributionsformat. Sie können nebeneinander installiert und von beliebigen Orten ausgeführt werden. Dabei ist jedes Parcel ein selbstständiger Container. Sie sind daher eigenständiger und leichter austauschbar.
HDP bietet standardmäßig Backup und Disaster Recovery an, während dieses Feature in Cloudera nur in der Enterprise Version verfügbar ist. Der Cloudera Navigator der Enterprise Version unterstützt zusätzlich Funktionen bezüglich Metadaten sowie Auditing. Das Auditing wird bei HDP von Apache Ranger und das Metadatenmanagement von Apache Atlas übernommen, was jedoch nicht so ausgereift ist wie der Cloudera Navigator.
Um SQL-Abfragen zu beschleunigen, unterstützt CDH das Tool Impala als Abfragewerkzeug für Daten aus dem Hadoop-Dateisystem. Impala ist eine eigenständige SQL-Engine, die nicht auf MapReduce basiert. HDP hingegen arbeitet mit der Engine TEZ und neuerdings auch LLAP, was deutlich performanter ist als eine MapReduce Ausführung und im Falle von LLAP sogar einen verteilten Cache bietet, in dem In-Memory-Abfragen ausgeführt werden können. Allerdings reicht TEZ (ohne LLAP) in den meisten Fällen nicht an die Performance von Impala heran. Das Sicherheitsmanagement der Distribution wird in CDH über Apache Sentry geführt, während HDP mit dem Tool Apache Ranger arbeitet. Beide Tools unterstützen detaillierte Zugangskontrollen auf Hadoop Clustern, wobei Ranger Plugins für mehr Tools als Sentry bietet und besser erweiterbar ist. Außerdem gibt es die Möglichkeit, dynamische Policies auf Basis der Metadaten einzurichten. Beispielsweise wäre es umsetzbar, dass alle User der Gruppe Analysts von Spalten, welche mit dem Tag „Credit Card“ versehen sind, nur die letzten vier Ziffern sehen. Außerdem veröffentlich Hortonworks im Vergleich zu Cloudera regelmäßiger neue Versionen seiner Hadoop Distribution.
Kriterium | Cloudera’s Distribution Including Apache Hadoop (CDH) | Hortonworks Data Platform (HDP) |
Funktionalitäten in Open-Source Version | Einige nützliche Funktionalitäten sind ohne Extralizenz nicht verfügbar | Alle Funktionalitäten sind von vornherein ohne Extralizenz vorhanden |
Hadoop Kernwerkzeuge | HDFS, YARN, MapReduce, Spark, Hive, Impala | HDFS, YARN, MapReduce, Spark, Hive |
Support | Kostenpflichtig | Kostenpflichtig |
Grafische Benutzeroberfläche | Cloudera Manager und HUE bieten sehr gute und intuitive User-Experience | Ambari bietet weniger intuitive User-Experience |
Abhängigkeit zwischen Komponenten | Stärkere Kapselung einzelner Komponenten durch Parcels | Stärkere Abhängigkeit von Komponenten durch Ambari Stacks |
Metadatenmanagement | Cloudera Navigator | Apache Atlas (weniger ausgereift als Cloudera Navigator) |
Auditing | Cloudera Navigator | Apache Ranger |
SQL-Abfragen | Impala (eigenständige SQL-Engine, die nicht auf MapReduce basiert) | Engine TEZ und LLAP (optimiert MapReduce, schlechtere Performance als Impala) |
Sicherheitsmanagement | Apache Sentry | Apache Ranger (unerstützt mehr Plugins und ist besser erweiterbar) |
Veröffentlichen neuer Versionen | Seltener, dafür größere Änderungen | Regelmäßig |
Zusammenfassend lässt sich sagen, dass es nicht möglich ist, ein Pauschalurteil darüber zu fällen, welche der beiden vorgestellten Distributionen die bessere Wahl für ein Unternehmen ist. Beide Distributionen bieten unterschiedliche Stärken und Schwächen. Sie können beide sehr gut abgesichert werden, wobei sich der Konfigurationsaufwand hierbei unterscheidet. HDP ist in den meisten Fällen günstiger als die Cloudera Distribution bietet von vornherein alle Funktionalitäten ohne Extralizenz an. Bei den Kostenersparnissen muss man jedoch berücksichtigen, dass die Distribution im Allgemeinen häufig mehr Konfigurationsaufwand erfordert als die CDH. CDH hingegen kann unter anderem mit SQL-Engine Impala punkten, welche SQL-Abfragen deutlich beschleunigt. Man sollte sich deshalb vor der Entscheidung für eine der beiden Distributionen fragen, welche der Distributionen für die Anforderungen des Unternehmens am besten geeignet ist und sich gut in die bestehende Umgebung integrieren lässt. Abschließend bleibt zu überlegen, ob die Distribution alle Hadoop Pakete und den benötigten Support bereitstellt. Bezieht man all diese Überlegungen in seine Entscheidung mit ein, so sollte man mit der gewählten Distribution ein zufriedenstellendes Ergebnis erreichen können.