24/7 Spark Streaming on YARN in Production

At a large client in the German food retailing industry, we have been running Spark Streaming on Apache Hadoop™ YARN in production for close to a year now. Overall, Spark Streaming has proved to be a flexible, robust and scalable streaming engine. However, one can tell that streaming itself has been retrofitted into Apache Spark™. Many of the default configurations are not suited for a 24/7 streaming application. The same applies to YARN, which was not primarily designed with long-running applications in mind. Weiterlesen

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

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