Sonntag, 15. März 2015

Installieren eines R Paketes mit Hilfe eines eigenen TMP Verzeichnisses

In einigen Linux Installationen ist das TMP Verzeichnis nicht ausführbar. Dies ist eine Sicherheitsmassnahme.  Die Installation von R Paketen benutzt das TMP Verzeichnis als Anlage der zu installierenden Pakete. Einige Pakete werden auf dem Zielsystem kompiliert. Dazu wird configure ausgeführt, dies schlägt auf fehl auf diesen geschützten Systemen. Um das Problem zu umgehen, muss  das TMP Verzeichnis das R benutz explizit gesetzt werden. Danach kann das Paket installiert werden.

Sys.setenv(TMPDIR="/home/jenkins_slave")
install.packages("sqldf")

Montag, 2. Februar 2015

Wachsende Bedeutung von R

R ist im universitären Umfeld eine durchaus Gebräuche Sprache und Analyse Software. Der Hauptvorteil der Software liegt in ihrer günstigen Beschaffung, R ist GPL. Aktuell legt R im Tiobe Index stetig zu, zur Zeit erreicht es (01-2015) Platz 18. Dieser Trend wird sich weiter gehen, in den nächsten Jahren ist ein R, Abwahl es eine Spezialsprache für statistische Auswertungen ist, zulegen. Natürlich wird es nie die Verbreitung eine Generell Purpose Sprache wie Java oder C erreichen. Generell gibt aber den Trend der Diversifizierung der Programmiersprachen. Das heisst, es wird keine  übermächtige Programmiersprache geben, sondern ein guter Strauß an Programmiersprachen, die unterschiedliche Ding gut können, neben einer Handvoll Generell Purpose Sprachen. Siehe auch http://programming-2.blogspot.de/2015/01/code-weaving.html
Die Gründe für eine wachsende Bedeutung und Verbreitung von R ist der, das man Big Data heute beherrscht, dass diese Daten auch ausgewertet werden müssen. Jüngst hat Oracle bekannt gegeben, das R durch die Datenbank selbst ausgeführt wird und dies auch noch parallel. Bei Oracle heisst das dann gleich Oracle R Enterprise. Neuerdings ist auch Microsoft auf R Analyse Pfaden und kauft die Firma Revolution Analytics (Link).
Splunk als Platzhirsch bei den kommerziellen Big Data Lösungen bietet etwas ähnliches, sehr einfallsreich R Projekt heisst. Sprung scheint aber noch im Bereich R noch nicht das Niveau von Oracle erreicht zu haben.
Im Open Source Bereich gibt es nichts entsprechendes. Natürlich kann man OS Bereich alles selber bauen. Optimal wäre wenn die Daten nicht zwischen Server transferiert werden müssten und man auch alle Prozessoren und Hauptspeicher der Server nutzen könnte. D.h. optimal wäre eine Integration von R in Elastik Search selbst.
Um das Bild weiter abzurunden, noch der Hinweis auf einen Analyse Software Stack, AMPLab der UC Berkley.

Sonntag, 1. Februar 2015

Splunk Alternativen

Wenn es heute um professionelle Big Data Lösungen oder Log File Analysen geht, dann ist die häufigste Antwort Splunk. Sprung ist wirklich eine gute Softwarelösung, skaliert gut und lässt sich sogar auf dem Laptop installieren. Für viele Anwender sind die Lizenzkosten der Hauptnachteil von Splunk. Deshalb schauen sich viel Unternehmen nach FOSS (Free and Open Source Software) Alternativen um. Je nach Anwendungsfall bieten sich zwei ähnliche Verfolger an, Elastic Search mit Kibana oder Graylog2. Graylog2 ist eine Java-Anwendung, Kibana ist JavaScript. Beide sind ein Elastic Search Frontend, Graylog2 geht aber noch darüber hinaus und bietet weitere Management-Funktionen bzw. ein Monitoring an.

Im Alltag sind sowohl Kibana als auch Graylog2 gut einsetzbar, man merkt ihnen aber noch deutlich ihr junges Alter an. Es gibt immer Dinge die fehlen. Keines der beiden Systeme kommt an den Funktionsumfang, die Benutzbarkeit oder die Robustheit von Splunk heran. Man muss klar sagen,  das Splunk zur Zeit mehrere Jahre Technologievorsprung hat gegenüber den beiden Verfolgern Kabine und Graylog2. Um den Technologiestack im Analysebereich abzurunden, sollte man noch R oder ggf. Python hinzuziehen. Alle Systeme nehmen Anfragen via REST-API entgegen. Leider liefert Elastic Search (Kibana, Graylog2) nur Daten als JSON. JSON ist wie XML für schnelle Datenanalysen nicht optimal geeignet und muss umgewandelt werden z.B. CSV.

Man kann Big Data Lösungen natürlich auch mit einem ganz anderen Softwarestack umsetzen, z.B. mit konventionellen relationalen Datenbanken und oder Filesystemen.

Donnerstag, 29. Januar 2015

Vortrag auf der Konferenz Developer World 2015

Wer möchte kann mich auf der Developer World Konferenz (Link) am 17.4.2015 in Hannover erleben. Zusammen mit Uwe Beßle halte ich den Vortrag: Erfahrungsbericht: Testen von nichtfunktionalen Anforderungen im E-Commerce bei OTTO Hamburg
Das Testen funktionaler Anforderungen ist heute Standard in der Softwareentwicklung und wird gut durch Software unterstützt. Nichtfunktionale Anforderungen werden dagegen derzeit oft nicht ausreichend getestet. Am Beispiel von OTTO.de wird gezeigt, wie verschiedene nichtfunktionale Anforderungen, wie Performance, Lastverhalten sowie Robustheit systematisch als Qualitätskriterien getestet werden können. Es werden Vorgehen, Tests, Tools und Integration in den Entwicklungsprozess beschrieben.

Link zum Konferenzprogramm.

Dienstag, 13. Januar 2015

Code Weaving

Wie immer verursacht der Tiobe-Index immer eine heftige Diskussion unter Softwareentwicklern über die Sinnhaftigkeit des Index und die Erstellung eben dieses Index. Warum ist meine Lieblingssprache nur so weit unten. Das kann doch nicht sein. Wie wird dieser Index eigentlich erstellet.

2014: JavaScript wurde zur Sprache des Jahres. Keine wirkliche Überraschung, bei dem was sich hier in den letzten Jahren getan hat, Unit-Tests, Paketmanager, bessere Libs, hübsche Visualisierungen. JavaScript ist überall mit dabei. Verlierer des Rankings ist sicher Groovy, das es nicht mal in die Top 50 geschafft hat.

Neben diesem Ranking entspann sich die Frage, warum die Softwareentwickler nicht die für das Problem am besten geeignete Sprache einsetzen und die gesamt Applikation zusammenweben aus den Codestücke der verschiednen Programmiersprachen. Das entspricht dann einer Best-of-Beed-Strategie. Der Vorteil, man hat immer das optimale Tool bzw. Programmiersprache um ein Teilproblem zu lösen. Hier ein Beispiel, man steuert eine Servierfarm via Python macht REST Calls mit CURL, verarbeitet numerische Daten mit R. Das alles wird dann zusammen gewoben mit BASH, Ant oder dem Jenkins. Zusätzlich erhält man so eine einfache und sehr gut testbare, modularisierte Software. Aber der Nachteil, es bedarf sehr viel Know-Hows um diese Software zu warten.

Code Weaving ist damit sehr gut für die effiziente Erstellung von Prototypen oder PoC (Proof of Concept) geeignet. Es ist danach sehr einfach für normale Softwareentwickler diesen Code in eine Zielsprache wie Java zu übertragen. Nebenbei können die Daten aus dem PoC als Testdaten für Unit- und Integrationstest genutzt werden. Die scheinbar doppelte Arbeit rentiert sich sehr schnell, weil die Entwicklung des Zielsystems wesentlich schneller und in höherer Qualität möglich ist.

Mittwoch, 7. Januar 2015

Heisseste IT Thema 2014

Das heisseste IT Thema 2014 war hier im Blog: Elastic Search. Dies ist nicht allzu erstaunlich, bei der geringen Menge an Beiträgen, aber es zeigt auch klar, dass Elastic Search, die Alternativen und Big Data in die breite IT Masse einsickern und in den nächsten Jahren zu einem Standardthema werden.