<!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 />
    <article-meta>
      <title-group>
        <article-title>THE ATLAS EVENTINDEX AND ITS EVOLUTION BASED ON APACHE KUDU STORAGE</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dario Barberis</string-name>
          <email>Dario.Barberis@cern.ch</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fedor Prokoshin</string-name>
          <email>Fedor.Prokoshin@cern.ch</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Evgeny Alexandrov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Igor Alexandrov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Zbigniew Baranowski</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Luca Canali</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gancho Dimitrov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alvaro Fernandez Casani</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Elizabeth Gallas</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff8">8</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carlos Garcia Montoro</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Santiago Gonzalez de la Hoz</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Julius Hrivnac</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aleksandr Iakovlev</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andrei Kazymov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikhail Mineev</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Grigori Rybkin</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Javier Sanchez</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>José Salt Cairols</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Petya Vasileva</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Miguel Villaplana Perez</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff7">7</xref>
          <xref ref-type="aff" rid="aff9">9</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>CERN</institution>
          ,
          <addr-line>CH-1211 Geneva 23</addr-line>
          ,
          <country country="CH">Switzerland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>ES-46980 Paterna</institution>
          ,
          <addr-line>Valencia</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Instituto de Física Corpuscular (IFIC)</institution>
          ,
          <addr-line>Univ. de Valencia and CSIC, C/Catedrático José Beltrán 2</addr-line>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Joint Institute for Nuclear Research</institution>
          ,
          <addr-line>Joliot-Curie 6, RU-141980 Dubna</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>LAL, Université Paris -Sud and CNRS/IN2</institution>
          <addr-line>P3, FR-91898 Orsay</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff5">
          <label>5</label>
          <institution>Universidad Tcénica Federico Santa Maria</institution>
          ,
          <addr-line>1680, Av. España, Valparaíso</addr-line>
          ,
          <country country="CL">Chile</country>
        </aff>
        <aff id="aff6">
          <label>6</label>
          <institution>Università di Genova and INFN</institution>
          ,
          <addr-line>Via Dodecaneso 33, I-16146 Genova</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff7">
          <label>7</label>
          <institution>Università di Milano and INFN</institution>
          ,
          <addr-line>Via G. Celoria 16, I-20133 Milano</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff8">
          <label>8</label>
          <institution>University of Oxford</institution>
          ,
          <addr-line>Wellington Square, Oxford OX1 2JD</addr-line>
          ,
          <country country="UK">United Kingdom</country>
        </aff>
        <aff id="aff9">
          <label>9</label>
          <institution>2018Dario Barberis</institution>
          ,
          <addr-line>Fedor Prokoshin, Evgeny Alexandrov, Igor Alexandrov, Zbigniew Baranowski, Luca Canali, Gancho Dimitrov, Alvaro Fernandez Casani, Elizabeth Gallas, Carlos Garcia Montoro, Santiago Gonzalez de la Hoz, Julius Hrivnac, Aleksandr Iakovlev, Andrei Kazymov, Mikhail Mineev, Grigori Rybkin, Javier Sanchez, Jos&amp;eacute; Salt Cairols, Petya Vasileva, Miguel Villaplana Perez</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <fpage>18</fpage>
      <lpage>25</lpage>
      <abstract>
        <p>on behalf of the ATLAS Collaboration The ATLAS experiment produced hundreds of petabytes of data and expects to have one order of magnitude more in the future. This data are spread among hundreds of computing Grid sites around the world. The EventIndex catalogues the basic elements of these data: real and simulated events. It provides the means to select and access event data in the ATLAS distributed storage system, and provides support for completeness and consistency checks and data overlap studies. The EventIndex employs various data handling technologies like Hadoop and Oracle databases, and is integrated with other elements of the ATLAS distributed computing infrastructure, including systems for data, metadata, and production management (AMI, Rucio and PanDA). The project is in operation since the start of LHC Run 2 in 2015, and is in permanent development in order to fit the analysis and production demands and follow technology evolutions. The main data store in Hadoop, based on MapFiles and HBase, can work for the rest of Run 2 but new solutions are explored for the future. Kudu offers an interesting environment, with a mixture of BigData and relational database features, which looked promising at the design level and is now used to build a prototype to measure the scaling capabilities as a function of data input rates, total data volumes and data query and retrieval rates. An extension of the EventIndex functionalities to support the concept of Virtual Datasets produced additional requirements that are tested on the same Kudu prototype, in order to estimate the system performance and response times for different internal data organisations. This paper reports on the current system performance and on the first measurements of the new prototype based on Kudu.</p>
      </abstract>
      <kwd-group>
        <kwd>Scientific computing</kwd>
        <kwd>BigData</kwd>
        <kwd>Hadoop</kwd>
        <kwd>Apache Kudu</kwd>
        <kwd>EventIndex</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        When software developments started for the ATLAS experiment [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] at the Large Hadron
Collider (LHC) and all other similar experiments about 20 years ago, the generic word “database”
practically referred only to relational databases, with very few exceptions. The ATLAS EventIndex [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
is the first application that was entirely developed having in mind the usage of modern structured
storage systems as back-end instead of a traditional relational database. The design started in late 2012
and the system was in production at the start of LHC Run 2 in Spring 2015.
      </p>
      <p>
        The EventIndex is a system designed to be a complete catalogue of ATLAS events, including
all real and simulated data. Its main use cases are event picking (find and give me “this” event in
“that” format and processing version), counting and selecting events based on trigger decisions,
production completeness and consistency checks (data corruption, missing and/or duplicated events)
and trigger chain and derivation overlap counting. It contains for each event record the event
identifiers (run and event numbers, trigger stream, luminosity block, bunch crossing number), trigger
decisions and references (GUID [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] of the file with this event plus the internal pointer) to the events at
each processing stage in all permanent files generated by central productions.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. EventIndex architecture and operations during LHC Run 2</title>
      <p>
        The EventIndex has a partitioned architecture following the data flow, sketched in Figure 1.
The Data Production component extracts event metadata from files produced on ATLAS resources at
CERN or world-wide on the LHC Computing Grid (WLCG [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]). For real data, all datasets containing
events in AOD format (Analysis Object Data, i.e. the reconstruction outputs) and some of the datasets
in DAOD format (Derived AODs, i.e. selected events with reduced information for specific analyses)
are indexed; as there are many DAOD formats, they are indexed only on demand of the production
managers involved. Indexing information extracted from AOD datasets contains also the references to
the corresponding raw data, so it is subsequently possible to extract events in RAW data format too.
For simulated data, all event generator outputs are indexed, as well as all datasets in AOD and some of
those in DAOD formats, similarly to real data.
      </p>
      <p>
        As soon as a production task is completed and its output dataset is registered in the ATLAS
Metadata Interface database (AMI, [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]), the corresponding indexing task is launched automatically, on
CERN Tier-0 resources for the data produced there, and on the WLCG for datasets produced on the
Grid. Each job runs on one or more input files and extracts the EventIndex information for all events,
which is packed into small files that are transferred to the CERN Object Store [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Over 7.4 million
indexing jobs were run since 2015, 1.9 million of which only during the last year, with a very low
number of failures. As indexing jobs are the first jobs run on data files just after they are produced,
they check data integrity immediately. Occasionally jobs fail for transient site problems, usually fixed
by retries at the same or another site, or for corrupted data files, which are then discarded and
reproduced.
      </p>
      <p>
        The Data Collection system [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] transfers EventIndex information from the production sites to
the central servers at CERN; the bulk of the information is sent to the Object Store, and the ActiveMQ
messaging system is used to inform the Data Collection Supervisor, a process that oversees all
EventIndex data transfer operations, of the data location in the Object Store. When all files of a given
dataset have been indexed and the corresponding information is available in the Object Store, the
Supervisor informs the Consumer processes, which also run in servers at CERN, to fetch the
EventIndex data for that dataset from the Object Store, check them for integrity, completeness (all
events are there) and duplicates (each event is there only once), format them into a single file and store
the file in the Hadoop [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] cluster at CERN. Figure 2 shows the data flow and messaging system usage
between the Producer processes extracting indexing information from event data files, the Supervisor
process and the Consumer processes packing the information for the Hadoop store.
The Data Storage units provide permanent storage for EventIndex data and fast access for the
most common queries, plus finite-time response for complex queries. The full information is stored in
Hadoop in compressed MapFile format [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], one file per dataset; an internal catalogue in HBase [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
(the relational database of the Hadoop system) keeps track of the status of each dataset and holds
dataset metadata, such as the number of events, the data format and other global information. The
trigger decision record, a bit mask for each event, is also stored in Hadoop but in decoded format, in
order to speed up searches and other trigger-related operations [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. All event records are also inserted
into an HBase table, used for fast event lookup for the event picking use case. Lookup in HBase is
faster than in Hadoop MapFiles as it consists in a direct access to the HBase relational table instead of
firing up a MapReduce job. Figure 3 shows schematically the data import flow within the Hadoop
system. At the time of writing the Hadoop system stores almost 200 billion event records, using 21 TB
for real data and 5 TB for simulated data, plus the auxiliary data (input and transient data and archive).
      </p>
      <p>Client code provides access to the Hadoop store. A command-line interface (CLI) provides
access to all information in Hadoop. One can search events filtering on any of the event properties
with the generic “ei” command and retrieve the full records or parts of them, or just count the events
that satisfy the query; the results will come back in real time for quick queries or will be stored and a
link will be sent by email for more complex queries. The “ el” command queries the HBase tables to
return the event location (GUID of the file and internal pointer) of all events satisfying the search
criteria. With the “ti” command users can access the trigger tables, count events by trigger for a giver
run and create and visualise the tables of trigger overlaps for all active triggers or for subsets of them
(for example, all high-level triggers involving muons). A graphical interface (GUI) is also available to
help users to formulate correct and coherent queries and display relations and correlations between
selected datasets.</p>
      <p>
        Real data records, without the trigger information that constitutes most of the data volume, are
also copied to an Oracle database. The relational features of Oracle allow connecting the dataset
metadata derived from the EventIndex with other metadata derived from the Run and Conditions
databases, which are also stored in the same Oracle cluster, providing added value to this information.
Oracle is also much faster in event lookup operations, once the data schema has been
well designed [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. EventIndex evolution towards LHC Run 3</title>
      <p>The current EventIndex was designed in 2012-2013 selecting the best BigData technology
available at that time (Hadoop), then implemented in 2014 using MapFiles and HBase, and is in
operation since 2015 with satisfactory results. The use cases extended in the meantime from event
picking and production completeness checks to trigger overlap studies, duplicate event detection and
derivation streams (offline triggers) overlaps. The fast data querying based on a traditional relational
database technology (Oracle) involving only a subset of information for real events is no longer
sufficient to cover all requests, and in addition the event rate increased steadily throughout Run 2
beyond the initial expectation. The BigData technologies advanced in the meantime and now we have
many different products and options to choose from.</p>
      <p>
        An active R&amp;D programme to explore different, and possibly better performing, data store
formats in Hadoop was started in 2016. The “pure HBase” approach (database organized in columns
of key-value pairs) was one of the original options on the table in 2013, but was not selected because
of its poor parallelism that made the performance degrade when data volumes increase; it is more
promising now as it shows good performance for event picking but not for all other use cases. The
Avro [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Parquet [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] data formats have been explored, with tests on full 2015 real data, and also
look promising [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Kudu [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] is a new technology in the Hadoop ecosystem, implementing a new
column-oriented storage layer that complements HDFS and HBase. Data ingestion and query scanning
are distributed among the servers holding the data partitions, thereby decreasing substantially the time
taken by each operation. Kudu appears to be more flexible to address a wider variety of use cases, in
particular as it is addressable also through SQL queries, placing it midway between Oracle and the
NoSQL world; tests continued since then and show promising results [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>Possible benefits of using Kudu for the EventIndex are the unification of storage for all use
cases (random access and large-scale analytics) and the fact that related data (through reprocessings)
will sit close to each other on disk, reducing redundancies and improving navigation. With Kudu we
can also reduce the ingestion latency by the removal of multi-staged data loading into HDFS, enable
in-place data mutation, enable common analytic interfaces like Spark and Impala, and finally improve
the random lookup and analytics performance.</p>
      <p>
        Figures 5 to 7 show the performance measurements of the current Kudu prototype [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. The
Kudu cluster used for these tests at CERN consisted of 12 machines with 2x8 cores, 2.60 GHz clock,
64 GB of RAM and 48 SAS drives; data were imported from the current EventIndex implementation
in Hadoop. Figure 5 shows the time taken to import a typically large dataset, consisting of 100 million
event records (over one day of continuous data taking), as function of the number of parallel threads
used. The average writing speed was 5 kHz per thread, with a maximum overall writing speed into the
Kudu cluster of 120 kHz, which is over 10 times the current need and promises well for the future
when data-taking, processing and simulation production rates will increase.
      </p>
      <p>Searching and retrieving information for a few thousand event records from the several tens of
billions in storage is a relevant use case that stretched the current EventIndex implementation in
Hadoop when it was first proposed in 2015. Figure 6 shows the time needed to retrieve just the event
location information (GUID) or the full record, the first time and when the result is already in the
Kudu cache, as function of the number of parallel threads used. As expected the execution time is
higher when the results are not in the cache, but retrieval rates of over 400 records per second have
been achieved for the worst-case test and 64 active threads.</p>
      <p>Studying the overlaps and correlations between related triggers within a run is important to
optimise the trigger menus and make sure that all interesting events are collected, as well as
minimising the backgrounds. The same run with 100 million event records was used to test this use
case in Kudu; the results in Figure 7 show that it is now possible to run this tool routinely as it takes
only 20 minutes to compute all this information from the thousands of possible trigger chains (millions
of correlations) active for each event. Most of the time is spent in the computation and not in data
access, which is very good as it shows that the storage technology is not a bottleneck for this
application.
1000000
100000
[]s 10000
e
itm 1000
d
e
s
p
la 100
E
10
1
189376
2624
1
Time to compute trigger correlations for 100M of events
90848
1312
2
45408
672
4
22704
336
14232
168
8 16
Number of parallel threads used
5674
86
32</p>
      <sec id="sec-3-1">
        <title>Computing time [s]</title>
      </sec>
      <sec id="sec-3-2">
        <title>Storage access time [s]</title>
        <p>3196
44
64</p>
        <p>
          Complementary tests were run at IFIC in Valencia (Spain) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. That cluster is composed of 5
machines with 2 x Xeon E5-2690 CPU, and 256 GB of memory each. There are 8 x 6 TB data hard
disk per machine configured as one big Raid10 disk to store tablets, summing up 22 TB per machine
to a total of 88 TB of storage. The write ahead log is located in the extra NVMe SSD of 1.5 TB per
machine to improve the performance of the write operations. The current Kudu configuration uses one
of these machines as master, and the other four as tablet servers. Two types of tests were run: on
trigger record compression formats and on the ingestion rates for different internal data organization
schemas.
        </p>
        <p>
          Compressing the trigger records is important for the data sizes but the compression must be
transparent for the tools reading this information efficiently. It was found that the best ratio of bytes
per event is obtained with the “bitshuffle” encoding [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], which rearranges the bits for achieving better
compression ratios relying on neighbouring elements. In addition, for our trigger use case there are
usually many bits that are 0, i.e. not signal. In this case we do not explicitly set them to 0, but leave the
field as null as much as possible. Then we apply a compression algorithm, with LZ4 [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] being the
best option for this kind of bit shuffle encoding. In the end all trigger information occupies only 60
and 15 bytes/event for Level-1 and High-Level Triggers respectively.
        </p>
        <p>The data ingestion tests run in Valencia measured the write performance for different data
schemas. Schemas with partitions based on quantities that distribute the incoming events evenly across
partitions provide the best performance, with ingestion rates between 5 and 6 kHz, in the same range
as for the CERN tests. The Consumer spends 1% of the time waiting for data from the Object Store,
then 4% of the time parsing and converting the input data; the insertion phase into Kudu client buffers
is roughly 23% of the time, with the last flush phase taking the bulk of the time (72%).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusions</title>
      <p>The EventIndex project started in 2012 at the end of LHC Run 1, driven by the need of having
a functional event picking system for ATLAS data. The data storage and search technology selected in
the first phase of the project (Hadoop MapFiles and HBase, in 2013-2014) was the most advanced
available at that time in the fast-growing field of BigData; indeed after a couple of initial hiccups it
proved reliable and performed satisfactorily. Part of the data are replicated also to Oracle for faster
access but mainly to have a uniform environment between event and dataset metadata. Nevertheless
the current implementation of the EventIndex started showing scalability issues as the amount of
stored data increased in the last couple of years: slower queries, lots of storage (compression helped of
course).</p>
      <p>Kudu looks like a very promising solution that can carry the EventIndex through Run 3
(20212024), with faster data injection and queries, the possibility of using analytics tools, and the
compatibility with SQL queries for the connections to other information in relational databases. The
ATLAS plan is to finalise the schemas by the end of 2018 and then upload all Run 1 and Run 2 data
from the Hadoop EventIndex and run Hadoop and Kudu in parallel until we are satisfied with the
performance in terms of speed, ease of use and system stability. If all goes well, by the end of 2019 we
will be able to run only Kudu and decommission the Hadoop infrastructure for the EventIndex.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>ATLAS</given-names>
            <surname>Collaboration 2008 The ATLAS</surname>
          </string-name>
          <article-title>Experiment at the CERN Large Hadron Collider, JINST 3 S08003 doi</article-title>
          :10.1088/
          <fpage>1748</fpage>
          -0221/3/08/S08003
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Barberis</surname>
            <given-names>D.</given-names>
          </string-name>
          et al.
          <year>2015</year>
          <article-title>The ATLAS EventIndex: architecture, design choices, deployment and first operation experience</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 664 042003</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/664/4/042003
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>GUID</given-names>
            <surname>: Global Unique</surname>
          </string-name>
          <string-name>
            <surname>IDentifier</surname>
          </string-name>
          , https://en.wikipedia.org/wiki/Universally_unique_identifier
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Bird</surname>
            <given-names>I.</given-names>
          </string-name>
          et al.
          <source>2005 LHC Computing Grid Technical Design Report</source>
          ,
          <string-name>
            <surname>CERN-LHCC-</surname>
          </string-name>
          2005-024, http://lcg.web.cern.ch/LCG/tdr
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Albrand</surname>
            <given-names>S. 2010</given-names>
          </string-name>
          <article-title>The ATLAS metadata interface</article-title>
          ,
          <source>J. Phys. Conf. Ser. 219 042030</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/219/4/042030
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Sánchez</surname>
            <given-names>J.</given-names>
          </string-name>
          et al.
          <year>2015</year>
          <article-title>Distributed Data Collection for the ATLAS EventIndex</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 664 042046</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/664/4/042046
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Fernandez</given-names>
            <surname>Casani</surname>
          </string-name>
          <article-title>A</article-title>
          . et al.
          <year>2018</year>
          <article-title>Distributed Data Collection for the Next Generation ATLAS EventIndex Project</article-title>
          , to be published in
          <source>the Proceedings of the 23rd International Conference on Computing in High-Energy and Nuclear Physics</source>
          , Sofia (Bulgaria)
          <year>July 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>[8] Hadoop and associated tools: http://hadoop.apache.org</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Favareto</surname>
            <given-names>A.</given-names>
          </string-name>
          et al.
          <year>2016</year>
          <article-title>Use of the Hadoop structured storage tools for the ATLAS EventIndex event catalogue</article-title>
          ,
          <source>Phys. Part. Nuclei Lett</source>
          .
          <volume>13</volume>
          : 621, doi:10.1134/S1547477116050198
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>[10] HBase: https://hbase.apache.org</mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Mineev</surname>
            <given-names>M.</given-names>
          </string-name>
          et al.
          <year>2018</year>
          <article-title>Trigger information data flow for the ATLAS EventIndex, these proceedings</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gallas</surname>
            <given-names>E.J.</given-names>
          </string-name>
          et al.
          <year>2017</year>
          <article-title>An Oracle-based Event Index for ATLAS</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 898 042033</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/898/4/042033
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <article-title>ElasticSearch</article-title>
          and Kibana: https://www.elastic.co
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Barberis</surname>
            <given-names>D.</given-names>
          </string-name>
          et al.
          <year>2016</year>
          <article-title>ATLAS Eventlndex monitoring system using the Kibana analytics and visualization platform</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 762 012004</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/762/1/012004
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>[15] InfluxDB: https://www.influxdata.com</mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>[16] Grafana: https://grafana.com</mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Alexandrov</surname>
            <given-names>E.</given-names>
          </string-name>
          et al.
          <year>2018</year>
          <article-title>BigData tools for the monitoring of the ATLAS EventIndex, these proceedings</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>[18] Avro: https://avro.apache.org</mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>[19] Parquet: http://parquet.apache.org</mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Baranowski</surname>
            <given-names>Z.</given-names>
          </string-name>
          et al.
          <year>2017</year>
          <article-title>A study of data representation in Hadoop to optimise data storage and search performance for the ATLAS EventIndex</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 898 062020</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/898/6/062020
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>[21] Kudu: http://kudu.apache.org</mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Baranowski</surname>
            <given-names>Z.</given-names>
          </string-name>
          et al.
          <year>2018</year>
          <article-title>Kudu prototypes for the ATLAS EventIndex</article-title>
          , to be published in
          <source>the Proceedings of the 23rd International Conference in Computing in High-Energy and Nuclear Physics</source>
          , Sofia (Bulgaria)
          <year>July 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Masui</surname>
            <given-names>K.</given-names>
          </string-name>
          et al.
          <year>2015</year>
          <article-title>A compression scheme for radio data in high performance computing</article-title>
          ,
          <source>Astronomy and Computing</source>
          <volume>12</volume>
          <fpage>181</fpage>
          -
          <lpage>190</lpage>
          , doi: 10.1016/j.ascom.
          <year>2015</year>
          .
          <volume>07</volume>
          .002
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24] LZ4: https://en.wikipedia.org/wiki/LZ4_
          <article-title>(compression_algorithm)</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>