![](website/src/site/resources/ApacheREEF_logo_no_margin_small.png)

Apache REEF&trade;
========================

Apache REEF&trade; (Retainable Evaluator Execution Framework) is a  library for developing portable applications for 
 cluster resource managers such as Apache Hadoop YARN or Apache
 Mesos. For example, [Microsoft Azure Stream Analytics](https://azure.microsoft.com/en-us/services/stream-analytics/) is built on [REEF and
Hadoop.](https://blogs.technet.microsoft.com/machinelearning/2015/12/17/reef-graduates-to-a-top-level-apache-project/) 


Online Documentation
====================
Detailed information on REEF can be found in the following places:

  * [The project website](http://reef.apache.org/)
  * [The project wiki](https://cwiki.apache.org/confluence/display/REEF/Home)

[The developer
mailing list](http://reef.apache.org/mailing-list.html) is
the best way to reach REEF's developers when the above aren't
sufficient.


Build Status
=============

| Component | OS | Status |
|---|:------:|:------:|
|REEF Java | Ubuntu | [![Build Status](https://travis-ci.org/apache/reef.svg?branch=master)](https://travis-ci.org/apache/reef) |
|REEF.NET | Windows | [![Build status](https://ci.appveyor.com/api/projects/status/qwvl6d4d8891e09d/branch/master?svg=true)](https://ci.appveyor.com/project/ApacheSoftwareFoundation/reef/branch/master) |


Building REEF
=============

|   | Java   | .NET |
|---|:------:|:----:|
|Build & run unit tests| [java\BUILD.md](lang/java/BUILD.md) | [cs\BUILD.md](lang/cs/BUILD.md) |

Releases
=============

[![downloads](https://img.shields.io/badge/source%20code-download-brightgreen.svg)](http://reef.apache.org/downloads.html)
[![NuGet package](https://img.shields.io/badge/nuget-package-brightgreen.svg)](https://www.nuget.org/packages/Org.Apache.REEF.All/)

License
=============

[![Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-brightgreen.svg)](LICENSE)


