---
layout: default
title: Overview
notitle: true
---
<div class="jumbotron">
<h4>Crail is an open source user-level I/O architecture for the Apache data processing ecosystem designed from ground up for high-performance storage and networking hardware</h4>
</div>

<br>
<div>
<center>
<img src="{{ site.base }}/img/crail_stack2.png" align="middle" style="width: 340px; text-align:center;">
</center>
</div>
<br>

<div class="row">
<div class="col-lg-4">
<h2>Open</h2>
<p align="justify">Crail is open source and integrates seamlessly with the Apache ecosystem, such as Spark, Flink, Parquet, etc. Crail is based on Crail Store -- a high-performance distributed data store for temporary data -- and a series of modules interfacing with the compute engine. Crail modules provide standard interfaces (e.g. HDFS) and can be loaded transparently at runtime (e.g., Spark shuffle).</p>
<p><a class="btn btn-default" href="overview/index.html#spark">Learn more &raquo;</a></p>
</div>
<div class="col-lg-4">
<h2>Fast</h2>
<p align="justify">Crail is built explictly for user-level I/O (RDMA, NVMef, etc.), allowing storage and networking hardware to directly access I/O memory within the data processing engine. Bypassing OS and JVM during data access enables delivering bare-metal I/O performance to analytics workloads. For example, Crail achieves data access at rates close to the 100Gb/s network limit with latencies below 10 us.</p>
<p><a class="btn btn-default" href="overview/index.html#overview">Learn more &raquo;</a></p>
</div>
<div class="col-lg-4">
<h2>Heterogeneous</h2>
<p align="justify">Crail orchestrates I/O operations across different storage tiers including DRAM, flash or GPU memory. Aside from providing fine grained control as to which storage tier is used when storing data, Crail also supports horizontal tiering where higher performing storage resources are filled up across the cluster prior to using lower performing tiers -- making effective use of the storage hardware.</p>
<p><a class="btn btn-default" href="overview/index.html#fs">Learn more &raquo;</a></p>
</div>
</div>

<h2>News</h2>
<ul class="news list-unstyled">
{% for post in site.categories.news limit: site.front_page_news %}
    {% if post.shortnews %}
        <li class="shortnews">
            <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
            {{ post.content }}
        </li>
    {% else %}
        <li class="bloglink">
            <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
            <a href="{{ post.url }}">&raquo; {{ post.title }}</a>
        </li>
    {% endif %}
{% endfor %}
</ul>
{% assign numposts = site.categories.news | size %}
{% if numposts >= site.front_page_news %}
<p><a href="{{ site.base }}/news/">Older posts&hellip;</a></p>
{% endif %}
