Skip to main content

Test: HDP 2.1 und Ambari 1.5.1

Listen:
Im Rahmen einiger Analysen stelle ich hier die verschiedenen Distributionen in einem recht einfachen Verfahren gegenüber. Es kommt mir hierbei vor allem auf die Einfachheit und Schnelligkeit der Installation eines Clusters an, auf technischen Differenzen und Besonderheiten gehe ich jeweils kurz ein.

Vorbereitungen
Als Basis dient ein frisches CentOS 6.5 in einem Oracle VirtualBox VM Container, 6GB Memory, 4 CPU und 100 GB HDD. Als Gastsystem kommt Windows zum Einsatz - einfach weil Windows üblicherweise auf Bürorechnern installiert ist.
Da Ambari erst vor 2 Wochen die Version 1.5.1 veröffentlicht hat, starte ich mit hiermit. Das Einspielen der entprechenden Pakete ist hinlänglich und ausführlich in der Dokumentation beschrieben. Nachdem der Ambari Server gestartet wurde ist ein problemloses Einloggen auf der Webkonsole per http://FQHN:8080 möglich.
Wichtig ist hierbei, das die zu installierenden Server per DNS lookup erreichbar sind. Im Falle der VM stellte dies ein geringfügiges Problem dar, da das Gastsystem erst den Namen per C:\Windows\System32\drivers\etc\hosts auflösen musste. Hierzu ist der Windows-eigene Editor mit Administratorrechten zu starten und die folgenden Änderungen einzutragen:
<IP-Adresse der VM>    hdp    hdp.alo

Installation
Nachdem dies erledigt ist, kann mit der Installation des Clusters begonnen werden. Hierbei fällt auf, das Ambari (und demzufolge HDP) nur FQHN (Full qualified host names) akzeptiert. Im Folgenden war die SSH Installation nicht funktionsfähig, der private key wurde schlicht nicht übertragen (keyfile=/var/run/ambari-server/bootstrap/5/sshKey passwordFile null), was zu einem unschönen Abbruch führte - ohne entsprechende Fehlermeldungen. Dies kann durch die manuelle Installation des ambari-client (siehe Dokumentation) workarounded werden. Ab nun lief die Installation recht einfach und ohne Komplikationen. Bevor Hive und Oozie installiert werden können muss eine entsprechende Datenbank (in diesem Fall MySQL) installiert und initialisiert werden (anlegen der Datenbanken und Berechtigungen der User). Hier wäre ein intuitives Interface wünschenswert. Nach etwa 25 Minuten war HDP installiert und Ambari meldete die Einsatzbereitschaft.


Das aufgeräumte Interface macht einen guten Eindruck, ebenso die erweiterte Verwaltung wie Jobmanagement, Heatmaps, Services und Admin waren sehr aufgeräumt. Persönlich gut gelöst fand ich die Integration von Ganglia und Nagios, hier ist die Anbindung des Clusters an eine bestehende Infrastruktur recht einfach.


Allerdings waren beim Tab "Hosts" keinerlei Metriken zu sehen, was auf fehlerhafte Nagios Implementation hindeutet. Auch bei HDFS und YARN zeigten die eingeblendeten Metriken gar keine Daten, was gerade bei einem frisch installierten Cluster eher Unsicherheiten erzeugt.




Leider wird Hue nicht per default installiert, sondern muss manuell nachinstalliert werden. Das ist unschön, aber auch einfach per yum install hue erledigt. Allerdings muss in  /etc/hue/conf/hue.ini die entsprechenden Einträge von localhost mit dem FQHN angepasst und in der HDFS Konfiguration die "Custom core-site.xml" editiert und die Properties hadoop.proxyuser.hue.group und hadoop.proxyuser.hue.hosts hinzugefügt und mit "*" belegt werden. Dasselbe muss mit der WebHcat Konfiguration per "Custom webhcat-site.xml" mit den Properties hadoop.proxyuser.webhcat.group und hadoop.proxyuser.webhcat.hosts
ebenfalls geschehen. Nach einem Speichern und anschließenden Restarten der Services HDFS, YARN, WebHCat und MapReduce2 und dem Restart des Hue-Servers ist dieser wie gewohnt einsatzbereit.
Allerdings bleibt der Job Reiter bei Jobs, die aus Hue abgesetzt wurden, leer.  Die reibungslose Integration ist hier leider nicht vorhanden.


Test Tez vs. MR

Um die unterschiedlichen Frameworks mittels Hue zu nutzen muss die entsprechende Engine unter Settings definiert werden. Neugierig bin ich vor allem auf die Finalen Ergebisse der Stinger Initiative und deren vektorbasierte Beschleunigung vor allem im Vergleich mit InMemory Tools wie Spark oder Impala. Hierzu benutze ich Tutorialdaten von Hortonworks, bereitgestellt bei Amazon S3. Der Wechsel zwischen MR und Tez klappt ohne Probleme, der versprochene Geschwindigkeitszuwachs ist ebenfalls merkbar.Um die Differenz genau zu messen, führe ich dieselben Abfragen per Hive CLI aus:

set hive.execution.engine=mr;

select a.buildingid, b.buildingmgr, max(a.targettemp-a.actualtemp)
from hvac a join building b
on a.buildingid = b.buildingid
group by a.buildingid, b.buildingmgr;


[...]
Time taken: 45.22 seconds, Fetched: 20 row(s)

Dasselbe mit Tez:
set hive.execution.engine=tez;

select a.buildingid, b.buildingmgr, max(a.targettemp-a.actualtemp)
from hvac a join building b
on a.buildingid = b.buildingid
group by a.buildingid, b.buildingmgr;


[...]
Time taken: 19.59 seconds, Fetched: 20 row(s)

Alles in allem eine Geschwindigkeitssteigerung von etwa 2,4 - was beeindruckend ist. Allerdings sehe ich von den oft proklamierten "100 times faster" hier nichts, was an dem Datenset liegen kann.

Zusammenfassung
Ambari ist Open Source, kann aber derzeit nur Hortonworks' Version von Apache Hadoop installieren und verwalten, was Ambari zu einem Verwaltungstool für HDP "only" macht. Dessen muss man sich klar sein. Alles in allem überzeugen die fehlenden Metriken und die fehlende Integration von Hue nicht - dagegen der Einsatz von Stinger vollstens. Hier merkt man den Geschwindigkeitsvorteil deutlich. Falcon scheint noch etwas wackelig zu sein, so werden Tez Jobs teilweise mit Laufzeiten von 35 Minuten angezeigt. Oder sie fehlen ganz - und es ist nicht ersichtlich ob diese von der CLI oder per HCat (Hue) abgesetzt wurden.
Grundsätzlich lässt sich ein HDP basierender Cluster recht einfach verwalten, nur das Verschieben von Services ist nicht möglich - was einen Cluster etwas unflexibel macht. Nicht getestet wurde LDAP und Kerberos Integration, Rolling Restarts und Namenode HA.

Edit 23.05.2014

Das Problem der fehlenden Graphs liegt am nicht automatisch gestarteten Apache Webserver - Nagios braucht diesen. Nach dem Start und einschalten des Systemstarts (chkconfig httpd on) waren alle Graphen verfügbar.

Comments

Popular posts from this blog

Deal with corrupted messages in Apache Kafka

Under some strange circumstances, it can happen that a message in a Kafka topic is corrupted. This often happens when using 3rd party frameworks with Kafka. In addition, Kafka < 0.9 does not have a lock on Log.read() at the consumer read level, but does have a lock on Log.write(). This can lead to a rare race condition as described in KAKFA-2477 [1]. A likely log entry looks like this: ERROR Error processing message, stopping consumer: (kafka.tools.ConsoleConsumer$) kafka.message.InvalidMessageException: Message is corrupt (stored crc = xxxxxxxxxx, computed crc = yyyyyyyyyy Kafka-Tools Kafka stores the offset of each consumer in Zookeeper. To read the offsets, Kafka provides handy tools [2]. But you can also use zkCli.sh, at least to display the consumer and the stored offsets. First we need to find the consumer for a topic (> Kafka 0.9): bin/kafka-consumer-groups.sh --zookeeper management01:2181 --describe --group test Prior to Kafka 0.9, the only way to get this inform

Hive query shows ERROR "too many counters"

A hive job face the odd " Too many counters:"  like Ended Job = job_xxxxxx with exception 'org.apache.hadoop.mapreduce.counters.LimitExceededException(Too many counters: 201 max=200)' FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MapRedTask Intercepting System.exit(1) These happens when operators are used in queries ( Hive Operators ). Hive creates 4 counters per operator, max upto 1000, plus a few additional counters like file read/write, partitions and tables. Hence the number of counter required is going to be dependent upon the query.  To avoid such exception, configure " mapreduce.job.counters.max " in mapreduce-site.xml to a value above 1000. Hive will fail when he is hitting the 1k counts, but other MR jobs not. A number around 1120 should be a good choice. Using " EXPLAIN EXTENDED " and " grep -ri operators | wc -l " print out the used numbers of operators. Use this value to tweak the MR s

AI's False Reality: Understanding Hallucination

Artificial Intelligence (AI) has leapfrogged to the poster child of technological innovation, on track to transform industries in a scale similar to the Industrial Revolution of the 1800s. But in this case, as cutting-edge technology, AI presents its own unique challenge, exploiting our human behavior of "love to trust", we as humans face a challenge: AI hallucinations. This phenomenon, where AI models generate outputs that are factually incorrect, misleading, or entirely fabricated, raises complex questions about the reliability and trust of AI models and larger systems. The tendency for AI to hallucinate comes from several interrelated factors. Overfitting – a condition where models become overly specialized to their training data – can lead to confident but wildly inaccurate responses when presented with novel scenarios (Guo et al., 2017). Moreover, biases embedded within datasets shape the models' understanding of the world; if these datasets are flawed or unreprese