anchor.diff:           |
            V
   +------------------+
  +|  @BeforeGroup    |
  +|     methods      |
  ++------------------+
  +         |
  +         V
  ++------------------+
   |   Perform task   |
   |   described in   |
   |     pipeline     |
  ++------------------+
  +         |
  +         V
  ++------------------+
  +|   @AfterGroup    |
  +|     methods      |
   +------------------+
            |
            V
  
positive.code:                              |
                               V
                  +---------------------------+
                  |       Driver node         |
                  |    (Cluster manager)      |
                  |---------------------------|
                  |     Partition plan        |
                  |     computation(2)        |
  
negative.code: 
  
  1. Created task consists of Jar file, containing class, which describes pipeline(flow) which should be processed in cluster.
  2. During partition plan computation step pipeline is analyzed and split into stages. Cluster Manager node instantiates mappers/processors
  gets estimated data size using mappers, splits created mappers according to the estimated data size. All instances are serialized and
  sent to Worker nodes afterwards.
  3. Serialized instances are received and deserialized, methods annotated with @PostConstruct annotation are called. After that,
  pipeline execution is started. Processor's @BeforeGroup annotated method is called before processing first element in chunk.
  After processing number of records estimated as chunk size, Processor's @AfterGroup annotated method called. Chunk size is calculated
  depending on environment the pipeline is processed by. After pipeline is processed, methods annotated with @PreDestroy annotation are called.
  ....
  
  [ditaa, driver-processing-workflow, png]
  