Architektura Lambda w systemach Big Data została w znakomity sposób przedstawiona w książce „Big Data” napisanej przez Nathan’a Marz i James’a Warren. W tym miejscu będę chciał jedynie streścić to czym tak naprawdę jest wspomniana architektura Lambda oraz z jakimi technologiami jest związana (nie tylko z tymi, które zostały opisane w książce).
Główny założeniem wspomnianej architektury jest takie budowanie systemów Big Data, by składały się z warstw spełniających określone zadania:
- warstwa przetwarzania wsadowego – przechowuje główny zbiór danych oraz przelicza dowolne widoki (tzw. obrazy wsadowe);
- warstwa obsługująca – zapewnia losowy dostęp do obrazów wsadowych;
- warstwa przetwarzania czasu rzeczywistego – kompensuje duże opóźnienia aktualizacji dla warstwy obsługującej poprzez szybkie algorytmy przyrostowe.
Założenia teoretyczne a rozwiązania praktyczne
W celu zbudowania każdej z warstw istnieje szereg narzędzi mniej lub bardziej dostosowanych do założeń teoretycznych przedstawionych w książce. W poniższej tabeli w jednym miejscu przedstawiono jakie technologie można wykorzystać do budowy systemu wg architektury Lambda:
modelowanie danych | Apache Thrift |
przechowywanie danych w warstwie przetwarzania wsadowego | Hadoop Distributed File System
biblioteka Pail |
warstwa przetwarzania wsadowego | JCascalog
Hadoop Map-Reduce |
warstwa obsługująca | ElephantDB |
obraz czasu rzeczywistego | Cassandra
HBase MongoDB |
wymiana komunikatów / kolejkowanie | Apache Kafka
RabbitMQ |
przetwarzanie strumieniowe | Apache Storm |
mikrowsadowe przetwarzanie strumieniowe | Trident (API mikrowsadowego przetwarzania Apache Storm) |