blob: a139fdd9db320f5fe6158be11c29c923529b3283 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.1.0/javadoc/org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Generated by javadoc (version 1.7.0_80) on Thu Jul 20 19:37:42 UTC 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>IgfsGroupDataBlocksKeyMapper (Ignite 2.1.0)</title>
<meta name="date" content="2017-07-20">
<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
<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','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="IgfsGroupDataBlocksKeyMapper (Ignite 2.1.0)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/IgfsGroupDataBlocksKeyMapper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/ignite/igfs/IgfsFile.html" title="interface in org.apache.ignite.igfs"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/ignite/igfs/IgfsInputStream.html" title="class in org.apache.ignite.igfs"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html" target="_top">Frames</a></li>
<li><a href="IgfsGroupDataBlocksKeyMapper.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.ignite.igfs</div>
<h2 title="Class IgfsGroupDataBlocksKeyMapper" class="title">Class IgfsGroupDataBlocksKeyMapper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper</li>
<li>
<ul class="inheritance">
<li>org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../../org/apache/ignite/cache/affinity/AffinityKeyMapper.html" title="interface in org.apache.ignite.cache.affinity">AffinityKeyMapper</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">IgfsGroupDataBlocksKeyMapper</span>
extends org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper</pre>
<div class="block"><code>IGFS</code> class providing ability to group file's data blocks together on one node.
All blocks within the same group are guaranteed to be cached together on the same node.
Group size parameter controls how many sequential blocks will be cached together on the same node.
<p>
For example, if block size is <code>64kb</code> and group size is <code>256</code>, then each group will contain
<code>64kb * 256 = 16Mb</code>. Larger group sizes would reduce number of splits required to run map-reduce
tasks, but will increase inequality of data size being stored on different nodes.
<p>
Note that <a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#getGroupSize()"><code>getGroupSize()</code></a> parameter must correlate to Hadoop split size parameter defined
in Hadoop via <code>mapred.max.split.size</code> property. Ideally you want all blocks accessed
within one split to be mapped to <code>1</code> group, so they can be located on the same grid node.
For example, default Hadoop split size is <code>64mb</code> and default <code>IGFS</code> block size
is <code>64kb</code>. This means that to make sure that each split goes only through blocks on
the same node (without hopping between nodes over network), we have to make the <a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#getGroupSize()"><code>getGroupSize()</code></a>
value be equal to <code>64mb / 64kb = 1024</code>.
<p>
It is required for <code>IGFS</code> data cache to be configured with this mapper. Here is an
example of how it can be specified in XML configuration:
<pre name="code" class="xml">
&lt;bean id="cacheCfgBase" class="org.apache.ignite.cache.CacheConfiguration" abstract="true"&gt;
...
&lt;property name="affinityMapper"&gt;
&lt;bean class="org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper"&gt;
&lt;!-- How many sequential blocks will be stored on the same node. --&gt;
&lt;property name="groupSize" value="512"/&gt;
&lt;/bean&gt;
&lt;/property&gt;
...
&lt;/bean&gt;
</pre></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../serialized-form.html#org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper">Serialized Form</a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#DFLT_GRP_SIZE">DFLT_GRP_SIZE</a></strong></code>
<div class="block">Default group size.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper</h3>
<code>ignite, log</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#IgfsGroupDataBlocksKeyMapper()">IgfsGroupDataBlocksKeyMapper</a></strong>()</code>
<div class="block">Default constructor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#IgfsGroupDataBlocksKeyMapper(int)">IgfsGroupDataBlocksKeyMapper</a></strong>(int&nbsp;grpSize)</code>
<div class="block">Constructs affinity mapper to group several data blocks with the same key.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#affinityKey(java.lang.Object)">affinityKey</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">If key class has annotation <a href="../../../../org/apache/ignite/cache/affinity/AffinityKeyMapped.html" title="annotation in org.apache.ignite.cache.affinity"><code>AffinityKeyMapped</code></a>,
then the value of annotated method or field will be used to get affinity value instead
of the key itself.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#getGroupSize()">getGroupSize</a></strong>()</code>
<div class="block">Get group size.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html" title="class in org.apache.ignite.igfs">IgfsGroupDataBlocksKeyMapper</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#setGroupSize(int)">setGroupSize</a></strong>(int&nbsp;grpSize)</code>
<div class="block">Set group size.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#toString()">toString</a></strong>()</code></td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper</h3>
<code>affinityKeyPropertyName, ignite, reset</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="DFLT_GRP_SIZE">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DFLT_GRP_SIZE</h4>
<pre>public static final&nbsp;int DFLT_GRP_SIZE</pre>
<div class="block">Default group size.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper.DFLT_GRP_SIZE">Constant Field Values</a></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="IgfsGroupDataBlocksKeyMapper()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>IgfsGroupDataBlocksKeyMapper</h4>
<pre>public&nbsp;IgfsGroupDataBlocksKeyMapper()</pre>
<div class="block">Default constructor.</div>
</li>
</ul>
<a name="IgfsGroupDataBlocksKeyMapper(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>IgfsGroupDataBlocksKeyMapper</h4>
<pre>public&nbsp;IgfsGroupDataBlocksKeyMapper(int&nbsp;grpSize)</pre>
<div class="block">Constructs affinity mapper to group several data blocks with the same key.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grpSize</code> - Size of the group in blocks.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="affinityKey(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>affinityKey</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;affinityKey(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">If key class has annotation <a href="../../../../org/apache/ignite/cache/affinity/AffinityKeyMapped.html" title="annotation in org.apache.ignite.cache.affinity"><code>AffinityKeyMapped</code></a>,
then the value of annotated method or field will be used to get affinity value instead
of the key itself. If there is no annotation, then the key is returned as is.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/ignite/cache/affinity/AffinityKeyMapper.html#affinityKey(java.lang.Object)">affinityKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/ignite/cache/affinity/AffinityKeyMapper.html" title="interface in org.apache.ignite.cache.affinity">AffinityKeyMapper</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code>affinityKey</code>&nbsp;in class&nbsp;<code>org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - Key to get affinity key for.</dd>
<dt><span class="strong">Returns:</span></dt><dd>Affinity key for given key.</dd></dl>
</li>
</ul>
<a name="getGroupSize()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGroupSize</h4>
<pre>public&nbsp;int&nbsp;getGroupSize()</pre>
<div class="block">Get group size.
<p>
Group size defines how many sequential file blocks will reside on the same node. This parameter
must correlate to Hadoop split size parameter defined in Hadoop via <code>mapred.max.split.size</code>
property. Ideally you want all blocks accessed within one split to be mapped to <code>1</code> group,
so they can be located on the same grid node. For example, default Hadoop split size is <code>64mb</code>
and default <code>IGFS</code> block size is <code>64kb</code>. This means that to make sure that each split
goes only through blocks on the same node (without hopping between nodes over network), we have to
make the group size be equal to <code>64mb / 64kb = 1024</code>.
<p>
Defaults to <a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#DFLT_GRP_SIZE"><code>DFLT_GRP_SIZE</code></a>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Group size.</dd></dl>
</li>
</ul>
<a name="setGroupSize(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setGroupSize</h4>
<pre>public&nbsp;<a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html" title="class in org.apache.ignite.igfs">IgfsGroupDataBlocksKeyMapper</a>&nbsp;setGroupSize(int&nbsp;grpSize)</pre>
<div class="block">Set group size. See <a href="../../../../org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html#getGroupSize()"><code>getGroupSize()</code></a> for more information.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grpSize</code> - Group size.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this</code> for chaining.</dd></dl>
</li>
</ul>
<a name="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/IgfsGroupDataBlocksKeyMapper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/ignite/igfs/IgfsFile.html" title="interface in org.apache.ignite.igfs"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/ignite/igfs/IgfsInputStream.html" title="class in org.apache.ignite.igfs"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/ignite/igfs/IgfsGroupDataBlocksKeyMapper.html" target="_top">Frames</a></li>
<li><a href="IgfsGroupDataBlocksKeyMapper.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px"> <tr> <td> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <a target=_blank href="https://ignite.apache.org"><nobr>2017 Copyright &#169; Apache Software Foundation</nobr></a> </td> </tr> </tbody> </table> </td> <td width="100%" align="right" valign="center"> <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>2.1.0</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; July 20 2017 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>