<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <!--
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            This file is generated from XML source: DO NOT EDIT!
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   -->
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<link rel="stylesheet" href="/style/compressed.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/style.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/attic.css" type="text/css" media="screen, projection"/>
	<!--[if IE]><link rel="stylesheet" href="/style/ie.css" type="text/css" media="screen, projection"/><![endif]-->
     <meta name="author" content="The Apache Software Foundation" /><meta name="email" content="general.AT.attic.apache.DOT.org" />
    <title>Apache Hama - Apache Attic</title>
  
 </head>
 <body id="sub">
	<div class="container">
	<hr class="space col"/>
	<div class="block">
		<div class="column span-24">
      <div id="header">
                          <!-- Add 'default' header section here. -->
                                <h1>Apache Hama</h1>
                         </div>
      </div>
	</div>
	<hr/>
	<div class="block content">
		<div class="column span-15 colborder">
                            
<div class="section-content">
<p><a href="http://hama.apache.org/">Apache Hama</a>
     moved into the Attic in April 2020.
     Apache Hama was a framework for Big Data analytics based on the Bulk
     Synchronous Parallel paradigm.</p>
<p>The website, downloads and issue tracker all remain open, though 
     the issue tracker is read-only. See the website at
     <a href="http://hama.apache.org/">http://hama.apache.org</a>
     for more information on Hama.</p>
<p>As with any project in the Attic - if you should choose to fork Hama
     outside of Apache, please let us know so we can link to your project.
  </p>

  <table style="margin-left: auto; margin-right:auto; width:90%">
    <tr>
      <th>Read-only Resource</th>
      <th>Link(s)</th>
    </tr>
    <tr>
      <td>Website</td>
      <td><a href="http://hama.apache.org/">hama.apache.org/</a></td>
    </tr>
    <tr>
      <td>Mailing List Archives</td>
      <td>
        <a href="http://mail-archives.apache.org/mod_mbox/hama-dev/">dev</a>
        | <a href="http://mail-archives.apache.org/mod_mbox/hama-commits/">commits</a>
        | <a href="http://mail-archives.apache.org/mod_mbox/hama-user/">user</a>
      </td>
    </tr>
    <tr>
      <td>Issue Tracker (JIRA)</td>
      <td><a href="https://issues.apache.org/jira/browse/HAMA/">HAMA</a></td>
    </tr>
    <tr>
      <td>Board Reports</td>
      <td><a href="https://whimsy.apache.org/board/minutes/hama.html">Minutes</a></td>
    </tr>
    <tr>
      <td>Downloads</td>
      <td><a href="http://archive.apache.org/dist/hama/">archive.apache.org/dist/hama/</a> 
      | <a href="http://archive.apache.org/dist/hama/KEYS">KEYS</a>
      </td>
    </tr>
  </table>

<p>Archived versions of Hama may be downloaded from the 
     <a href="http://archive.apache.org/dist/hama/">Apache Archives</a>.
  </p>
</div>
         </div>
    <div class="column span-8 last">
      <div class="block">
        <div class="nav column span-11">
          <div>
               <div class="menuheader">The Apache Attic</div>
  <ul>
          <li><a href="/">Home</a></li> 
          <li><a href="https://projects.apache.org/committee.html?attic">The team</a></li> 
          <li><a href="/process.html">Process</a></li> 
          <li><a href="/tracking.html">Process tracking</a></li> 
          <li><a href="https://whimsy.apache.org/board/minutes/Attic.html">Board Minutes</a></li> 
          <li><a href="http://www.apache.org/licenses/">License</a></li> 
          <li><a href="http://www.apache.org/security/">Security</a></li> 
      </ul>
      <div class="menuheader">Related Apache Links</div>
  <ul>
          <li><a href="http://www.apache.org/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Donate</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
          <li><a href="http://incubator.apache.org/">Incubator</a></li> 
          <li><a href="http://apachecon.com/">ApacheCon</a></li> 
      </ul>
          </div>
        </div>
        <div class="nav column prepend-1 span-12 last">
               <h6>Projects in the Attic</h6>
  <ul>
          <li><a href="/projects/abdera.html">Abdera</a></li> 
          <li><a href="/projects/ace.html">ACE</a></li> 
          <li><a href="/projects/apex.html">Apex</a></li> 
          <li><a href="/projects/aurora.html">Aurora</a></li> 
          <li><a href="/projects/avalon.html">Avalon</a></li> 
          <li><a href="/projects/axkit.html">AxKit</a></li> 
          <li><a href="/projects/axis-sandesha-c.html">Axis Sandesha2/C</a></li> 
          <li><a href="/projects/axis-savan-c.html">Axis Savan/C</a></li> 
          <li><a href="/projects/axis-savan-java.html">Axis Savan/Java</a></li> 
          <li><a href="/projects/beehive.html">Beehive</a></li> 
          <li><a href="/projects/buildr.html">Buildr</a></li> 
          <li><a href="/projects/chemistry.html">Chemistry</a></li> 
          <li><a href="/projects/chukwa.html">Chukwa</a></li> 
          <li><a href="/projects/clerezza.html">Clerezza</a></li> 
          <li><a href="/projects/click.html">Click</a></li> 
          <li><a href="/projects/climate.html">Open Climate Workbench</a></li> 
          <li><a href="/projects/crimson.html">Crimson</a></li> 
          <li><a href="/projects/continuum.html">Continuum</a></li> 
          <li><a href="/projects/crunch.html">Crunch</a></li> 
          <li><a href="/projects/deltacloud.html">Deltacloud</a></li> 
          <li><a href="/projects/devicemap.html">DeviceMap</a></li> 
          <li><a href="/projects/directmemory.html">DirectMemory</a></li> 
          <li><a href="/projects/drat.html">DRAT</a></li> 
          <li><a href="/projects/eagle.html">Eagle</a></li> 
          <li><a href="/projects/esme.html">ESME</a></li> 
          <li><a href="/projects/etch.html">Etch</a></li> 
          <li><a href="/projects/excalibur.html">Excalibur</a></li> 
          <li><a href="/projects/falcon.html">Falcon</a></li> 
          <li><a href="/projects/forrest.html">Forrest</a></li> 
          <li><a href="/projects/hama.html">Hama</a></li> 
          <li><a href="/projects/harmony.html">Harmony</a></li> 
          <li><a href="/projects/hivemind.html">HiveMind</a></li> 
          <li><a href="/projects/ibatis.html">iBATIS</a></li> 
          <li><a href="/projects/jakarta.html">Jakarta</a></li> 
          <li><a href="/projects/jakarta-cactus.html">Jakarta Cactus</a></li> 
          <li><a href="/projects/jakarta-ecs.html">Jakarta ECS</a></li> 
          <li><a href="/projects/jakarta-oro.html">Jakarta ORO</a></li> 
          <li><a href="/projects/jakarta-regexp.html">Jakarta Regexp</a></li> 
          <li><a href="/projects/jakarta-slide.html">Jakarta Slide</a></li> 
          <li><a href="/projects/jakarta-taglibs.html">Jakarta Taglibs</a></li> 
          <li><a href="/projects/joshua.html">Joshua</a></li> 
          <li><a href="/projects/labs.html">Labs</a></li> 
          <li><a href="/projects/lens.html">Lens</a></li> 
          <li><a href="/projects/lenya.html">Lenya</a></li> 
          <li><a href="/projects/lucy.html">Lucy</a></li> 
          <li><a href="/projects/marmotta.html">Marmotta</a></li> 
          <li><a href="/projects/metamodel.html">MetaModel</a></li> 
          <li><a href="/projects/metron.html">Metron</a></li> 
          <li><a href="/projects/mrunit.html">MRUnit</a></li> 
          <li><a href="/projects/ode.html">ODE</a></li> 
          <li><a href="/projects/ojb.html">ObJectRelationalBridge (OJB)</a></li> 
          <li><a href="/projects/oltu.html">Oltu (previously Amber)</a></li> 
          <li><a href="/projects/onami.html">Onami</a></li> 
          <li><a href="/projects/polygene.html">Polygene</a></li> 
          <li><a href="/projects/predictionio.html">PredictionIO</a></li> 
          <li><a href="/projects/quetzalcoatl.html">Quetzalcoatl</a></li> 
          <li><a href="/projects/rave.html">Rave</a></li> 
          <li><a href="/projects/river.html">River</a></li> 
          <li><a href="/projects/sentry.html">Sentry</a></li> 
          <li><a href="/projects/shale.html">Shale</a></li> 
          <li><a href="/projects/shindig.html">Shindig</a></li> 
          <li><a href="/projects/sqoop.html">Sqoop</a></li> 
          <li><a href="/projects/stdcxx.html">Standard C++ Library (STDCXX)</a></li> 
          <li><a href="/projects/stanbol.html">Stanbol</a></li> 
          <li><a href="/projects/stratos.html">Stratos</a></li> 
          <li><a href="/projects/tajo.html">Tajo</a></li> 
          <li><a href="/projects/tiles.html">Tiles</a></li> 
          <li><a href="/projects/trafodion.html">Trafodion</a></li> 
          <li><a href="/projects/tuscany.html">Tuscany</a></li> 
          <li><a href="/projects/twill.html">Twill</a></li> 
          <li><a href="/projects/usergrid.html">Usergrid</a></li> 
          <li><a href="/projects/vxquery.html">VXQuery</a></li> 
          <li><a href="/projects/whirr.html">Whirr</a></li> 
          <li><a href="/projects/wink.html">Wink</a></li> 
          <li><a href="/projects/wookie.html">Wookie</a></li> 
          <li><a href="/projects/muse.html">WS Muse</a></li> 
          <li><a href="/projects/xang.html">Xang</a></li> 
          <li><a href="/projects/xindice.html">Xindice</a></li> 
          <li><a href="/projects/xmlbeans.html">XMLBeans</a>
        ; revived June 2018
      </li> 
          <li><a href="/projects/xml.html">XML</a></li> 
      </ul>
        </div>
      </div>
    </div>
    <div class="column span-24 footer">
      <hr/>
        <p>Copyright &#169; 2009-2021 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
      </div>
    </div>
  </div>
</body>
</html>

