Simon Urbanek hat in der abschließenden Keynote der useR! Conference 2016 mit RCloud ein vielversprechendes Projekt vorgestellt, das neue Optionen für die Verwendung von R im Backend bietet.
Simon Urbanek: RCloud – Collaborative Environment for Visualization and Big Data Analytics
Die Daten und die Analysen werden in die Cloud verlegt, RCloud ist vollständig browserbasierend. Die User müssen R nicht lokal installiert haben. Dadurch wird das Paket- und Dependency-Management erheblich vereinfacht.
Die Motivation zur Entwicklung von RCloud lag für Urbanek, der in den AT&T Labs arbeitet, vor allem darin,
- die Reproduzierbarkeit zu erhöhen.
- den Austausch von Code und Ergebnissen zu erleichtern.
- die Zusammenarbeit von R Entwicklern und den Fachabteilungen zu erleichtern.
- die Skalierbarkeit der Analysen zu verbessern.
Das Frontend von RCloud basiert auf Notebooks, wie sie z.B. auch von Jupyter verwendet werden. Neben R können auch andere für den Data Science Stack wichtige Sprachen und Technologien in RCloud verwendet werden (Python, Hadoop, Spark, Cassandra, Markdown, JavaScript etc.). Die Integration von JavaScript und R ist besonders eng: JavaScript Funktionen können direkt in R ausgeführt werden. Umgekehrt können auch R-Funktionen aus JavaScript aufgerufen werden.
RCloud verwendet Git im Backend, alle Skripte und Analysen unterliegen einer Versionskontrolle. Analysen können per Deeplink geteilt werden. So wird die Kommunikation der Ergebnisse erleichtert.
Die Authentifizierung wird mit dem OCAP Model realisiert. Ein User authentifiziert sich einmalig bei der initialen Verbindung mit RCloud, bei der weiteren Arbeit werden die Authentifizierungsdaten weitergereicht. Es ist jedoch auch möglich Notebook Seiten zu publizieren, die keine Authentifizierung erfordern – zum Beispiel, wenn Analysen einer größeren Öffentlichkeit bereitgestellt werden sollen.
RCloud ist außerdem in der Lage Big Data zu verarbeiten, also Datenmengen, die größer als der Arbeitsspeicher sind. Dazu wird ein ChunkReader verwendet, der das Prinzip ¨compute and combine¨ umsetzt. Die Daten werden in Hadoop abgelegt, der Zugriff erfolgt intern mit Hilfe des HMR Pakets.
Grundlegende Algorithmen können bereits heute verteilt gerechnet werden (z.B. GLM). Es ist zu erwarten, dass die Anzahl der Algorithmen, die in der Lage sind verteilt zu rechnen, in naher Zukunft deutlich steigt. Das R Consortium verfolgt derzeit eine Initiative, die sich mit der Entwicklung einer standardisierten API für verteilte Algorithmen beschäftigt.
Hier entlang.