blob: 89d41b6deb5f7750787e383b84062679cd286460 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Documentation/Bundle org.eclipse.smila.zookeeper,SMILA/Documentation/JobManagerConfiguration" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Documentation/Bundle org.eclipse.smila.zookeeper - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "http://wiki.eclipse.org/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper";
var wgTitle = "SMILA/Documentation/Bundle org.eclipse.smila.zookeeper";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "36200";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "293512";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<style type="text/css">/*<![CDATA[*/
.source-text {line-height: normal; font-size: medium;}
.source-text li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for text
* CSS class: source-text, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-text .de1, .source-text .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-text {}
.source-text .head {}
.source-text .foot {}
.source-text .imp {font-weight: bold; color: red;}
.source-text .ln-xtra {color: #cc0; background-color: #ffc;}
.source-text li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-text li.li2 {font-weight: bold;}
/*]]>*/
</style>
<style type="text/css">/*<![CDATA[*/
@import "http://wiki.eclipse.org/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
/*]]>*/
</style><link rel="stylesheet" type="text/css" href="Bundle_org.eclipse.smila.zookeeper.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Documentation_Bundle_org_eclipse_smila_zookeeper">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper&amp;oldid=293512">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="Bundle_org.eclipse.smila.zookeeper.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Bundle&#32;org.eclipse.smila.zookeeper"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Documentation/Bundle org.eclipse.smila.zookeeper</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../SMILA.html" title="SMILA">SMILA</a> | <a href="../Documentation.1.html" title="SMILA/Documentation">Documentation</a></span></div>
<div id="jump-to-nav">Jump to: <a href="Bundle_org.eclipse.smila.zookeeper.html#column-one">navigation</a>, <a href="Bundle_org.eclipse.smila.zookeeper.html#searchInput">search</a></div> <!-- start content -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Bundle_org.eclipse.smila.zookeeper.html#Bundle_org.eclipse.smila.zookeeper"><span class="tocnumber">1</span> <span class="toctext">Bundle org.eclipse.smila.zookeeper</span></a>
<ul>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.zookeeper.html#Configuration"><span class="tocnumber">1.1</span> <span class="toctext">Configuration</span></a></li>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.zookeeper.html#Configuration_of_data_directories"><span class="tocnumber">1.2</span> <span class="toctext">Configuration of data directories</span></a>
<ul>
<li class="toclevel-3"><a href="Bundle_org.eclipse.smila.zookeeper.html#Setting_up_a_RAM_disk_on_Linux"><span class="tocnumber">1.2.1</span> <span class="toctext">Setting up a RAM disk on Linux</span></a></li>
<li class="toclevel-3"><a href="Bundle_org.eclipse.smila.zookeeper.html#Setting_up_a_RAM_disk_on_Windows"><span class="tocnumber">1.2.2</span> <span class="toctext">Setting up a RAM disk on Windows</span></a></li>
<li class="toclevel-3"><a href="Bundle_org.eclipse.smila.zookeeper.html#Setting_up_a_RAM_disk_on_OSX"><span class="tocnumber">1.2.3</span> <span class="toctext">Setting up a RAM disk on OSX</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.zookeeper.html#Notes_on_Cluster_configuration"><span class="tocnumber">1.3</span> <span class="toctext">Notes on Cluster configuration</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="Bundle_org.eclipse.smila.zookeeper"></a><h1> <span class="mw-headline"> Bundle org.eclipse.smila.zookeeper </span></h1>
<p>This bundle provides a service that manages a <a href="http://hadoop.apache.org/zookeeper" class="external text" title="http://hadoop.apache.org/zookeeper" rel="nofollow">Apache ZooKeeper</a> server embedded into SMILA. ZooKeeper is used in SMILA by other services as some kind of "memory shared over multiple cluster nodes" to coordinate application state and work. The main users are the JobManager and TaskManager services that store information about running jobs and task queues in ZooKeeper.
</p><p>The service performs the following tasks:
</p>
<ul><li> Create ZooKeeper configuration from cluster configuration
</li><li> Start and watch an embedded ZooKeeper server, either a stand-alone for single-node clusters or a QuorumPeer for multi-node clusters.
</li><li> Restart the local ZooKeeper server if it fails during operation
</li><li> Garbage collection in the local ZooKeeper data directory.
</li><li> Creating ZooKeeper clients connected to the cluster for use by other services.
</li></ul>
<a name="Configuration"></a><h2> <span class="mw-headline"> Configuration </span></h2>
<p>The configuration file is named <tt>zoo.cfg</tt> and can be found in <tt>configuration/org.eclipse.smila.zookeeper</tt> in an installation. This is the default file as contained in the bundle itself:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-text"># ZooKeeper configuration file
&nbsp;
# The number of milliseconds of each tick.
tickTime=2000
&nbsp;
# The number of ticks that the initial synchronization phase can take.
initLimit=10
&nbsp;
# The number of ticks that can pass between sending a request
# and getting an acknowledgement.
syncLimit=5
&nbsp;
# The directory where the snapshot is stored.
# If not defined here, set by Zookeeper service to somewhere in the SMILA workspace dir.
# dataDir=
&nbsp;
# The directory where the transaction log is stored.
# If not defined here, set by Zookeeper service to the same value as dataDir
# dataLogDir=
&nbsp;
# After snapCount transactions are written to a log file a snapshot is started and a new transaction log file is created.
# The default snapCount is 100,000.
snapCount=100000
&nbsp;
# The port at which the clients will connect.
clientPort=2181
&nbsp;
# Session timeout.
maxSessionTimeout=30000
&nbsp;
# Limit on number of concurrent connections (at the socket level) that
# a single client, identified by IP address, may make to a single member of
# the ZooKeeper ensemble. Default is 10. Set high to avoid zk connection
# issues running standalone and pseudo-distributed.
# (0 -&gt; unlimited)
maxClientCnxns=0
&nbsp;
# The port used by followers to connect to the leader.
zk.serverPort=2888
&nbsp;
# The port for leader election.
zk.electionPort=3888
&nbsp;
# number of snapshots to keep in data directory.
zk.snapshotsToKeep=5</pre></div>
<p>Usually you do not need to edit this file. Most properties are defined by ZooKeeper itself, so refer to the <a href="http://hadoop.apache.org/zookeeper/docs/current/" class="external text" title="http://hadoop.apache.org/zookeeper/docs/current/" rel="nofollow">ZooKeeper documentation</a> for their meaning or other properties to add. You may need to change the <tt>...Port</tt> properties if these ports are already in use on your machines.
</p>
<a name="Configuration_of_data_directories"></a><h2> <span class="mw-headline"> Configuration of data directories </span></h2>
<p>For best performance, the Zookeeper documentation recommends to put the snapshot and transaction log directories on separate harddisks on which nothing else is stored. Usually Zookeeper works fine without this separation. However, with very high IO load caused by other SMILA components, it is possible that Zookeeper operations are delayed so much that performance may suffer. In such cases you should try to move the zookeeper data directories away from the device storing the SMILA data directory. You can do this by setting the properties <tt>dataDir</tt> and optionally <tt>dataLogDir</tt>, for example:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-text">dataDir=/mnt/ramdisk/zk/snapshots
dataLogDir=/mnt/ramdisk/zk/txnlogs</pre></div>
<p>If only <tt>dataDir</tt> is set, both snapshots and transaction logs are written to this directory. For even more extreme cases you may want to separate even the transaction logs from the snapshots. In this cases you can set the property <tt>dataLogDir</tt> to specify a different directory for the transaction logs.
</p><p>Alternatively you can use the environment variable <tt>SMILA_ZK_DATADIR</tt> to specify the <tt>dataDir</tt> and <tt>dataLogDir</tt> without changing configuration files. Settings in the zoo.cfg will override the environment variable.
</p><p>If you do not have appropriate additional devices available in your cluster machines, you should consider the use of RAM disks to put the Zookeeper data in: Create a RAM disk (see below and set the ZK datadir to a directory in the RAM disk (not the RAM disk itself). In this case you may also want to change the value of property <tt>zk.snapshotsToKeep</tt> in order to minimize the necessary size of this RAM disk: If certain limits are reached, Zookeeper creates a new snapshot in <tt>dataDir</tt> and starts a new transaction log in <tt>dataLogDir</tt>. Another thread in the SMILA Zookeeper service cleans up these directories regularly by removing the obsolete snapshot and transaction log files. The property <tt>zk.snapshotsToKeep</tt> determines how many of the most current snapshot and log files should be kept. The default value of 5 is a recommendation from the Zookeeper documentation, but it should be safe to reduce this if necessary. <b>The minimal value is 3. If you set a lower value, it is increased to 3 automatically.</b> In any case, you should be safe with a maximum size setting of 500MB for the RAM disk (it doesn't use the complete space immediately, but only on demand, so it's no problem to set the limit higher than absolutely necessary).
</p><p>If you still have problems with tasks being retried because keep-alive cannot be delivered you should consider to increase the time-to-live configuration of the <a href="JobManagerConfiguration.html" title="SMILA/Documentation/JobManagerConfiguration">Job- and TaskManager</a>.
</p>
<a name="Setting_up_a_RAM_disk_on_Linux"></a><h3> <span class="mw-headline"> Setting up a RAM disk on Linux </span></h3>
<ul><li> Create a directory for the RAM disk: <tt>mkdir /mnt/ramdisk</tt> (can be at any location)
</li><li> Add an entry to the file system table: <tt>sudo vi /etc/fstab</tt> and add a line like (you can reduce the maximum size, but the memory is only allocated if needed anyway):
</li></ul>
<div dir="ltr" style="text-align: left;"><pre class="source-text">tmpfs /mnt/ramdisk tmpfs size=500M 0 0</pre></div>
<ul><li> Mount the RAM disk: <tt>sudo mount /mnt/ramdisk</tt>
</li></ul>
<p>Alternatively you can use the <tt>ramfs</tt> filesystem which does not need a size limit. However, by default access to <tt>ramfs</tt> filesystem is allowed for root only, so you have to do some additional actions to make it accessible for SMILA (which you usually don't want to run as root&nbsp;;-).
</p>
<a name="Setting_up_a_RAM_disk_on_Windows"></a><h3> <span class="mw-headline"> Setting up a RAM disk on Windows </span></h3>
<p>A possibility to create RAM disks on Windows is to use a special RAM disk program, such as "Dataram RAMDisk".
It is freeware for RAM disk size &lt; 4 GB, which is ok for us.
</p>
<ul><li> Download from <a href="http://memory.dataram.com/products-and-services/software/ramdisk" class="external free" title="http://memory.dataram.com/products-and-services/software/ramdisk" rel="nofollow">http://memory.dataram.com/products-and-services/software/ramdisk</a>
</li><li> Install the msi package
</li><li> Start RAM disk configuration utility (which annoyingly also opens an advertisement popup ... sorry)
</li><li> set the disk size
</li><li> select "unformatted"
</li><li> start RAM disk
</li><li> manually initialize RAM disk and format it with NTFS
</li><li> create a compressed folder on your disk
</li><li> save RAM disk (in the compressed folder, since saving the RAM disk takes a long time if the folder is not compressed.)
</li><li> select "load RAM disk at startup" and point it to the just created RAM disk image
</li><li> if you want you can also select "save RAM disk at shutdown".
</li></ul>
<p>After each reboot the RAM disk will be initialized and attached.
</p>
<a name="Setting_up_a_RAM_disk_on_OSX"></a><h3> <span class="mw-headline"> Setting up a RAM disk on OSX </span></h3>
<p>(does anybody know?&nbsp;;-)
</p>
<a name="Notes_on_Cluster_configuration"></a><h2> <span class="mw-headline"> Notes on Cluster configuration </span></h2>
<p>Using the cluster configuration service you can define a "failsafety level" for tasks. This actually affects the ZooKeeper setup in the cluster: To be able to tolerate n ZooKeeper failures, a ZooKeeper ensemble must consist of at least 2*n+1 nodes because a majority of the ensemble must still be available to confirm write requests. Thus by default a cluster of m nodes can tolerate m/2-1 node failures (m/2 rounded up for odd values of m).
</p><p>For large clusters it can be a performance problem if the complete cluster is used as the voting ensemble in ZooKeeper as each node must be asked in a write request to confirm the request. Therefore it is possible to reduce the "failsafety level". Setting a lower fail-safety level has the effect that only (max_fail_nodes*2 + 1) nodes are configured as the voting ZooKeeper ensemble, while the ZooKeepers on the rest of the nodes are configured as "observers". Then, at most max_fail_nodes of the voting ensemble may fail and operation will still proceed. Of the "observer" nodes, any number may fail.
</p><p>It is currently not possible to configure max_fail_nodes=0 (which would mean that there is only 1 voting server) in a multi-node cluster as there need to be at least two voting ZooKeeper server for the voting algorithms to work. Setting this value will use the default value (max. failsafety).
</p><p>Actually, in clusters with an even number of nodes greater than 3, there will be always at least one observer node, even if you choose the default setting, because a cluster with an even number of nodes does not provide more failsafety than a cluster with one node less. In a 2-node cluster both nodes will have voting servers, but there is also no additional failsafety. Which means: It does not make any sense to use a 2-node cluster. Use 3 nodes instead.
</p>
<!--
NewPP limit report
Preprocessor node count: 36/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:36200-0!1!0!!en!2!edit=0 and timestamp 20130416060959 -->
<div class="printfooter">
Retrieved from "<a href="Bundle_org.eclipse.smila.zookeeper.html">http://wiki.eclipse.org/SMILA/Documentation/Bundle_org.eclipse.smila.zookeeper</a>"</div>
<div id="catlinks"><p class='catlinks'><a href="http://wiki.eclipse.org/Special:Categories" title="Special:Categories">Category</a>: <span dir='ltr'><a href="http://wiki.eclipse.org/Category:SMILA" title="Category:SMILA">SMILA</a></span></p></div> <!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2013 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 08:19, 12 March 2012 by <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit" class="new" title="User:Juergen.schumacher.attensity.com">Juergen Schumacher</a>. </p>
<p id="footerviews">This page has been accessed 693 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.063 secs. --></body></html>