From 906aa454cda308e53931890aae3375d3c50cf948 Mon Sep 17 00:00:00 2001
From: Danny Chen
Date: Thu, 11 Oct 2018 16:38:55 -0700
Subject: [PATCH] Add more diagrams and formatted documentation
---
README.md | 19 +++++++++++++++++--
docs/images/ForkOperator_ForkFunction.png | Bin 0 -> 248113 bytes
docs/images/High_Level_Architecture.png | Bin 0 -> 465403 bytes
docs/images/Metadata_Manager.png | Bin 0 -> 151651 bytes
4 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 docs/images/ForkOperator_ForkFunction.png
create mode 100644 docs/images/High_Level_Architecture.png
create mode 100644 docs/images/Metadata_Manager.png
diff --git a/README.md b/README.md
index ce75423..91025a1 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,8 @@ Marmaray is a generic Hadoop data ingestion and dispersal framework and library.
Marmaray describes a number of abstractions to support the ingestion of any source to any sink. They are described at a high-level below to help developers understand the architecture and design of the overall system.
This system has been canonically used to ingest data into a Hadoop data lake and disperse data from a data lake to online data stores usually with lower latency semantics. The framework was intentionally designed, however, to not be tightly coupled to just this particular use case and can move data from any source to any sink.
-**End to End Jobflow**
+
+**End-to-End Job Flow**
The figure below illustrates a high level flow of how Marmaray jobs are orchestrated, independent of the specific source or sink.
@@ -23,6 +24,14 @@ During this process, a configuration defining specific attributes for each sourc
The following sections give an overview of each of the major components that enable the job flow previously illustrated.
+**High-Level Architecture**
+
+The architecture diagram below illustrates the fundamental building blocks and abstractions in Marmaray that enable its overall job flow. These generic components facilitate the ability to add extensions to Marmaray, letting it support new sources and sinks.
+
+
+
+
+
**Avro Payload**
The central component of Marmaray’s architecture is what we call the AvroPayload, a wrapper around Avro’s GenericRecord binary encoding format which includes relevant metadata for our data processing needs.
@@ -40,7 +49,6 @@ This is illustrated in the figure below:
-
**Data Model**
The central component of our architecture is the introduction of the concept of what we termed the AvroPayload. AvroPayload acts as a wrapper around Avro’s GenericRecord binary encoding format along with relevant metadata for our data processing needs. One of the major benefits of Avro data (GenericRecord) is that once an Avro schema is registered with Spark, data is only sent during internode network transfers and disk writes which are then highly optimized. Using Avro data running on top of Spark’s architecture means we can also take advantage of Spark’s data compression and encryption features. These benefits factor heavily in helping our Spark jobs handle data at large scale more efficiently. Avro includes a schema to specify the structure of the data being encoded while also supporting schema evolution. For large data files, we take advantage that each record is encoded with the same schema and this schema only needs to be defined once in the file which reduces overhead. To support our any-source to any-sink architecture, we require that all ingestion sources define converters from their schema format to Avro and that all dispersal sinks define converters from the Avro Schema to the native sink data model (i.e ByteBuffers for Cassandra).
@@ -80,6 +88,9 @@ All Marmaray jobs need a persistent store, known as the metadata manager, to sto
When a job begins execution, an in memory copy of the current metadata is created and shared with the appropriate job components which will need to update the in-memory copy during job execution. If the job fails, this in memory copy will be discarded to ensure that the next run will start from the previously saved state of the last successful run. If the job succeeds the in-memory copy is now saved to the persistent store. As of now since the metadata manager has an in-memory copy there is a limitation on the amount of metadata a job can store
+
+
+
**Fork Operator**
@@ -89,6 +100,10 @@ The internal execution engine of Spark performs all operations in a manner of la
A provided ForkFunction is used by the ForkOperator to tag each datum with a valid or error annotation. These ForkOperators are called by our data converters during job execution. Users can now filter to get the desired collection of tagged records. These records are persisted in Spark to avoid having to re-read the raw input and re-apply the transformation when filtering. By default we currently use DISK_ONLY persistence to avoid memory overhead and pressure. These components are used in DataConverters to split input stream into 2 streams (output + error) but it can be used for splitting it into more than 2 streams with overlapping records if desired. For example, we could decide to split an input stream of integers (1 to 6) into an even number stream (2,4,6), odd number stream (1,3,5) and a multiple of 3 stream (3,6).
+
+
+
+
**JobDag**
The JobDag component orchestrates and performs the actual execution of the Job. It does the following:
diff --git a/docs/images/ForkOperator_ForkFunction.png b/docs/images/ForkOperator_ForkFunction.png
new file mode 100644
index 0000000000000000000000000000000000000000..f010cfdab490cf3608cc50056c275119c67e127f
GIT binary patch
literal 248113
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