<!DOCTYPE html>
<!--
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.
-->
<head>
  	<meta charset="utf-8">
  	<meta http-equiv="X-UA-Compatible" content="IE=edge">

 	<title>Griffin - Apache Griffin Latest Download</title>
 	<meta name="description" content="Apache Griffin - Big Data Quality Solution For Batch and Streaming">

	<meta name="keywords" content="Griffin, Hadoop, Security, Real Time">
	<meta name="author" content="eBay Inc.">

	<meta charset="utf-8">
	<meta name="viewport" content="initial-scale=1">

	<link rel="stylesheet" href="/css/animate.css">
	<link rel="stylesheet" href="/css/bootstrap.min.css">

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

	<link rel="stylesheet" href="/css/misc.css">
	<link rel="stylesheet" href="/css/style.css">
	<link rel="stylesheet" href="/css/styles.css">
  	<link rel="stylesheet" href="/css/main.css">
  	<link rel="alternate" type="application/rss+xml" title="Griffin" href="http://griffin.apache.org/feed.xml" />
  	<link rel="shortcut icon" href="/images/favicon.ico">

  	<!-- Baidu Analytics Tracking-->
	<script>
	var _hmt = _hmt || [];
	(function() {
	  var hm = document.createElement("script");
	  hm.src = "//hm.baidu.com/hm.js?fedc55df2ea52777a679192e8f849ece";
	  var s = document.getElementsByTagName("script")[0];
	  s.parentNode.insertBefore(hm, s);
	})();
	</script>

	<!-- Google Analytics Tracking -->
	<script>
	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
	  ga('create', 'UA-68929805-1', 'auto');
	  ga('send', 'pageview');
	</script>
</head>

<body>
<!-- header start -->
<div id="home_page">
  <div class="topbar">
    <div class="container">
      <div class="row" >
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <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="/"><img src="/images/logo.png" height="44px" style="margin-top:-7px"></a> </div>
            </div>
          </div>
          <!-- /.container-fluid -->
        </nav>
      </div>
    </div>
  </div>

</div>
<!-- header end -->
<div class="container-fluid page-content">
  <div class="row">
    <div class="col-md-10 col-md-offset-1">
      <!-- sidebar -->
      <div class="col-xs-6 col-sm-3" id="sidebar" role="navigation">
        <ul class="nav" id="adminnav">
        
        <li class="heading">Getting Started</li>
        
          <li class="sidenavli  "><a href="/docs/quickstart.html" data-permalink="/docs/download.html" id="">Quick Start</a></li>
        
          <li class="sidenavli  "><a href="/docs/quickstart-cn.html" data-permalink="/docs/download.html" id="">Quick Start (Chinese Version)</a></li>
        
          <li class="sidenavli  "><a href="/docs/usecases.html" data-permalink="/docs/download.html" id="">Streaming Use Cases</a></li>
        
          <li class="sidenavli  "><a href="/docs/profiling.html" data-permalink="/docs/download.html" id="">Profiling Use Cases</a></li>
        
          <li class="sidenavli  "><a href="/docs/faq.html" data-permalink="/docs/download.html" id="">FAQ</a></li>
        
          <li class="sidenavli  "><a href="/docs/community.html" data-permalink="/docs/download.html" id="">Community</a></li>
        
          <li class="sidenavli  "><a href="/docs/conf.html" data-permalink="/docs/download.html" id="">Conference</a></li>
        
        <li class="divider"></li>
      
        <li class="heading">Development</li>
        
          <li class="sidenavli  "><a href="/docs/contribute.html" data-permalink="/docs/download.html" id="">Contribution</a></li>
        
          <li class="sidenavli  "><a href="/docs/contributors.html" data-permalink="/docs/download.html" id="">Contributors</a></li>
        
        <li class="divider"></li>
      
        <li class="heading">Download</li>
        
          <li class="sidenavli  "><a href="/docs/latest.html" data-permalink="/docs/download.html" id="">Latest version</a></li>
        
          <li class="sidenavli  current"><a href="/docs/download.html" data-permalink="/docs/download.html" id="">Archived</a></li>
        
        <li class="divider"></li>
      
        <li class="sidenavli">
          <a href="mailto:dev@griffin.apache.org" target="_blank">Need Help?</a>
        </li>
        </ul>
      </div>
      <div class="col-xs-6 col-sm-9 page-main-content" style="margin-left: -15px" id="loadcontent">
        <h1 class="page-header" style="margin-top: 0px">Apache Griffin Latest Download</h1>
        <blockquote>
  <p>Version <strong>0.4.0</strong> is the latest release.</p>

  <p>You can verify your download by following these <a href="https://www.apache.org/info/verification.html">procedures</a> and using these <a href="https://archive.apache.org/dist/griffin/KEYS">KEYS</a>.</p>
</blockquote>

<h1 id="050">0.5.0</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.5.0/CHANGES.txt">griffin 0.5.0 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.5.0/griffin-0.5.0-source-release.zip">griffin-0.5.0-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.5.0/griffin-0.5.0-source-release.zip.sha512">griffin-0.5.0-source-release.zip.sha512</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.5.0/griffin-0.5.0-source-release.zip.asc">griffin-0.5.0-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=griffin.git;a=tag;h=refs/tags/griffin-0.5.0">griffin-0.5.0</a></li>
    </ul>
  </li>
</ul>

<h1 id="040">0.4.0</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.4.0/CHANGES.txt">griffin 0.4.0 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/griffin/0.4.0/griffin-0.4.0-source-release.zip">griffin-0.4.0-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.4.0/griffin-0.4.0-source-release.zip.sha512">griffin-0.4.0-source-release.zip.sha512</a></li>
      <li><a href="https://archive.apache.org/dist/griffin/0.4.0/griffin-0.4.0-source-release.zip.asc">griffin-0.4.0-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=griffin.git;a=tag;h=refs/tags/griffin-0.4.0">griffin-0.4.0</a></li>
    </ul>
  </li>
</ul>

<h1 id="030">0.3.0</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.3.0-incubating/CHANGES.txt">griffin 0.3.0 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.3.0-incubating/griffin-0.3.0-incubating-source-release.zip">griffin-0.3.0-incubating-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.3.0-incubating/griffin-0.3.0-incubating-source-release.zip.sha512">griffin-0.3.0-incubating-source-release.zip.sha512</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.3.0-incubating/griffin-0.3.0-incubating-source-release.zip.asc">griffin-0.3.0-incubating-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=incubator-griffin.git;a=tag;h=refs/tags/griffin-0.3.0-incubating">griffin-0.3.0-incubating</a></li>
    </ul>
  </li>
</ul>

<h1 id="020">0.2.0</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.2.0-incubating/CHANGES.txt">griffin 0.2.0 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.2.0-incubating/griffin-0.2.0-incubating-source-release.zip">griffin-0.2.0-incubating-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.2.0-incubating/griffin-0.2.0-incubating-source-release.zip.sha1">griffin-0.2.0-incubating-source-release.zip.sha1</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.2.0-incubating/griffin-0.2.0-incubating-source-release.zip.asc">griffin-0.2.0-incubating-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=incubator-griffin.git;a=tag;h=refs/tags/griffin-0.2.0-incubating">griffin-0.2.0-incubating</a></li>
    </ul>
  </li>
</ul>

<h1 id="016">0.1.6</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.6-incubating/CHANGES.txt">griffin 0.1.6 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.6-incubating/griffin-0.1.6-incubating-source-release.zip">griffin-0.1.6-incubating-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.6-incubating/griffin-0.1.6-incubating-source-release.zip.sha1">griffin-0.1.6-incubating-source-release.zip.sha1</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.6-incubating/griffin-0.1.6-incubating-source-release.zip.asc">griffin-0.1.6-incubating-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=incubator-griffin.git;a=tag;h=refs/tags/griffin-0.1.6-incubating">griffin-0.1.6-incubating</a></li>
    </ul>
  </li>
</ul>

<h1 id="015">0.1.5</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.5-incubating/CHANGES.txt">griffin 0.1.5 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.5-incubating/griffin-parent-0.1.5-incubating-source-release.zip">griffin-0.1.5-incubating-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.5-incubating/griffin-parent-0.1.5-incubating-source-release.zip.sha1">griffin-0.1.5-incubating-source-release.zip.sha1</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.5-incubating/griffin-parent-0.1.5-incubating-source-release.zip.asc">griffin-0.1.5-incubating-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=incubator-griffin.git;a=tag;h=refs/tags/griffin-0.1.5-incubating">griffin-0.1.5-incubating</a></li>
    </ul>
  </li>
</ul>

<h1 id="014">0.1.4</h1>
<ul>
  <li>Release notes:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.4-incubating/CHANGES.txt">griffin 0.1.4 Release Notes</a></li>
    </ul>
  </li>
  <li>Source download:
    <ul>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.4-incubating/griffin-0.1.4-incubating-source-release.zip">griffin-0.1.4-incubating-source-release.zip</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.4-incubating/griffin-0.1.4-incubating-source-release.zip.sha1">griffin-0.1.4-incubating-source-release.zip.sha1</a></li>
      <li><a href="https://archive.apache.org/dist/incubator/griffin/0.1.4-incubating/griffin-0.1.4-incubating-source-release.zip.asc">griffin-0.1.4-incubating-source-release.zip.asc</a></li>
    </ul>
  </li>
  <li>Git revision:
    <ul>
      <li>tag: <a href="https://gitbox.apache.org/repos/asf?p=incubator-griffin.git;a=tag;h=refs/tags/griffin-0.1.4-incubating">griffin-0.1.4-incubating</a></li>
    </ul>
  </li>
</ul>

      </div><!--end of loadcontent-->
    </div>
    <!--end of centered content-->
  </div>
</div>
<!--end of container-->


<!-- footer start -->
<div class="footerwrapper">
    <div class="container">
        <div class="row">
            <div class="col-md-3">
                <img src="/images/incubator_feather_egg_logo.png" height="60">
            </div>
            <div class="col-md-9">
                <div style="margin-left:auto; margin-right:auto; text-align:center;font-size:12px;">
                    <div>
                        Apache Griffin 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.
                    </div>
                </div>
            </div>
        </div>
        <div class="row" style="padding-top:10px;">
            Copyright © 2018 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 Griffin, Griffin, Apache, the Apache feather logo and the Apache Griffin logo are trademarks of The Apache Software Foundation.
        </div>
		<div class="row text-center" style="padding-top:10px;">
			<a href="https://www.apache.org/events/current-event.html">
				<img src="https://www.apache.org/events/current-event-234x60.png" alt="ASF Current Event">
			</a>
		</div>
    </div>
</div>
<!-- footer end -->

<!-- JavaScripts -->
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>



</body>
</html>
