Inhaltsverzeichnis:
Video: Understand R | Analytics using R in Hadoop | R for Data Science | Edureka 2024
Anfangs waren Big Data und R keine natürlichen Freunde. Die R-Programmierung erfordert, dass alle Objekte in den Hauptspeicher einer einzelnen Maschine geladen werden. Die Einschränkungen dieser Architektur werden schnell erkannt, wenn große Daten ein Teil der Gleichung werden.
Im Gegensatz dazu fehlen verteilten Dateisystemen wie Hadoop starke statistische Verfahren, aber sie sind ideal für die Skalierung komplexer Operationen und Aufgaben. Vertikale Skalierungslösungen - die Investitionen in kostspielige Supercomputing-Hardware erfordern - können oft nicht mit der Kosten-Nutzen-Rendite konkurrieren, die von verteilten Hardware-Hardware-Clustern angeboten wird.
Um den In-Memory-, Single-Machine-Einschränkungen der R-Sprache zu entsprechen, mussten Data Scientists die Analyse oft nur auf eine Untermenge der verfügbaren Beispieldaten beschränken. Vor der tieferen Integration mit Hadoop boten Programmiersprachen mit R-Programmierern eine Scale-Out-Strategie zur Überwindung der In-Memory-Herausforderungen, die von großen Datensätzen auf einzelnen Maschinen ausgehen.
Dies wurde mithilfe von Message-Passing-Systemen und Paging erreicht. Diese Technik ist in der Lage, die Arbeit über Datensätze zu erleichtern, die zu groß sind, um gleichzeitig im Hauptspeicher gespeichert zu werden. Der Low-Level-Programmieransatz stellt jedoch eine steile Lernkurve für diejenigen dar, die mit Parallele Programmierparadigmen nicht vertraut sind.
Alternative Ansätze zielen darauf ab, die statistischen Fähigkeiten von R in verteilten Hadoop-Clustern auf zwei Arten zu integrieren: Schnittstellen mit SQL-Abfragesprachen und Integration mit Hadoop-Streaming. Ziel ist es, vorhandene SQL-Data-Warehousing-Plattformen wie Hive und Pig zu nutzen. Diese Schemas vereinfachen die Hadoop-Jobprogrammierung mithilfe von SQL-Anweisungen, um eine übergeordnete Programmierung für die Ausführung statistischer Jobs über Hadoop-Daten bereitzustellen.
Für Programmierer, die MapReduce-Jobs in anderen Sprachen (einschließlich R) als Java programmieren möchten, besteht eine zweite Möglichkeit darin, die Streaming-API von Hadoop zu verwenden. Von Benutzern übergebene MapReduce-Jobs werden mit Hilfe von UNIX-Standard-Streams und Serialisierung Datenumwandlungen unterzogen, wodurch eine Java-kompatible Eingabe in Hadoop garantiert wird - unabhängig von der ursprünglich vom Programmierer eingegebenen Sprache.
Entwickler untersuchen weiterhin verschiedene Strategien, um die verteilten Berechnungsfunktionen von MapReduce und die nahezu unbegrenzte Speicherkapazität von HDFS auf eine Weise zu nutzen, die von R ausgenutzt werden kann.
Die Integration von Hadoop mit R wird fortgesetzt. (Big R als Teil von BigInsights) und Revolution Analytics (Revolution R Enterprise). Überbrückungslösungen, die High-Level-Programmierung und Abfragen von Sprachen mit Hadoop integrieren, wie RHive und RHadoop, sind ebenfalls verfügbar.
Grundsätzlich zielt jedes System darauf ab, die tiefgreifenden analytischen Fähigkeiten der R-Sprache zu viel größeren Datensätzen zu liefern.
RHive
Das RHive-Framework dient als Brücke zwischen der R-Sprache und Hive. RHive liefert die umfangreichen statistischen Bibliotheken und Algorithmen von R an Daten, die in Hadoop gespeichert sind, indem Hives SQL-ähnliche Abfragesprache (HiveQL) mit R-spezifischen Funktionen erweitert wird. Mithilfe der RHive-Funktionen können Sie HiveQL verwenden, um statistische R-Modelle auf Daten in Ihrem Hadoop-Cluster anzuwenden, die Sie mit Hive katalogisiert haben.
RHadoop
Ein weiteres Open-Source-Framework, das für R-Programmierer verfügbar ist, ist RHadoop, eine Sammlung von Paketen, die dazu beitragen sollen, die Verteilung und Analyse von Daten mit Hadoop zu verwalten. Drei Packages von note - rmr2, rhdfs und rhbase - bieten die meisten Funktionen von RHadoop:
-
rmr2: Das rmr2-Paket unterstützt die Übersetzung der R-Sprache in Hadoop-kompatible MapReduce-Jobs (mit effizientem MapReduce-Code auf niedriger Ebene) von höherem R-Code).
-
rhdfs: Das rhdfs-Paket bietet eine R-Sprach-API für die Dateiverwaltung über HDFS-Speicher. Mit rhdfs können Benutzer aus HDFS-Speichern in einen R-Datenrahmen (Matrix) lesen und Daten aus diesen R-Matrizen in ähnlicher Weise wieder in den HDFS-Speicher schreiben.
-
rhbase: rhbase-Pakete stellen auch eine R-Sprachen-API bereit, aber ihr Lebensziel ist es, mit der Datenbankverwaltung für HBase-Speicher statt mit HDFS-Dateien umzugehen.
Revolution R
Revolution R (von Revolution Analytics) ist ein kommerzielles R-Angebot mit Unterstützung für die R-Integration in verteilten Hadoop-Systemen. Revolution R verspricht verbesserte Leistung, Funktionalität und Benutzerfreundlichkeit für R auf Hadoop. Um eine tiefgreifende Analyse ähnlich wie bei R zu ermöglichen, verwendet Revolution R die ScaleR-Bibliothek des Unternehmens - eine Sammlung von statistischen Analysealgorithmen, die speziell für Big-Data-Sammlungen im Unternehmen entwickelt wurden.
ScaleR zielt darauf ab, eine schnelle Ausführung von R-Programmcode auf Hadoop-Clustern zu ermöglichen, wodurch sich der R-Entwickler ausschließlich auf seine statistischen Algorithmen und nicht auf MapReduce konzentrieren kann. Darüber hinaus werden zahlreiche analytische Aufgaben wie Datenaufbereitung, Visualisierung und statistische Tests bearbeitet.
IBM BigInsights Big R
Big R bietet eine End-to-End-Integration zwischen R und IBMs Hadoop-Angebot BigInsights, wodurch R-Entwickler Hadoop-Daten analysieren können. Das Ziel besteht darin, die Programmier-Syntax und Codierungsparadigmen von R auszunutzen, während sichergestellt wird, dass die Daten bei Aufenthalten in HDFS verarbeitet werden. R-Datentypen dienen als Proxys für diese Datenspeicher, was bedeutet, dass R-Entwickler nicht über Low-Level-MapReduce-Konstrukte oder über Hadoop-spezifische Skriptsprachen (wie Pig) nachdenken müssen.
BigInsights Big R-Technologie unterstützt mehrere Datenquellen - einschließlich Flatfiles, HBase und Hive-Speicherformate - und bietet gleichzeitig parallele und partitionierte Ausführung von R-Code im gesamten Hadoop-Cluster. Es verdeckt viele Komplexitäten in den zugrunde liegenden HDFS- und MapReduce-Frameworks und ermöglicht Big R-Funktionen die Durchführung umfassender Datenanalysen - sowohl für strukturierte als auch für unstrukturierte Daten.
Schließlich ermöglicht es die Skalierbarkeit der Big R-Statistik-Engine R-Entwicklern, sowohl vordefinierte statistische Techniken zu nutzen als auch neue Algorithmen selbst zu erstellen.