Frage

Ich möchte einen kontinuierlichen Strom von Daten analysieren (Zugriff über HTTP) einen MapReduce-Ansatz, also habe ich in Apache Hadoop gesucht. Leider scheint es, dass Hadoop einen Job mit einer Eingabedatei mit fester Größe zu beginnen erwartet, anstatt in der Lage zu sein, neue Daten zu den Verbrauchern zu übergeben, wie es kommt. Ist dies tatsächlich der Fall ist, oder bin ich etwas fehlt? Gibt es ein anderes MapReduce-Tool, das Datum mit eingelesen in von einer offenen Buchse funktioniert? Skalierbarkeit ist ein Problem hier, also ich würde es vorziehen, die MapReducer behandelt die chaotische Parallelisierung Sachen zu lassen.

Ich habe mit rumgespielt Cascading und konnte einen Job auf einem laufen statische Datei über HTTP zugegriffen wird, aber das ist mein Problem nicht wirklich lösen. Ich konnte curl als Zwischenschritt, um die Daten irgendwo auf einem Hadoop-Dateisystem zu speichern und eine Watchdog schreibe einen neuen Job zu feuern jedes Mal ein neues Stück von Daten bereit ist, aber das ist ein schmutziger Hack; es hat einige elegantere Weg, dies zu tun. Irgendwelche Ideen?

War es hilfreich?

Lösung

Die Hack Sie beschreiben, ist mehr oder weniger der normale Weg, Dinge zu tun - Hadoop ist grundsätzlich ein chargenorientierte System (für eine Sache, wenn es kein Ende der Daten ist, können Reduzierungen nicht immer starten, da sie muss beginnen, nachdem die Karte Phase beendet ist).

Drehen Sie Ihre Protokolle; wie Sie sie heraus drehen, werfen sie in HDFS. Haben Sie einen Watchdog-Prozess (möglicherweise ein eine verteilte, koordiniert mit ZooKeeper) die Mülldeponien überwachen und neue Verarbeitungsaufträge starten. Sie sicherstellen möchten, dass die Jobs laufen auf Eingaben groß genug, um den Aufwand zu rechtfertigen.

Hbase ist ein BigTable Klon im Hadoop-Ökosystem, das für Sie interessant sein kann, wie es für einen kontinuierlichen Strom von Einsätzen ermöglicht; Sie werden immer noch analytische Abfragen im Batch-Modus ausführen Sie müssen aber nicht.

Andere Tipps

Was http://s4.io/ . Es ist aus für Streaming-Daten verarbeitet werden.

Update

Ein neues Produkt steigt: Sturm - Verteilte und fehlertolerante Echtzeit-Berechnung: Stream-Verarbeitung, kontinuierliche Berechnung, verteilt RPC und mehr

Ich glaube, Sie sollten einen Blick über Esper CEP nehmen ( http://esper.codehaus.org/).

Yahoo S4 http://s4.io/

Es bietet Echtzeit-Stream-Computing, wie Karte reduziert

Twitter Sturm ist, was Sie benötigen, können Sie einen Versuch haben!

Mehr Optionen hier. Ich schlage vor, die Kombination von Kafka und Sturm + (Hadoop oder NoSQL) als Lösung. Wir bereits bauen unsere große Datenplattform, diese Open-Source-Tools, und es funktioniert sehr gut.

Ihr Anwendungsfall für das Problem ähnlich klingt einen Web-Crawler mit Hadoop des Schreibens -. Die Datenströme zurück (langsam) von Steckdosen entfernte Seiten über HTTP holen geöffnet

Wenn ja, dann finden Sie unter prüfen wollen, FetcherBuffer Klasse in Bixo, die mit einem Gewindeansatz in einem Druckminderer implementiert (über Cascading) diese Art von Problem zu lösen.

Wie Sie die wichtigsten Probleme mit Hadoop für den Einsatz im Strom Bergbau kennen, sind die Tatsache, dass erster, verwendet es HFDS, die eine Platte und einen Platten sind Operationen Latenz bringen, die in fehlenden Daten im Strom führen. Zweitens ist, dass die Pipeline nicht parallel ist. Map-reduce arbeitet im Allgemeinen auf Chargen von Daten und nicht-Instanzen, wie es mit Stream-Daten ist.

In-Memory-Berechnungen in Objekten Datenbank

Vor kurzem las ich einen Artikel über M3, die offenbar die erste Ausgabe befasst sich unter Umgehung HDFS und durchzuführen. Und für die zweite Ausgabe, die sie verwenden inkrementelle Lernende, die nicht mehr in der Batch ausgeführt. Es lohnt sich heraus M3 : Stream-Verarbeitung auf Main-Speicher MapReduce . Ich konnte nicht den Quellcode oder API finden dies überall M3, wenn jemand fand es bitte hier den Link teilen.

Auch Hadoop Online ist auch ein weiterer Prototyp, der die gleichen Probleme zu lösen versucht sich als M3 tut: Hadoop Online

Allerdings Apache Sturm die zentrale Lösung für das Problem ist, aber es ist nicht genug. Sie müssen einige euqivalent von Karten reduzieren Recht, hier ist, warum Sie eine Bibliothek namens müssen SAMOA die eigentlich große Algorithmen hat die für Online-Lernen Mahout irgendwie fehlt.

Mehrere reifen Stream Processing Frameworks und Produkte sind auf dem Markt erhältlich. Open-Source-Frameworks sind z.B. Apache Storm oder Apache Spark (die beide auf der Oberseite der Hadoop laufen kann). Sie können auch Produkte wie IBM InfoSphere Streams oder TIBCO Streambase.

Werfen Sie einen Blick auf diesem InfoQ Artikel, die Stream-Verarbeitung und all diese Frameworks und Produkte im Detail erklärt: Real Time Stream Processing / Streaming Analytics in Kombination mit Hadoop . Neben dem Artikel erklärt auch, wie dies zu Hadoop komplementär ist.

Übrigens:. Viele Software-Anbieter wie Oracle oder TIBCO Aufruf dieser Stream Processing / Streaming Analytics „schnelle Daten“ anstelle von „Big Data“ -Ansatz, wie Sie in Echtzeit zu handeln, anstatt Stapelverarbeitung

Sie sollten Apache Spark-Streaming versuchen. Es sollte gut für Ihre Zwecke arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top