Abstract
Nachdem Ihr unsere „Big Data in a Box“-Lösung auf Schulungen und Usergroup-Treffen gesehen habt, haben wir immer wieder Anfragen zur Realisierung von Euch erhalten. Ihr wolltet wissen was wir dort gebaut haben und wie alles einzurichten ist. Daher haben wir beschlossen eine kleine Serie zu schreiben und Euch somit ein paar Tipps und Anregungen zum Basteln und Testen zu geben.
Das Ziel
Seit einiger Zeit beschäftigen wir uns mit diversen Big-Data-Technologien und haben eine Möglichkeit gesucht um bei Schulungen, Konferenzen oder zur Evaluierung von Methoden, Technologien und Tools ein schnelles Setup für eine Testumgebung zu generieren. Verschiedene Lösungen mit virtuellen Maschinen oder Docker Container fielen weg, da
- es zum einen je nach Schulungssituation nicht möglich ist ein Notebook in ein Firmennetz zu bekommen und somit die Teilnehmer keinen Zugriff erhalten würden
- je nach Szenario Seiteneffekte hinsichtlich der Aussagefähigkeit der erhobenen KPIs nicht vergleichbar wäre
- echte Hardware anschaulicher macht welche z.B. Fail-Over-Szenarien gerade simuliert werden
Wir haben uns somit entschlossen das Projekt „Big Data in a Box“ zu starten und eine Lösung zu entwerfen, die alle oben genannten Anforderungen abdeckt und eine Basis für verschiedene Technologiestacks bietet.
Die Hardware
Bei der Auswahl der zu verwendenden Hardwareplattform wollten wir ein besonderes Augenmerk darauf legen, dass sie transportabel und robust ist. Zuerst zogen wir den Raspberry Pi der britischen Raspberry Pi Foundation und den verwandten Banana Pi der chinesischen Bildungsinitiative Lemaker.org in Betracht. Allerdings überwogen hier die Bedenken zur Größe des verfügbaren Arbeitsspeichers. Nachfolgend noch ein technischer Vergleich der beiden Plattformen.
Raspberry Pi | Model B+ Banana Pi | |
SoC | Broadcom | BCM2835 Allwinner A20 |
CPU | ARM1176JZF-S (700 MHz bis 1000 MHz) | ARM Cortex-A7 Dual-Core (1000 MHz) |
GPU | Broadcom VideoCore IV | ARM Mali 400MP2 |
RAM | 512 MByte | 1 GByte DDR3 DRAM |
LAN | 10/100 MBit/s | 10/100/1000 MBit/s |
GPIO | 17 Pins | 26 Pins, I2C, SPI, UART, CAN bus |
USB | 4x USB 2.0 Host | 2x USB 2.0 Host, 1x USB OTG, 1x CSI Kamera |
Sonstiges | Onboard Micro und IR-Receiver | SATA 7-Pin-SATA-Port |
Größe | 85,6 mm x 56,0 mm | 92,0 mm x 60,0 mm |
Letztlich gaben der größere Arbeitsspeicher, die Dual-Core CPU und die Möglichkeit bei Bedarf eine SATA-Festplatte zu nutzen den Ausschlag. Es ist jedoch zu beachten, dass die beiden Hardwareplattformen, trotz ihrer optischen Ähnlichkeit, nicht vergleichbar sind. Die GPIO-Leiste ist etwas versetzt und daher für Extension-Boards des Rapsberry in den meisten Fällen unbrauchbar. Zudem ist der Banana Pi einige Millimeter größer und passt daher nicht in die Gehäuse des Raspberry. Wir haben uns daher vorerst zur Installation in einer „Pizzaschachtel“ entschieden.
Zum Vergleich der Rechenleistung haben wir zudem folgenden Test durchgeführt:
sysbench --test=cpu --num-threads=2 --cpu-max-prime=20000 run
Hierbei schnitt der Banana Pi mit einer Ausführdauer von 398 Sekunden deutlich besser ab als der Raspberry Pi der 1296 Sekunden benötigte.
Mittlerweile ist mit dem Raspberry Pi2 nun eine leistungsfähigere Version der Hardware der Raspberry Pi Foundation verfügbar. Ob unser Aufbau, z.B. von der dort verwendeten QuadCore-CPU profitieren könnte haben wir bislang noch nicht evaluieren können.
Aufbau und Installation
Nachfolgend unsere Stückliste:
- 6 * Banana Pi
- 6 * USB-WLAN Dongle
- 6 * 16 GB SD Karte (Class 10)
- 1 * WLAN Router
Als Basis für unsere Konfiguration dient das Betriebssystem Bananian
Nachdem das Image auf die SD-Karte kopiert wurde, melden wir uns mit root / pi an und durchlaufen die initiale Konfiguration mittels
bananian-config
... Video acceleration is currently disabled. Do you want to enable it? (y/n) --> n USB OTG is currently disabled. Do you want to enable it? (y/n) --> n Do you want to expand the root file system (recommended)? (y/n) --> y
Im Anschluss muss ein aktuelles Oracle Java JRE 7 installiert werden. Wichtig ist zu beachten, dass ein OpenJDK im weiteren Betrieb zu Problemen führen wird.
Die Installation von Cassandra erfolgt auf Basis der Tar-Archive.
cd /opt curl -L http://downloads.datastax.com/community/dsc.tar.gz | tar xz cd dsc-cassandra-2.1.x
Ihr findet folgende Verzeichnisse
Verzeichnis | Inhalt |
data | Daten, commitlog und saved_caches (kann in cassandra.yaml überschrieben werden) |
bin | Scripte zum starten und stoppen |
conf | Konfiguration und Umgebungseinstellungen |
interface | Thrift und Avro Client API |
javadoc | Cassandra Java API Dokumentation |
lib | JAR und Lizenzdateien |
tools | Cassandra tools and Beispielkonfigurationen (cassandra.yaml) für Stresstests. |
Schaut euch dort einmal in Ruhe um. In Teil 2 werde ich dann auf die Konfiguration eingehen.
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Dominique Ronde
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.