HBase and Phoenix on Azure: adventures in abstraction

One of my favourite essays by Joel Spolsky (he of Stack Overflow fame) is “The law of leaky abstractions”. In it he describes how the prevalence of layers of abstraction – be it coding languages or libraries or frameworks – have helped us accelerate our productivity. We don’t have to talk directly to a database engine because we can let our SQL do that for us; we don’t have to implement map reduce jobs in java anymore because we can use Hive; we don’t have to… well, you get the idea. Weiterlesen

Cloud Wars: Computation [Teil 3]

Um aus gesammelten Daten nützliche Informationen und einen Mehrwert zu gewinnen, ist in der Regel eine Aufbereitung notwendig. Die Methoden zur Verarbeitung lassen sich in Realtime und Batch Processing unterteilen. Erstere beziehen sich nur auf einen sehr aktuellen Ausschnitt der Daten und wurden bereits im Teil Collection and Storage bei den Streaming-Diensten vorgestellt. Die Batch-Verarbeitung bezieht meist einen größeren Datenausschnitt mit ein, also auch historische Daten, um neue Erkenntnisse oder Analysemodelle zu erhalten. Zur Verarbeitung großer Datenmengen stellen die Cloud Provider meist Tools aus dem Hadoop Big Data Ecosystem zur Verfügung. Weiterlesen

Storm in a Teacup

I wanted to call this blog article something like „Storm in a Nutshell“ but decided against it as

  1. there is probably a book by that name out there somewhere, and I wanted to avoid any unannounced visits in the dead of night from shady-looking types from the copyright police, and
  2. I really wanted to use a corny pun.

So think of a teacup as conceptually similar to a nutshell, but bigger.

On a recent project, we used Apache Storm as the real-time component of a complex, cloud-based environment used for fraud detection. In this article I would like to offer an introductory overview of storm, showing how to define a simple spout and bolt, as well as highlighting some of the issues that are important when building storm topologies. Weiterlesen

Cloud Wars: Collection und Storage [Teil 2]

Typischerweise steht zu Beginn eines klassischen Analytics-Anwendungsfalles die Datenerfassung. Im Zuge der steigenden Bedeutung der Analyse bei Web-Anwendungen und mobilen Geräten, aber auch anderer Softwareanwendungen und Diensten, werden kontinuierlich große Mengen an Daten generiert. Im Gegensatz zu statischen Datensätzen, die periodisch im Batch verarbeitet werden, besteht in diesem Bereich oft die Anforderung, den Datenstrom kontinuierlich zu erfassen und zu analysieren. Im Folgenden möchten wir die Streaming-Dienste in die sogenannten Publish-Subscribe-Message-Systeme (oder Message Broker) und die eigentliche Stream-Verarbeitung unterteilen. Weiterlesen

Getting started with Kibana [Links]

You have huge data sets to analyze? You want to gain insights into your gigabytes of logs? The Elastic Stack (Elasticsearch, Logstash, Beats, Kibana) offers you a great set of tools for that. After you got your logs or other data into Elasticsearch, Kibana will offer you a great UI to
deep dive into your data. But how to get started with Kibana? Weiterlesen

Drastic Elastic [Part 4]: Aggregations & Plugins

In an earlier post in this mini-series I mentioned that the aggregated data we persist in ELasticSearch has discrete retention times:

  • 5 minute aggregation => (retention time of) one day
  • hourly aggregations => 7 days
  • daily aggregations => 5 years

This means that we reach well over 50% of our total data retention after one week (the only additions after that point are daily aggregations while data at other aggregation levels gets refreshed/updated) – after 4 or 5 weeks we had something like 8 billion documents in ElasticSearch amounting to 13 TB of data.

In this last article of our four part series we describe how ElasticSearch plugins help us to address appropriate aggregation levels without having to build in extra round trips (adding to latency), or to fetch more data than we need (which would require filtering in the client). Weiterlesen

Cloud Wars: Microsoft Azure vs. Amazon Web Services vs. Google Cloud Platform [Teil 1]

Die großen Public Cloud Anbieter locken inzwischen mit vielversprechenden Platform-as-a-Service-Angeboten, um Daten jeglicher Art performant und kosteneffizient zu speichern und zu verarbeiten. Neben unterschiedlichen Datenbanken gibt es dazu Dienste für Batch- und Realtime-Processing. Anhand eines typischen IoT-Szenarios aus der Praxis wurden im Rahmen eines Research-Projekts einige der wichtigen data-driven-Services beleuchtet. Dazu gehen 3 Schwergewichte des Cloud Business ins Rennen: Microsoft Azure vs. Amazon Web Services vs. Google Cloud Platform. Weiterlesen

Drastic Elastic [Part 3]: Cluster Setup

ElasticSearch does not offer support for clusters spanning data centres. However, on our project we had access to a network latency of 400 *micro*seconds (0.4 ms) between three separate locations in the same city, and decided to test a cluster spanning all three data centres. Network latency did not prove to be a problem, but a more tricky issue was deciding how to set up the cluster to best guard against network partitioning. Weiterlesen