Sorry for the delay in posting this, things have been busy the last few weeks.

So far we've covered a high-level overview on Hadoop and Storm. Today I want to talk a little bit about Akka, an actor system written in Scala. Note that while I have professional experience building a fairly large system with both Hadoop and Storm, my work with Akka has been much more limited and done on personal time.

Akka is a lower level framework than either Storm or Hadoop. Actor systems provide a relatively straightforward abstraction over the complexities of threading. This abstraction allows a great deal of flexibility in how you approach the design of a system, but also does not mask many of the details which are hidden by Storm or Hadoop.

Actors are the combination of some behavior and a message queue. Messages are processed, one at a time, from the queue, which avoids the behavior concerning itself with low level parallelism details like threads and locking. Actor's behavior can send messages to be added to other actors' queues, allowing for responses, and distribution of tasks. Actors behavior can replace the current behavior, allowing the actor to change its state based on a message.

An actor framework like Akka provides a very general mechanism for managing a massively parallel system, it allows the architecture of the system to be custom fitted to the application. With that flexibility comes the price of managing details which would otherwise be handled by Storm or Hadoop.

Next time we'll have a look at a newer, higher level framework also written in Scala: Apache Spark.

No comments :