<!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>
