<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>PhD Workshop, September</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Building a Scalable Distributed Online Media Processing Environment</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Shadi A. Noghabi advised by: Roy H. Campbell</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Indranil Gupta</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>Media Processing, Distributed Storage, Online Processing</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Illinois at Urbana-Champaign</institution>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <volume>9</volume>
      <issue>2016</issue>
      <abstract>
        <p>Media has become dominant in all aspects of human lives, from critical applications such as medical, military, and security (e.g. surveillance cameras) to entertainment applications such as social media and media sharing websites. Billions of massive media objects (e.g., videos, photos, documents, etc.) are generated every second with high diversity among them (in terms of sizes and formats). These objects have to be stored and retrieved reliably, with low latency and in a scalable while e cient fashion. Additionally, various types of processing are done on media objects, from simple compressions and format conversion, to more complex machine learning algorithms detecting certain patterns and objects. Existing large-scale storage and processing systems face several challenges when handling media objects. My research focuses on building an uni ed storage and processing environment tailored speci cally for media objects, while maintaining high e ciency and scalability. I have built a scalable, load-balanced, e cient storage system optimized for media objects based on their unique access patterns. Currently, I am working on developing an e cient media processing system and integrating these two systems into one framework.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        During the past decade, media has become extremely
popular. Based on [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], hundreds of hours of videos (' hundreds
of GBs) are uploaded per minute in YouTube, the largest
Internet video database. These videos have to be processed,
reformatted, compressed, veri ed, and categorized, while
being uploaded. Moreover, hundreds of thousands of hours
of videos are viewed per minute, from all around the globe.
All these videos should be stored and retrieved reliably (with
no data loss or unavailability) from a distributed storage at
YouTube. This, is only one example of the need for
processing and storing large media objects. Many other examples
can be found in a wide range of applications from
medical imagery and surveillance cameras to social networks and
online shopping.
      </p>
      <p>Handling this massive amount of media poses a number
of unique challenges. First, a diverse range of media
(photos, videos, documents, etc.) with various sizes (from a few
KBs to a few GBs), should be processed e ciently at the
same time. Second, there is an ever-growing amount of data
that needs to be stored, served, and processed in a linearly
scalable fashion. Third, in many applications (e.g., machine
learning applications), processing is both data and CPU
intensive, causing several di culties in resource scheduling.
My research focuses on building an uni ed online
environment tailored speci cally for storing and processing these
diverse massive media objects, while maintaining e ciency
and scalability.</p>
      <p>
        First, we need to store this ever-growing enormous amount
of media e ciently. Existing distributed storage systems,
including le systems [
        <xref ref-type="bibr" rid="ref21 ref26">21, 26</xref>
        ] and key value stores [
        <xref ref-type="bibr" rid="ref12 ref16">12, 16</xref>
        ],
face several challenges when serving media objects. These
systems impose additional unnecessary overhead (such as
rich metadata), and are not e cient in handling both
massive GB objects and many small objects, at the same time.
Therefore, we need a scalable storage system tailored
specifically for diverse media objects.
      </p>
      <p>
        Additionally, media objects have to be processed in a
timely manner. Various types of processing is conducted on
media objects including: pattern matching (e.g., detecting
pornography), categorization (e.g., tagging photos),
correlation detection (e.g., recognizing a burglary in a network
of surveillance cameras), compression and resizing, format
conversion, and matching media objects (e.g.,
deduplication and checking copy-write). There has been extensive
research on optimizing each of these applications, such as
OpenCV and ShapeLogic [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ], focusing on a single
machine. Recently, the trend has moved toward distributed
environments. HIPI, MIPr, and 4Quant [
        <xref ref-type="bibr" rid="ref2 ref22 ref23 ref6">22, 23, 2, 6</xref>
        ], have
been developed as distributed o ine media processing
systems. However, in many use cases, especially in sensitive
areas such as security and medical, we need real-time
processing. Even in less critical areas, such as social networks,
delays (more than a few seconds or minutes) could cost
millions of dollars. There has been some e ort performing
realtime media processing by building libraries on top of
existing distributed online frameworks [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. However, current
online frameworks are not optimized for massive media
objects since they do not focus on minimizing data movement.
Therefore, we need an online processing framework designed
and optimized with the goal of processing large media
objects.
      </p>
    </sec>
    <sec id="sec-2">
      <title>MEDIA STORAGE</title>
      <p>As the rst step in my research, I have been focusing on
designing an e cient storage for media objects. Handling
media poses a number of unique challenges. First, due to
diversity in media types, media object sizes vary signi cantly
from tens of KBs (e.g., pro le pictures) to a few GBs (e.g.,
videos). The system needs to store both massive media
objects and a large number of small media objects e ciently.
Second, there is an ever-growing number of media that need
to be stored and served. This rapid growth in requests
magni es the necessity for a linearly scalable system (with low
overhead). Third, the variability in workload and cluster
expansions can create unbalanced load, degrading the latency
and throughput of the system. This creates a need for
loadbalancing. Finally, data has to be stored and retrieved in
a fast, durable, and highly available fashion. For example,
when a user uploads a media object in social network, all
his/her friends from all around the globe should be able to
see the media object with very low latency, even if parts of
the internal infrastructure fail. To provide these properties,
data has to be reliably replicated in multiple datacenters,
while maintaining low latency for each request.</p>
      <p>
        Several systems have been designed for handling a large
amount of data, but none of them satisfactorily meet the
requirements and scale media processing needs. There has
been extensive research into distributed le systems [
        <xref ref-type="bibr" rid="ref14 ref17 ref20 ref21 ref26">20, 17,
14, 21, 26</xref>
        ]. As pointed out by [
        <xref ref-type="bibr" rid="ref11 ref15">11, 15</xref>
        ], the unnecessary
additional capabilities these systems provide, such as the
hierarchical directory structure and rich metadata, are an
overkill for a media storage.
      </p>
      <p>
        Many key value stores [
        <xref ref-type="bibr" rid="ref10 ref12 ref13 ref16">13, 16, 10, 12</xref>
        ] have also been
designed for storing a large number of objects. Although
these systems can handle many small objects, they are not
optimized for storing large objects (tens of MBs to GBs).
Further, they impose extra overhead for providing
consistency guarantees while these are typically not needed for
immutable data. Some examples of these overheads include
using vector clocks, con ict resolution mechanism, logging,
and central coordinators.
      </p>
      <p>
        A few systems have been designed speci cally for large
immutable objects including Facebook's Haystack [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] along
with f4 [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Twitter's Blob Store [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. However, these
systems either become imbalanced (under-utilizing some of
the nodes) or do not scale beyond a point.
      </p>
      <p>
        Thus, through a collaboration with LinkedIn, we
developed a scalable load-balanced distributed storage system
built speci cally for media objects (described below) 1.
Ambry has been running in LinkedIn's production environment
for the past 2 years, serving up to 10K requests per second
across more than 400 million users. We have published our
work \Ambry: LinkedIn's Scalable Geo-Distributed
Object Store" in SIGMOD 2016 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Social networks are one of the biggest sources of media
objects, with hundreds of millions of users continually
uploading and viewing photos, videos, etc. Typically, these
media objects are written once, frequently accessed, never
modi ed, and rarely deleted. We leveraged this immutable
read-heavy access pattern of media objects towards
Ambry. Ambry is a scalable distributed storage designed for
e ciently handling both massive media objects (GBs) and
large number of small media objects (KBs). Ambry utilizes
techniques such as decentralized design, asynchronous
replication, rebalancing mechanisms, zero-cost failure detection,
and OS caching. Using these techniques, Ambry provides
high throughput (utilizing up to 88% of the network) and
low latency (less than 50 ms latency for 1 MB object), while
maintaining load balancing amongst nodes.
3.</p>
    </sec>
    <sec id="sec-3">
      <title>PROCESSING MEDIA OBJECTS</title>
      <p>
        As the next step, I am currently working on building a
distributed online processing system, optimized for media
objects. Distributed stream processing systems have been
designed for processing enormous amount of data in a near
real-time fashion [
        <xref ref-type="bibr" rid="ref19 ref24 ref27 ref9">24, 9, 19, 27</xref>
        ]. Conceptually, these
systems are a great t for media processing. Stream processing
systems are capable of processing massive amount of data in
parallel, as the data is generated in a near real-time fashion.
      </p>
      <p>However, existing systems are not optimized for media
and incur a lot of data movement. Many of these system
include multiple stages of data copy and/or fetching data
over the network. Although data movement may not be a
dominant factor for processing small data, this is not true
for massive media objects.</p>
      <p>
        One of the main causes of data movement is reading and
writing data from an external storage system (remote state),
as opposed to supporting fault-tolerant locally stored data
(local state). For example, for providing exactly-once
guarantees2, Millwheel [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] queries Bigtable [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] on each message
it receives to con rm that message has not been processed
before. Although an external storage provides faster
bootstrap and recovery time, it increases latency, consumes
network bandwidth, and can cause denial of service (DOS) for
the external storage.
      </p>
      <p>Currently, I am collaborating with LinkedIn on
developing Samza, a scalable distributed stream processing system
supporting local state. Samza provides fault-tolerant local
state by using local database instances in each node, along
with a compacted changelog for failure recovery. Each
local database instance stores data on disk, providing TBs of
space per machine. Additionally, by batching writes and
caching popular data in memory, it reaches performance
close to an in memory storage. By using local state, we
can implement exactly-once guarantees via storing processed
message ids locally (with very low latency), and replaying
the changelog if failures happen.</p>
      <p>We ran an performance benchmark to evaluate the e ect
of using local state, compared to using remote state. We
used two workloads</p>
      <p>
        ReadWrite: similar to a word count application
reading the current count of a speci c word and updating.
1The project is open-source and the code can be found at
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
2Exactly-once guarantees means processing each message
exactly once, even in presence of failures and late arrivals.
      </p>
      <p>We ran the workload on a 4 node cluster of beefy
machines, using multiple stores. Based on our initial results,
using local state improves throughput up to 100x compared
to using remote state, as shown in Figure 1. Using a local
Rocks DB with caching enabled reaches almost the
performance of a local in memory store and both cases saturate the
network. Even with no caching, Rocks DB reaches almost
half the throughput of a in-memory store. However, the
remote storage is orders of magnitude (up to 100x) slower.</p>
      <p>We also measured the latency for each test and it followed
a similar pattern. When using a local (Rocks DB or
inmemory) store the latency per input data was a few microseconds
in all test (8 to 30 microseconds). However, using a remote
store this latency was 3 orders of magnitude higher (4-10
milliseconds). This is mainly because of the added delay for
going over the network and data copies, and the overhead
of providing consistency in a fault-tolerant distributed store
(with multiple replicas).</p>
      <p>Moreover, we have developed a host a nity mechanism
that tries to reduce the failure recovery time by leveraging
the state already stored on disk. This mechanism favors
brining up failed containers on machines they were placed
before, reusing the state stored on disk. Using host a
nity we are able to drop the recovery time 5-10x, reducing
the recovery time from several minutes to only a few
seconds. Also, using host a nity, the overhead of recovery is
almost a constant value irrespective of the size of the state
to be rebuilt. This is because only the fraction of the state
not ushed to disk has to be rebuilt. Therefore, using this
mechanism and local state we are able to provide fast
failure recovery, close to a remote state, while not incurring
the overhead of querying a remote database on each input
message processed.</p>
    </sec>
    <sec id="sec-4">
      <title>FUTURE RESEARCH</title>
      <p>Although local state signi cantly improves performance
(specially for applications sensitive to data movement), it
is not su cient for providing an e cient media-processing
environment. Due to the large media sizes, the local state
may not be enough for storing all the data associated with
an application.</p>
      <p>For example, assume we have a continuously changing
reference set of fraud media, and a fraud detection application
that compares recently posted media against a subset of the
reference set (based on a similarity metric such as RGB
ratio). Using local state, we can partition the reference set
based on the similarity metric set across multiple machines;
access the set locally; and update the reference set
whenever needed. However, if the reference set grows too large
(e.g., videos), the local state capacity will not be enough
unless by scaling to a bigger cluster with many underutilized
machines. I plan to overcome this issue by integrating the
distributed storage system and the processing system into
one framework. This framework will utilize local state as a
cache for storing/retrieving media by o oading data to the
storage system, whenever needed.</p>
      <p>Additionally, processing even a single massive media
object (e.g., a high quality video) in a timely manner can go
beyond the capabilities of a single machine. Chunking large
media objects into smaller ones and processing chunks in
parallel, mitigates this issue. However, chunking introduces
many challenges including: rebuilding the large object in a
system where data chunks can be processed out of order or
in nitely delayed; processing data without losing accuracy;
and handling data dependency amongst data chunks. As my
future direction, I plan to provide built-in chunking and
rebuilding mechanism for large media types, without a ecting
accuracy.</p>
      <p>In a nutshell, as the future direction, I plan to further
optimize Samza to e ciently handle diverse media types and
sizes (ranging from a few KBs to a few GBs), and integrate
Samza and Ambry into a uni ed scalable media storage and
processing environment.
5.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Ambry</surname>
          </string-name>
          . http://www.github.com/linkedin/ambry, (accessed Mar,
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>[2] HIPI: Hadoop image processing interface</article-title>
          . http://hipi.cs.virginia.edu/index.html, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <article-title>[3] OpenCV: Open source computer vision</article-title>
          . http://www.opencv.org/, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4] ShapeLogic. http://www.shapelogic.org, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Stormcv</surname>
          </string-name>
          . https://github.com/sensorstorm/StormCV, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] Transforming images into information</article-title>
          . http://4quant.com, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7] YouTube statistics. https://www.youtube.com/yt/ press/en-GB/statistics.html, accessed Mar,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Noghabi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Subramanian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Narayanan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Narayanan</surname>
          </string-name>
          , G. Holla,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Gupta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Campbell</surname>
          </string-name>
          . Ambry:
          <article-title>Linkedin's scalable geo-distributed object store</article-title>
          .
          <source>In Proceeding of the ACM Special Interest Group on Management of Data (SIGMOD)</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Akidau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Balikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Bekiroglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chernyak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Haberman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lax</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>McVeety</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mills</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Nordstrom</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Whittle</surname>
          </string-name>
          .
          <article-title>Millwheel: fault-tolerant stream processing at internet scale</article-title>
          .
          <source>In Proceeding of the Very Large Data Bases Endowment (VLDB)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Auradkar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Botev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Das</surname>
          </string-name>
          ,
          <string-name>
            <surname>D. De Maagd</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Feinberg</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Ganti</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Ghosh</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Gopalakrishna</surname>
          </string-name>
          , et al.
          <article-title>Data infrastructure at LinkedIn</article-title>
          .
          <source>In Proceeding of the IEEE International Conference on Data Engineering (ICDE)</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Beaver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. C.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sobel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Vajgel</surname>
          </string-name>
          .
          <article-title>Finding a needle in Haystack: Facebook's photo storage</article-title>
          .
          <source>In Proceeding of the USENIX Symposium on Operating Systems Design and Implementation (OSDI)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghemawat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Hsieh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Wallach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Burrows</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Chandra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Fikes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Gruber</surname>
          </string-name>
          .
          <article-title>Bigtable: A distributed storage system for structured data</article-title>
          .
          <source>ACM Transactions on Computer Systems (TOCS)</source>
          ,
          <volume>26</volume>
          (
          <issue>2</issue>
          ),
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>G.</given-names>
            <surname>DeCandia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Hastorun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Jampani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Kakulapati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lakshman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pilchin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sivasubramanian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Vosshall</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Vogels</surname>
          </string-name>
          . Dynamo:
          <article-title>Amazon's highly available key-value store</article-title>
          .
          <source>In Proceeding of the ACM SIGOPS Operating Systems Review (OSR)</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghemawat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Gobio</surname>
          </string-name>
          , and S.-T. Leung.
          <article-title>The Google File System</article-title>
          .
          <source>In Proceeding of the ACM SIGOPS Operating Systems Review (OSR)</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Hortonworks</surname>
          </string-name>
          .
          <article-title>Ozone: An object store in HDFS</article-title>
          . http://hortonworks.com/blog/ ozone-object
          <string-name>
            <surname>-</surname>
          </string-name>
          store-hdfs/,
          <source>2014 (accessed Mar</source>
          ,
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lakshman</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Malik. Cassandra</surname>
          </string-name>
          :
          <article-title>A decentralized structured storage system</article-title>
          .
          <source>In Proceeding of the ACM SIGOPS Operating Systems Review (OSR), number 2</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Morris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Satyanarayanan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. H.</given-names>
            <surname>Conner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Howard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Rosenthal</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F. D.</given-names>
            <surname>Smith.</surname>
          </string-name>
          <article-title>Andrew: A distributed personal computing environment</article-title>
          .
          <source>Communications of the ACM (CACM)</source>
          ,
          <volume>29</volume>
          (
          <issue>3</issue>
          ),
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Muralidhar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Lloyd</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Roy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Pan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shankar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Sivakumar</surname>
          </string-name>
          , et al.
          <article-title>F4: Facebook's warm blob storage system</article-title>
          .
          <source>In Proceeding of the USENIX Symposium on Operating Systems Design and Implementation (OSDI)</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>L.</given-names>
            <surname>Neumeyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Robbins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nair</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Kesari</surname>
          </string-name>
          . S4:
          <article-title>Distributed stream computing platform</article-title>
          .
          <source>In Proceeding of IEEE International Conference on Data Mining Workshops (ICDMW)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sandberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Goldberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kleiman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Walsh</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Lyon</surname>
          </string-name>
          .
          <article-title>Design and implementation of the Sun network le system</article-title>
          .
          <source>In Proceeding of the USENIX Summer Technical Conference</source>
          ,
          <year>1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>K.</given-names>
            <surname>Shvachko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kuang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Radia</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Chansler</surname>
          </string-name>
          .
          <article-title>The Hadoop Distributed File System</article-title>
          .
          <source>In Proceeding of the IEEE Mass Storage Systems and Technologies (MSST)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sozykin</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Epanchintsev. MIPr -</surname>
          </string-name>
          <article-title>a framework for distributed image processing using Hadoop</article-title>
          .
          <source>In Proceeding of the IEEE Application of Information and Communication Technologies (AICT)</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>C.</given-names>
            <surname>Sweeney</surname>
          </string-name>
          , L. Liu,
          <string-name>
            <given-names>S.</given-names>
            <surname>Arietta</surname>
          </string-name>
          , and
          <string-name>
            <surname>J. Lawrence.</surname>
          </string-name>
          <article-title>HIPI: a Hadoop image processing interface for image-based mapreduce tasks</article-title>
          .
          <source>Chris</source>
          . University of Virginia,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Toshniwal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Taneja</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shukla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ramasamy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Patel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kulkarni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J</given-names>
            .
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Gade</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Donham</surname>
          </string-name>
          , et al.
          <article-title>Storm@ twitter</article-title>
          .
          <source>In Proceeding of the ACM Special Interest Group on Management of Data (SIGMOD)</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Twitter</surname>
          </string-name>
          . Blobstore:
          <article-title>Twitter's in-house photo storage system</article-title>
          . https://blog.twitter.com/
          <year>2012</year>
          <article-title>/ blobstore-twitter-s-in-house-photo-storage-</article-title>
          <string-name>
            <surname>system</surname>
          </string-name>
          ,
          <source>2011 (accessed Mar</source>
          ,
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Weil</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Brandt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. L.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Long</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Maltzahn</surname>
          </string-name>
          .
          <article-title>Ceph: A scalable, high-performance distributed le system</article-title>
          .
          <source>In Proceeding of the USENIX Symposium on Operating Systems Design and Implementation (OSDI)</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>M.</given-names>
            <surname>Zaharia</surname>
          </string-name>
          ,
          <string-name>
            <surname>T. Das</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Hunter</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Shenker</surname>
            ,
            <given-names>and I. Stoica.</given-names>
          </string-name>
          <article-title>Discretized streams: Fault-tolerant streaming computation at scale</article-title>
          .
          <source>In Proceeding of the USENIX Symposium on Operating Systems Design and Implementation (OSDI)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>