Skip to main content

BigData - eine Übersicht

Listen:
(Dieser Artikel ist auch als Slideshow verfügbar: http://www.slideshare.net/mapredit/big-data-mit-apache-hadoop)

Mehr und mehr drängt sich BigData als nebulöser Begriff in die Fachpresse. Klar ist, wer mithalten will im Business und innovativ zukünftige Projekte erfolgreich zum Abschluss führen will, kommt um das Thema nicht herum. Doch warum kommt man nicht darum herum? Was ist der Beweggrund für das Sammeln riesiger Datenmengen?

Der Weg dahin ist recht einfach und wird von vielen Unternehmen bereits seit Jahren betrieben, nur mit ungleich höherem Aufwand an Manpower und finanziellen Investments.

Ein Beispiel:
Es werden Logfiles durch riesige Datenfarmen zusammengeführt; wochenlange Jobs laufen über Terrabyte an den gewonnen und aufbereiteten Daten. Tritt in der Kette ein Fehler auf, beginnt der Lauf im Idealfall an der unterbrochenen Stelle - oder von vorn. Doch bis dahin muss eine lange Prozesskette eingehalten werden, um brauchbare Daten für eben diesen einen Job zu erhalten. Und exakt hier setzt Apache Hadoop an. Genau genommen reden wir bei BigData über Apache Hadoop.

Was ist BigData?
Spätestens, wenn strukturierte Daten in eine Datenbank geladen werden, fragt man sich, was mit dem Rest der Daten passieren soll? Dem Teil, der beim generieren der zu verarbeitenden Daten entsteht, kurz wohin mit dem anfallenden Datenmüll, oder besser - anfallenden unstrukturierten Datensätzen? Daten, um die es bei dem Buzzword BigData eigentlich geht.

Pro akkumuliertem Datensatz fallen Rohdaten an, statistisch im Verhältnis 1:9 (1 Byte strukturierte Daten zu 9 Byte unstrukturierte Daten). Da diese Mengen an Daten nicht nur unterschiedlichen Typs, sondern auch unformatiert und in ihrer Entstehung ebenso unqualifiziert sind, spricht man von BigData. Und genau diese Daten bringen den Vorteil für ein Unternehmen, den es benötigt, um in einem globalisierten Marktumfeld zu bestehen.

Apache Hadoop - das Framework für Daten

Apache Hadoop blickt auf eine etwa 10jährige Geschichte zurück. Ursächlich liegt die Wiege in der Suchengine Nutch, die 2003 die erste 100-Million-Page Demo online stellte. Der Initiator des Projektes, Doug Cutting, nahm sich des in 2005 von Google veröffentlichten Whitepapers “Google File System and Map Reduce” an und stellte Ende 2006 die erste lauffähige Hadoop-Version vor, die sehr schnell zum Apache Top Level-Projekt wurde und auf eine rege Entwicklergemeinde zurückgreifen kann. Einen Hauptteil der Entwicklung wurde und wird von Yahoo! - später Hourtonworks - und Cloudera beigesteuert. Apache Hadoop beruht auf der Apache-Lizenz und wird als OpenSource Software angeboten. Apache Hadoop ist eine Java-basierte Anwendung, die es dem Benutzer erlaubt, einfache Hardware zu Clustern zusammenzuschließen und die daraus resultierende Rechenleistung linear zu nutzen. Das bedeutet, pro angeschlossener Node stehen dem Cluster die gesamte freigegebene Rechenleistung und Platz der Node ohne Verluste zur Verfügung. Nimmt man einen Server mit 16GB RAM, 4 IDE 1TB Platten und Quad Core CPU, ergibt dies bei 10 Servern bereits eine stattliche Menge an Rechenleistung zu einem sehr moderaten Preis. Da Apache Hadoop auf Linux-Servern läuft, sind auch hier die Kosten durch eine standardisierte Verwaltung (Puppet als Beispiel) überschaubar.

Das Apache Hadoop Ecosystem

Die Hauptfunktionalität liegt in der MapReduce-Anwendung eines Clusters. Um diese Power bestmöglich auszunutzen, ist eine Kenntnis der Java-API und des Wesens von verteilten System fast unumgänglich. Aber nur fast.

Mittlerweile hat sich das Ecosystem rund um Apache Hadoop sehr gut etabliert, und fast monatlich werden neue Tools und Programme veröffentlicht. Die wichtigsten Anwendungen stellen wir in einer kurzen Übersicht vor:

HDFS

Das Hadoop Distributed File System (HDFS) stellt die Grundlage des gesamten Ecosystems dar. Vereinfacht dargestellt werden Daten in Blöcke unterteilt und auf Nodes mit einer frei konfigurierbaren Redundanz gespeichert. Im Normfall wird ein Replicaset mit 3 Kopien benutzt; demzufolge wird mit einfachen Mitteln eine sehr hohe, ITL-konforme Ausfallsicherheit erreicht (es können 66 % des Clusters ausfallen ohne Datenverlust zu erleiden). HDFS achtet hierbei auf entsprechende Latenz und Balancierung des Clusters.
Link: http://wiki.apache.org/hadoop/HDFS

MapReduce

Der MapReduce-Algorithmus erlaubt das Verteilen von Aufgaben in einem verteilten Umfeld. Hierzu wird eine Aufgabe in n Teilaufgaben zerlegt und an die einzelnen Nodes zur Abarbeitung gesandt. Nach Erledigung der Teilaufgaben wird der Datensatz zusammengeführt und ausgegeben. Auch hier ist eine extrem hohe Ausfallsicherheit vorhanden, da jede Node über einen Tasktracker verfügt, der seinen Status ständig mit der Namenode (dem zentralen Punkt eines Clusters) abgleicht.
Link: http://wiki.apache.org/hadoop/MapReduce

Hive

Hive ist eine SQL Abstraction Language mit einer eigenen, an SQL angelehnten DDL (Data Definition Language), basierend auf Primary Key Lookups. Hive ist für das Auswerten von Daten gedacht, dabei können die Daten in unterschiedlichen Formaten vorliegen (plain Text, compressed, binär). Hive ist entfernt mit einer Datenbank vergleichbar; es wird eine Meta-Information einer Tabelle und ihrer Spalten benötigt, der einzelne Felder der auszuwertenden Daten zugrunde liegen. Diese Felder müssen bestimmten Datentypen zugeordnet werden. Interessant ist Hive vor allem für Business Analysts, Statistiker und SQL Professionals, da eine sehr geringe Einarbeitungszeit benötigt wird. Hive arbeitet batchorientiert und ist je nach SLA-Definition auch für NRT - (near real time) Prozesse einsetzbar.
Link: https://cwiki.apache.org/confluence/display/Hive/Home

HBase

HBase ist ein Key Value Store zur Realtime-Verarbeitung von Daten. Der große Unterschied besteht vor allem in der Möglichkeit der Datenmanipulation, die bei Hive nicht direkt gegeben ist. HBase hat keine SQL-Syntax, sondern besteht auf definierten Schemas mit Regionen, in denen die Veränderungen abgelegt werden. Dabei sind diese Regionen untereinander beliebig verzweigbar. HBase ist vor allem für volatile Daten mit hohen Update-Raten und Realtime-Abfragen mit kürzester Latenz interessant. Es ist eine etwas höhere Einarbeitungszeit notwendig, vor allem, da man sich hier von bekannten, starren Datenbankschemas vollständig lösen muss.
Link: http://hbase.apache.org/book.html

Sqoop

Sqoop ist ein Connector zwischen Hadoop und RDBMS und wird von einer Reihe namhafter Datenbankhersteller unterstützt. Mittels Sqoop lässt sich mit einfachen Mitteln und ohne großen Aufwand Apache Hadoop als Middleware-Applikation in bestehende BI-Lösungen integrieren. Der Charme an Sqoop ist die Möglichkeit, Select Statements bereits in Datenbankabfragen oder bei der Rückspeicherung zu integrieren. Neben den Connectoren zu den bekannten RMDBS sind auch Connectoren zu Datenbanken wie TerraData, Netezza, Microstrategy, Quest und Tableau verfügbar. Letztes Beispiel der Wichtigkeit von Sqoop ist die Veröffentlichung des Microsoft SQL-Server-Treibers, der von Microsoft auf der PASS 2011 angekündigt und als Open Source freigegeben wurde.
Link: http://sqoop.apache.org/

Flume

Mit Flume ist es unkompliziert möglich, Daten aus unterschiedlichsten Quellen (Sources) in HDFS oder Files (Sinks) zu transportieren. Es steht eine Vielzahl von Quellen zur Verfügung, und es werden monatlich neue veröffentlicht. Kurz umschrieben ist Flume ein Logcollector, der in seiner neuesten Version (1.2.0) die Möglichkeit der Korrelation bereits im Transportchannel zulässt. Dabei ist es unerheblich, welche Art von Daten transportiert werden, und was die Quelle und das Ziel sind (sofern unterstützt). Die konsequente Nutzung der API ermöglicht es Entwicklern, eigene Sources und Sinks zu schreiben und einzubinden.
Link: http://flume.apache.org

Avro

Eine der größten Herausforderungen in einem Projekt ist die Serialisierung von Daten in ein binärkompatibles Format. Hier setzt Apache Avro an und bietet eine breite Palette an Schemata für alle erdenklichen Datentypen. Das Besondere hierbei ist die Erweiterung der Datenfiles bei lokaler Speicherung. Hier werden die konvertieren Daten nicht ersetzt, sondern um das Schema erweitert, sodass die Daten innerhalb einer Prozesskette oder später von anderen, nicht binärkompatiblen Programmen weiter verarbeitet werden können. Als eine Erweiterung hat RPC Einzug gehalten; damit ist es ohne große Umwege möglich, Daten zwischen den einzelnen Projekten während der RPC-Verbindung zu konvertieren. Ein mögliches Beispiel für die Anwendung sind Telekommunikationsanbieter, die verschiedenste Systeme zentralisieren müssen.
Link: http://avro.apache.org/docs/current/

Mahout

SML (scalable machine learning) darf in einem Ensemble der Massendatenverarbeitung nicht fehlen, dieses bietet Mahout mit seinen nahezu unbegrenzten Einsatzmöglichkeiten von Produktempfehlungen aufgrund von Interessengebieten und statistischen Algorithmen bis hin zu Fraud Detection, Wahrscheinlichkeitsanalysen oder Trendanalysen in Sozialen Netzwerken. Mahout bietet einen zentralen Algorithmus zum Clustern von Informationen weit über HDFS hinaus an. Durch die durchdachte und streng optimierte MR-Integration werden auch umfangreiche Datensätze innerhalb kürzester Zeit aufbereitet und so für den Endanwender nutzbar gemacht.
Link: https://cwiki.apache.org/MAHOUT/mahout-wiki.html

Oozie

Wie in jedem Prozess werden mehr als 90 % aller Aufgaben immer wieder zur gleichen Zeit mit denselben Aufgaben ablaufen. In einem so komplexen System wie Apache Hadoop würde hier sehr viel Zeit - und damit Innovation und letztendlich Geld - bei der Verwaltung der Aufgaben verloren gehen. Dies zu vermeiden ist Aufgabe des Workflow Orchestrators Oozie. Oozie managed Apache Hadoop Workflows und steuert in einem begrenzten Maß die Fehlerbehandlung wie Restart, Reload und Stop eines Prozesses. Oozie kann neben zeitgesteuerten Aktionen auch datengesteuerte Aktionen ausführen, etwa wenn Daten unregelmäßig verfügbar und nicht per zeitgesteuertem Batchprocessing verarbeitet werden können.
Link: http://incubator.apache.org/oozie/


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

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

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