<!DOCTYPE html>
<html lang="en-US">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="/assets/css/custom.css">
    <link rel="stylesheet" href="/assets/css/main.css">
    <link rel="stylesheet" href="/assets/css/font-awesome.min.css">

    <link rel="shortcut icon" href="/favicon.ico?1">
    <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Nemo | A Data Processing System for Flexible Employment With Different Deployment Characteristics.</title>
<meta name="generator" content="Jekyll v3.9.3" />
<meta property="og:title" content="Nemo" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A Data Processing System for Flexible Employment With Different Deployment Characteristics." />
<meta property="og:description" content="A Data Processing System for Flexible Employment With Different Deployment Characteristics." />
<link rel="canonical" href="http://nemo.apache.org//" />
<meta property="og:url" content="http://nemo.apache.org//" />
<meta property="og:site_name" content="Nemo" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Nemo" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebSite","description":"A Data Processing System for Flexible Employment With Different Deployment Characteristics.","headline":"Nemo","name":"Nemo","url":"http://nemo.apache.org//"}</script>
<!-- End Jekyll SEO tag -->


    <link rel="canonical" href="http://nemo.apache.org//">
    <link rel="alternate" type="application/rss+xml" title="Nemo" href="http://nemo.apache.org//feed.xml" />
</head>


<body>

    <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container navbar-container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
            <a class="navbar-brand" href="/">
                <span><img src="/assets/img/nemo-logo.png" alt="Logo"></span>
            </a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
            <ul class="nav navbar-nav">
                <li ><a href="/docs/home/">Docs</a></li>
                <li ><a href="/apidocs">APIs</a></li>
                <li ><a href="/pages/downloads">Downloads</a></li>
                <li ><a href="/pages/talks">Talks</a></li>
                <li ><a href="/pages/team">Team</a></li>
                <li ><a href="/pages/license">License</a></li>
                <li ><a href="/blog/2022/09/10/release-note-0.4/">Blog</a></li>
                <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">ASF<span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
                    <li><a href="https://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li>
                    <li><a href="https://www.apache.org/licenses/">License</a></li>
                    <li><a href="https://www.apache.org/security/">Security</a></li>
                    <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
                    <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a></li>
                    <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                  </ul>
                </li>
            </ul>
            <div class="navbar-right">
                <form class="navbar-form navbar-left">
                    <div class="form-group has-feedback">
                        <input id="search-box" type="search" class="form-control" placeholder="Search...">
                        <i class="fa fa-search form-control-feedback"></i>
                    </div>
                </form>
                <ul class="nav navbar-nav">
                    <li><a href="https://github.com/apache/incubator-nemo"><i class="fa fa-github" aria-hidden="true"></i></a></li>
                </ul>
            </div>
        </div>
    </div>
</nav>


    <div class="page-content">
        <div class="wrapper">
            <div class="header-container jumbotron">
    <div class="container" style="color:darkslategray">
    <h1 style="color:darkslategray">Nemo</h1>
        <p>A Data Processing System for Flexible Employment With Different Deployment Characteristics.</p>
        <p><a class="btn btn-primary btn-lg" href="/docs/home/" role="button">Learn more</a></p>
    </div>
</div>


<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h2 class="header-light regular-pad">What is Nemo? <small>[ˈnemoʊ]</small></h2>
            <blockquote>
                <p>
                    Nemo is a data processing system for flexible employment with different execution scenarios for various deployment characteristics on clusters.
                    They include processing data on specific resource environments, like on transient resources, and running jobs with specific attributes, like skewed data.
                    Nemo decouples the logical notion of data processing applications from runtime behaviors and express them on separate layers using Nemo Intermediate Representation (IR).
                    Specifically, through a set of high-level graph pass interfaces, Nemo exposes runtime behaviors to be flexibly configured and modified at both compile-time and runtime, and the Nemo Runtime executes the Nemo IR with its modular and extensible design.
                </p>
              <!--<p>Jekyll is a simple, blog-aware, static site generator. It takes a template-->
              <!--directory containing raw text files in various formats, runs it through-->
              <!--a converter (like <a href="https://daringfireball.net/projects/markdown/">Markdown</a>)-->
              <!--and our <a href="https://github.com/Shopify/liquid/wiki">Liquid</a> renderer, and-->
              <!--spits out a complete, ready-to-publish static website suitable-->
              <!--for serving with your favorite web server. Jekyll also happens to be the engine-->
              <!--behind <a href="https://pages.github.com">GitHub Pages</a>, which means you can use Jekyll-->
              <!--to host your project’s page, blog, or website from GitHub’s servers <strong>for-->
              <!--free</strong>.</p>-->
            </blockquote>
        </div>
        <div class="col-md-6 text-center">
            <img src="assets/img/nemo-logo.png" alt="" class="img-responsive">
            <!--<img width="512" alt="Nemo reef 98" src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Nemo_reef_98.jpg/512px-Nemo_reef_98.jpg"/>-->
        </div>
    </div>

    <hr>

    <div class="row">
        <div class="col-sm-4">
            <h1 class="text-center"><i class="fa fa-pencil" aria-hidden="true"></i></h1>
            <h3 class="text-center">Flexible</h3>
            <p>
                Nemo offers flexible adaptation to your desired execution environment.
                Examples of such execution environments include using transient resources, disaggregation of different computing resources, and handling skewed data.
            </p>
        </div>
        <div class="col-sm-4">
            <h1 class="text-center"><i class="fa fa-cogs" aria-hidden="true"></i></h1>
            <h3 class="text-center">Modular and Extensible</h3>
            <p>
                Nemo is designed to be modular and extensible for even more variety of execution scenarios and deployment characteristics.
                Users with specific needs can plug in and out the required components and execute their jobs accordingly.
            </p>
        </div>
        <div class="col-sm-4">
            <h1 class="text-center"><i class="fa fa-arrows-alt" aria-hidden="true"></i></h1>
            <h3 class="text-center">Runs Everywhere</h3>
            <p>
                Nemo is able to run Apache Beam™ programs using our runtime, and Apache Spark™ programs in the near future.
                Moreover, by using Apache REEF™, Nemo enables data processing possible on different resource managers including Apache Hadoop™ YARN or Apache Mesos™.
            </p>
        </div>
    </div>
</div>

        </div>
    </div>

    <footer class="footer">
    <div class="container">
        <div class="row">
            <div class="col-sm-11">
                <p class="text-center">
                    Nemo 2023 |
                    Powered by <a href="https://github.com/aksakalli/jekyll-doc-theme">Jekyll Doc Theme</a>
                </p>
                <br>
                <p class="text-muted text-center">
                    Disclaimer: Apache Nemo (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
                    <br>
                    <br>
                    Copyright © 2022 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation 
                </p>
                <!-- <p class="text-muted">Place sticky footer content here.</p> -->
            </div>
            <div class="col-sm-1">
                <a href="https://www.apache.org/events/current-event.html">
                    <img src="https://www.apache.org/events/current-event-125x125.png">            
                </a>
            </div>
        </div>
    </div>
</footer>

    <script>
  var baseurl = ''
</script>
<script src="/assets/js/jquery-1.12.4.min.js "></script>
<script src="/assets/js/bootstrap.min.js "></script>
<script src="/assets/js/typeahead.bundle.min.js "></script>

<script src="/assets/js/main.js "></script>

</body>

</html>
