You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ma...@apache.org on 2009/06/23 20:38:34 UTC

svn commit: r787780 [2/3] - in /hadoop/zookeeper/trunk: ./ docs/ src/docs/src/documentation/content/xdocs/

Added: hadoop/zookeeper/trunk/docs/bookkeeperStarted.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperStarted.html?rev=787780&view=auto
==============================================================================
--- hadoop/zookeeper/trunk/docs/bookkeeperStarted.html (added)
+++ hadoop/zookeeper/trunk/docs/bookkeeperStarted.html Tue Jun 23 18:38:33 2009
@@ -0,0 +1,439 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8">
+<meta name="Forrest-skin-name" content="pelt">
+<title>BookKeeper Getting Started Guide</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/zookeeper/">ZooKeeper</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://hadoop.apache.org/zookeeper/"><img class="logoImage" alt="ZooKeeper" src="images/zookeeper_small.gif" title="ZooKeeper: distributed coordination"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="hadoop.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://hadoop.apache.org/zookeeper/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">ZooKeeper 3.2 Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">Overview</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperOver.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperStarted.html">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="releasenotes.html">Release Notes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Developer</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="api/index.html">API Docs</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperProgrammers.html">Programmer's Guide</a>
+</div>
+<div class="menuitem">
+<a href="javaExample.html">Java Example</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperTutorial.html">Barrier and Queue Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="recipes.html">Recipes</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">BookKeeper</div>
+<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menupage">
+<div class="menupagetitle">Getting started</div>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperAdmin.html">Administrator's Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperQuotas.html">Quota Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperJMX.html">JMX</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="zookeeperInternals.html">ZooKeeper Internals</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ">FAQ</a>
+</div>
+<div class="menuitem">
+<a href="http://hadoop.apache.org/zookeeper/mailing_lists.html">Mailing Lists</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="bookkeeperStarted.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>BookKeeper Getting Started Guide</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#bk_GettingStarted">Getting Started: Setting up BookKeeper to write logs.</a>
+<ul class="minitoc">
+<li>
+<a href="#bk_Prerequisites">Pre-requisites</a>
+</li>
+<li>
+<a href="#bk_Download">Download</a>
+</li>
+<li>
+<a href="#bk_localBK">LocalBookKeeper</a>
+</li>
+<li>
+<a href="#bk_setupBookies">Setting up bookies</a>
+</li>
+<li>
+<a href="#bk_setupZK">Setting up ZooKeeper</a>
+</li>
+<li>
+<a href="#bk_example">Example</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+  
+
+  
+  
+<a name="N10009"></a><a name="bk_GettingStarted"></a>
+<h2 class="h3">Getting Started: Setting up BookKeeper to write logs.</h2>
+<div class="section">
+<p>This document contains information to get you started quickly with
+    BookKeeper. It is aimed primarily at developers willing to try it out, and
+    contains simple installation instructions for a simple BookKeeper installation
+    and a simple programming example. For further programming detail, please refer to 
+    <a href="bookkeeperProgrammer.html">BookKeeper Programmer's Guide</a>.
+    </p>
+<a name="N10016"></a><a name="bk_Prerequisites"></a>
+<h3 class="h4">Pre-requisites</h3>
+<p>See <a href="bookkeeperConfig.html#bk_sysReq">
+    	      System Requirements</a> in the Admin guide.</p>
+<a name="N10024"></a><a name="bk_Download"></a>
+<h3 class="h4">Download</h3>
+<p> BookKeeper is distributed along with ZooKeeper. To get a ZooKeeper distribution, 
+			   download a recent
+    	    <a href="http://hadoop.apache.org/zookeeper/releases.html">
+        	  stable</a> release from one of the Apache Download
+       	 Mirrors.</p>
+<a name="N10032"></a><a name="bk_localBK"></a>
+<h3 class="h4">LocalBookKeeper</h3>
+<p> Under org.apache.bookkeeper.util, you'll find a java program
+		called LocalBookKeeper.java that sets you up to run BookKeeper on a 
+		single machine. This is far from ideal from a performance perspective,
+		but the program is useful for both test and educational purposes.
+		</p>
+<a name="N1003C"></a><a name="bk_setupBookies"></a>
+<h3 class="h4">Setting up bookies</h3>
+<p> If you're bold and you want more than just running things locally, then
+		you'll need to run bookies in different servers. You'll need at least three bookies
+		to start with.  
+		</p>
+<p>
+		For each bookie, we need to execute a command like the following:
+		</p>
+<p>
+<span class="codefrag computeroutput">
+		java -cp .:./zookeeper-dev-bookkeeper.jar:./zookeeper-dev.jar:../log4j/apache-log4j-1.2.15/log4j-1.2.15.jar\
+		-Dlog4j.configuration=log4j.properties org.apache.bookkeeper.proto.BookieServer 3181 /path_to_log_device/\
+		/path_to_ledger_device/
+		</span>
+</p>
+<p> "/path_to_log_device/" and "/path_to_ledger_device/" are different paths. Also, port 3181
+		is the port that a bookie listens on for connection requests from clients. 
+		</p>
+<a name="N10051"></a><a name="bk_setupZK"></a>
+<h3 class="h4">Setting up ZooKeeper</h3>
+<p> ZooKeeper stores metadata on behalf of BookKeeper clients and bookies. To get a minimal 
+	  	ZooKeeper installation to work with BookKeeper, we can set up one server running in
+	  	standalone mode. Once we have the server running, we need to create a few znodes:
+	  	</p>
+<ol>
+	  	
+<li>
+	  	
+<p>
+<span class="codefrag computeroutput">
+	  	/ledgers	
+	  	</span>
+</p>
+	  	
+</li>
+	  	
+	  	
+<li>
+	  	
+<p>
+<span class="codefrag computeroutput">
+	  	/ledgers/available
+	  	</span>
+</p>
+	  	
+</li>
+	  	
+	  	
+<li>
+	  	
+<p> For each bookie, we add one znode such that the name of the znode is the
+	  	concatenation of the machine name and the port number that the bookie is 
+	  	listening on. For example, if a bookie is running on bookie.foo.com an is listening 
+	  	on port 3181, we add a znode 
+	  	<span class="codefrag computeroutput">/ledgers/available/bookie.foo.com:3181</span>.  
+	  	</p>
+	  	
+</li>
+	  	
+</ol>
+<a name="N10078"></a><a name="bk_example"></a>
+<h3 class="h4">Example</h3>
+<p>
+	    In the following excerpt of code, we:
+	    </p>
+<ol>
+	    	
+<li>
+	    	
+<p>
+	    	Create a ledger;
+	    	</p>
+	    	
+</li>
+	    	
+	    	
+<li>
+	    	
+<p>
+	    	Write to the ledger;
+	    	</p>
+	    	
+</li>
+	    	
+	    	
+<li>
+	    	
+<p>
+	    	Close the ledger;
+	    	</p>
+	    	
+</li>
+	    	
+	    	
+<li>
+	    	
+<p>
+	    	Open the same ledger for reading;
+	    	</p>
+	    	
+</li>
+	    	
+	    	
+<li>
+	    	
+<p>
+	    	Read from the ledger;
+	    	</p>
+	    	
+</li>
+	    	
+	    	
+<li>
+	    	
+<p>
+	    	Close the ledger again;
+	    	</p>
+	    	
+</li>
+	    
+</ol>
+<pre class="code">
+LedgerHandle lh = bkc.createLedger(ledgerPassword);
+ledgerId = lh.getId();
+ByteBuffer entry = ByteBuffer.allocate(4);
+
+for(int i = 0; i &lt; 10; i++){
+	entry.putInt(i);
+	entry.position(0);
+	entries.add(entry.array());				
+	lh.addEntry(entry.array());
+}
+lh.close();
+lh = bkc.openLedger(ledgerId, ledgerPassword);		
+			
+LedgerSequence ls = lh.readEntries(0, 9);
+int i = 0;
+while(ls.hasMoreElements()){
+	ByteBuffer origbb = ByteBuffer.wrap(
+				entries.get(i++));
+	Integer origEntry = origbb.getInt();
+	ByteBuffer result = ByteBuffer.wrap(
+				ls.nextElement().getEntry());
+
+	Integer retrEntry = result.getInt();
+}
+lh.close();
+	    </pre>
+</div>
+
+<p align="right">
+<font size="-2"></font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Added: hadoop/zookeeper/trunk/docs/bookkeeperStarted.pdf
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperStarted.pdf?rev=787780&view=auto
==============================================================================
--- hadoop/zookeeper/trunk/docs/bookkeeperStarted.pdf (added)
+++ hadoop/zookeeper/trunk/docs/bookkeeperStarted.pdf Tue Jun 23 18:38:33 2009
@@ -0,0 +1,407 @@
+%PDF-1.3
+%ª«¬­
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 648 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gaua=9lldX&;KZO$6AM$[e^2SX4sF+D%H#e;q`4q/NZW4+s>L^^TRbH&t+\uRMeU8d#),2SsL1$O[\^k(nr!(au0iT[oJ+/2BiF]MkJRZ8WJAD"D,(+kA6jbn#o@6WgTV<)CP7Sm'AIEW4%05dc?BblbI"3XOS:rU[1X?1@6lXdKmr[ZA19[qnY?`KKnYF"^jZCpFK[;b,#d>d7eJ+J#+Zj.ann!#t49-5(]c'O:kr+oFmD7SN_&^i^`Ef!e&W)"l9J/:L/.OmuLK9a,K`jI8cM`YLM;Bk,@U`Il0/d!mEN^B(V`UmL9NIJ.1GQ6$Xj\0b4!8W3\tLm>BJ(['*[./"1#rK#,jY4Q2BJAie$r$M^Fk<N5T_>L>VY;^Pk%/1&4UR8"o]!T3N!0>g[O0tF-?8RL!<-sE3mn?dS32@MRTTpJf6iq0)8(4bFOJtj#f3;DWeQrY=<32jWXegE*Q<ri"!oTh6,W6&cM0];kIITsE_k7.00c^`!Bd6I'Oo.7K=:@dhS,do%/]DV*A@%[QY$>lLZdDGh_cp8]]$$El5rr<TR+I*#)(-h5t5O/*Z.CM1T+7HtC+Prh0-f3!`PW(eUq'ra)ou?@i-5a;?]5!n+6<=_OQ)-FNghgH"<],BV)Edj\(6R4l~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 5 0 R
+/Annots 7 0 R
+>>
+endobj
+7 0 obj
+[
+8 0 R
+10 0 R
+12 0 R
+14 0 R
+16 0 R
+18 0 R
+20 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 529.541 367.988 517.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 9 0 R
+/H /I
+>>
+endobj
+10 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 511.341 189.488 499.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 11 0 R
+/H /I
+>>
+endobj
+12 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 493.141 173.492 481.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 13 0 R
+/H /I
+>>
+endobj
+14 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 474.941 211.472 462.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 456.741 212.84 444.741 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 17 0 R
+/H /I
+>>
+endobj
+18 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 438.541 229.484 426.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 19 0 R
+/H /I
+>>
+endobj
+20 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 420.341 166.16 408.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 21 0 R
+/H /I
+>>
+endobj
+22 0 obj
+<< /Length 2140 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat%$968iG&AII3E,nN2'>XeWOAoh<LmuDJVO^:gp!>Uf$r'&&D3@^\dZ44j]6l7WcrMNL(_F7(Dti#Jj`Ye:5&_ntY-Zrd>UNfSa+]#mfsl"aF,s/DGIE4spFAjbE7R^ipTL`1?"[_0?X23FY%@/.h&JZ-*9P!hQ+Hi@j[&2-Y#b/O%m$cQI*>SoJbFS`m4YN4\#XFTAS^P\WjgF:,kQM?G7UnQ7M+tq7n`#Wp&"$[ohd]5ofeiD0hQ];]=6U/eZ:K&EDsraSo8(<ekoJBB<lQUF:m&k.d^Q<'#"=DRe]eQiL2F62-G<n5GAEop"gH;P_9Q<3jq2oMH4g8/^mua,]%GoTX,ij)-.UuH&92#\H70o2CZt3N+-.0N?i(+P%s:684T(1("+Q^%_9M$L.LG%;2j76h8J\,H5D`qo[s'XJ.-Yks&bHoO`p,H$dl9I#H^lE'nm5Tq)rJb6<S\sc/(=hhR=h6N"7?DVrUuK-PD$!UKE/?W'U]&\N?t'\Y=CEcK?]j`I(994t(N0+#nu70h).(j$iCG,SYh$i*?$<28#qfB<lap1#%WhCfPhXVU[2ge9`Z1*!t7O_AQ\p0NpQQ31KeZ#dMl4X!NBmnZ>"FUqTb._@utT&d\3D_:+=K_,j?saMCd0aCgq4ZXYZUR_NKLN']f/JoGQ(\Fk@"EigY[WsW$P[Fg]I#?%8PfT`)WZ?&(4nA'*+R!C:F6Kfk@M8p`KCdU1!6Us/td%>7%60TZ6;#4;EZ<5P%UnuT\5-=QY7!Ku/;.2GjR.fcED"$OF(L"7X<E[brBR&fPL'_XV>/]0k^qZ]tVOe$Nl]QdT&M+?Ajdg]GEtp!Z0]>hq_*m*EjSU!^n6eUGT:\"W)]^7CYXN`a(jm:a$MR;ZD?!N!KP\+j]H154ZR?%cH#7?_h"M*q>tLo4=eogNG6<[BR*[QG!<[<])D?#+"_>@KY`(MR'uV@$)$M")PM8,+UNFk5T%<IgF`pq'BGr;
 H:MR?A_a>-uo=L3rr0D'!FS.1C\`^lO_a\Hg.&4PW36LWiA3uMH"i8hFNgBe:cb_)(eJh,-c$tra7YT8>M)la#%2a'9K+1(tko0iHQ[+SmR4Sgg\'[?"%C6)(Z=&@%cp.)joWMJ\ku&.Q%b,hf*EKJK$q'D\5+W:-KDLJ-A;q0/:K:t`VlBfmQBc]F1'`%$pFale3/#!]j\%gA_r6:m&S!f9no".S@m'7s[![rhQJP9!7]?7hPb2IngYPnMf3f!VR!>BF])injr<T/d-;E9TYLqMqUCXAfcPMWiJ8aX`/09h'roA7S@QJjF2XoWZ?gt=pTQe2$B9\YD"b__@.f$;)&GT-rCd=RC7)T)k6\ID26=Ca^G_F/m#0.Rr>ah,n?nt1(bM*rY+(#tT027(=D3kl:kXjT4cj3R@4,.4%pUn"D#26oGDlg70eG$7aT&\(f:YLFo^[:FnTXC#MbhHCeQ<obrM:FPO!E0HA)=*E<i]gIu@f.@pM5^>)is(!=5i!bf7:EtXcgD38?t*&[Xr\_SDl,SLfQ#)Bo_(e1L2QCjSWIuAY_@W'+lVH#j:/Zp(OYTgjr-/L2'S%780@lehiWh%V>U%]kF$I:=LZ`s'c6Yl55jT$eHd>\Ea-<E?6ZV[n$9=J?!$j,^Onu[Wp@4V9ei0_:pi)$#cJKKm.,GXJTHj57mh#+$a`$ijPga$qldF($3kp4&7i&YBUp&qbeM=HQ$Rgg9&)bN@;[bHmY+BWMhO(\@R25f*d8PrQ*pa5NP<XfKsuD_MlDaM-Bci6d1)^6AMTAkbN/N`\DV=G^oE&P_-da3#RaI-b1QWPdOpZt>aV]((68!fh.`HlWKo`$5CK=AkHYejee`Rg$D7)GSTlVDDhk1E,Kq2%+j3VWeNbt4m6]B$'%N+-N]1u#jbW6lcto2HL9N8fEbNi"F0U:m0Itih@`S[nTKQ_u3Gd,?/5?0_U24=Db^ogq$_J<oNi0MTq0V?'*;Z<_X?5
 [.(F[Hl$u#a]h7)7sQkap`S,f=scuT3d@5-@-.8$G1N?RJ`gLh6:-5LQO<ZVT"ET7ESjP]/S$iZq3O#fr.?0HmENRnsnk^6jB)pY?u?[2NX??H&8[G'.A6Y#=uhQ*MI\n4U^CHYbnLJE&IcEcL)"FW!(%m`1`UA~>
+endstream
+endobj
+23 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 22 0 R
+/Annots 24 0 R
+>>
+endobj
+24 0 obj
+[
+25 0 R
+26 0 R
+27 0 R
+]
+endobj
+25 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 261.96 590.066 424.752 578.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (bookkeeperProgrammer.html)
+/S /URI >>
+/H /I
+>>
+endobj
+26 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 110.328 538.813 215.328 526.813 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (bookkeeperConfig.html#bk_sysReq)
+/S /URI >>
+/H /I
+>>
+endobj
+27 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 180.972 474.36 208.968 462.36 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://hadoop.apache.org/zookeeper/releases.html)
+/S /URI >>
+/H /I
+>>
+endobj
+28 0 obj
+<< /Length 1732 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GatU4>Ar7S'Roe[d%c6%$nn>'2;?#(,[ItjmFhOB2Xc4*BNqDd\rn$\)tr05F>G@M['^?/;pdTfhmn-t@bj4CmN*`_-cB6*^NYkI,O>S"!5Eqg4hor,5X&U_Y.XSkQc\X6$\WO7=Q7s,g`mO4o!k4JqA+f-i\`YT703+qa,TijoJ`n%<,/K)/+3qLPtdID-tSji1=;Nc[++5`YOaEu.4Nm2FK>)$7cS8W7%*4l['UUK1l'o<4R5\o;YcMn@D9pj,[8qK?[7-GO7/,LAJ+Jp8&;)SQ>'.`7`Pk(j+hHEL2C8?-gOa70AGW.5#WpPNp.`hZEtmRH!IA_3W,:rdDakkhs5W089Ea58rs<_h[)?"7jm:!LUB65[#<IWWoB;dMi/_18%\qt,=!qQp_`'q505(8o2K"Ij.S`>K4>+G45_UaY_0R><g&\P=Ho?YAJ=1HR#GM[/*fl27+g0RbI&lAN61/#3pEJ.lpuP&391i9>6&`M[U+;ld)JBHVVn"i)i.(K3UMLbEEq;agi>:,D<?")S-_RspL+leU]@$57BSGI<r;-/QCD`+B/!Hu7j9(Q,KOkjS2;1s.lJ3k;JWYd)`q7'_C\h;)%"D%<a(NjUq'<Wg^d2=h:1D+hlF5O*G:7hK`m-+:T(0di=RtIas9B6d&oM8<bCfhA@<CO#9P<10jf$tO+eDWfBhg3qGDbe:)_?3bX'CJ:/ejpAOns;<5,aQA(T'/!o?Su`RaC6#VeeD>-k8h<Uuljqg8()B_$Ch&O)kDFRXAT4NR+(rms9;dHptcMrIiCHlkeJ/L*<fmrQDWTh'=bR`].1WBd2qpIF/j&<RJ&_cF<=<:j@,@uO,:HXBT)#.@eq'kkoT;u$\t62n[n:B4k_kB<p&06(J61DC<O)cOk:nThJ)]oks1A+p%`!af@'6.HVqB_B,j:HU:;H1!nGHKR0AK7t:6VL),\+P-!&cnt9Sb<^qP,T7JJWm1GBAn';hh?:>CIVk[
 k237>^$e0!:c*^^?j[WGfYXumAX.,gMQ15E#UBPIO4N)jPko-['q%1lL/ld@RY\7%m^6Io+[p7KmDDeAob[1Qs)efH4$$<Rhbbi)^LI,Y6/Io"4#)db@F<uPFph!@^)tQUH,-P=tY5UJRm]:"<JUP:+;=,"Mm`L<d"?T@1DXZKh"g!2D(J2#-c)0-9Mal'VKlnnC"bN.)CK8G<QS2?"S-m+=7ANTE]"35ih&N,]N\lHhLV$+W4X_I-,*>/n<)r*l#Rt1?*m!L+Z%ek%BCS@eg1'%Y@T+AkPk6HiZhh73c*slO;rOHseM-H\O@+aRnAp=(TFH"J)G/!N/JOtaMs#P[U_(bW5\jO#XE/NNWXWLABMp`^:J(o0lqA/Z4B]qlQca9>bO'+lKL!GTmnugj3Mn+0L07G4/i&TG^bR7J`Mcb:A#o$frLpL,mQX^B3?_d#o_BB^F&hSTnpgF0"@;t$pB"pk\SSTMR8mDB<nNg*E.UF8$:M&>g`;3jJMVkU=[[YAQ(4mZ_I,OeBBo3eSpDRN:BhM,4@El4LA:6RVOF>JTL]48S%_g4frhc=cT[[N0:TE`7W+R2]a_W#M:@oJ@:S<apr&!ZC3D5AfguB"MgU=qCY2.f;EZF?\^_-qW&,uODS<P(*6*0;^!I!+]0/K!?\!RjH8-49rh_KoM)eFl6Z[Qip5J/'h%m`l>3F4X=mfj=I<)N8=^6HS7b4t(22<*^Yg07t(DJ)-\:4L.9WNj~>
+endstream
+endobj
+29 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 28 0 R
+>>
+endobj
+30 0 obj
+<< /Length 377 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat=d92gHs'SZ;W'mE4c]d=mUQI`=bkXI-clN/B/N"n$@Fo:t<U]W.fB,lZH\Ok*B%]bOnBB5U;.)VU=KH^Sr<-Sc'I4l6j$Clf_E_fa9g.bEN9dNWc/CqI\lS&?Y-2bLPOM]oS(MaKb"_9\]HR9X`#(f_5<(!lX`Y6GMi%\Cmc0ML>X`Y"REih(DMF3V3n#O$ibr.b0hA5^2VlHs/G_59oW"fA\5XmVG3=ppQf`CNdJF!\hL6DWf2DHHYN?6a?o$Yh3`/rI`A=[Yj&.R5X:3nZE0i8RB#W::reQ((I\Z4H^hTpkMd?[E`.Scr\<OTB3\8:c'WSTHns-^L@ADNd@,55)9j5ekO0T&'k377G5h1mS$r-.&q2N*h~>
+endstream
+endobj
+31 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 30 0 R
+>>
+endobj
+33 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\107\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\123\0\164\0\141\0\162\0\164\0\145\0\144\0\72\0\40\0\123\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\165\0\160\0\40\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\164\0\157\0\40\0\167\0\162\0\151\0\164\0\145\0\40\0\154\0\157\0\147\0\163\0\56)
+ /Parent 32 0 R
+ /First 34 0 R
+ /Last 39 0 R
+ /Count -6
+ /A 9 0 R
+>> endobj
+34 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\61\0\40\0\120\0\162\0\145\0\55\0\162\0\145\0\161\0\165\0\151\0\163\0\151\0\164\0\145\0\163)
+ /Parent 33 0 R
+ /Next 35 0 R
+ /A 11 0 R
+>> endobj
+35 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\62\0\40\0\104\0\157\0\167\0\156\0\154\0\157\0\141\0\144)
+ /Parent 33 0 R
+ /Prev 34 0 R
+ /Next 36 0 R
+ /A 13 0 R
+>> endobj
+36 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\63\0\40\0\114\0\157\0\143\0\141\0\154\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 33 0 R
+ /Prev 35 0 R
+ /Next 37 0 R
+ /A 15 0 R
+>> endobj
+37 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\64\0\40\0\123\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\165\0\160\0\40\0\142\0\157\0\157\0\153\0\151\0\145\0\163)
+ /Parent 33 0 R
+ /Prev 36 0 R
+ /Next 38 0 R
+ /A 17 0 R
+>> endobj
+38 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\65\0\40\0\123\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\165\0\160\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 33 0 R
+ /Prev 37 0 R
+ /Next 39 0 R
+ /A 19 0 R
+>> endobj
+39 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\66\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145)
+ /Parent 33 0 R
+ /Prev 38 0 R
+ /A 21 0 R
+>> endobj
+40 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+41 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+42 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+43 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+44 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+45 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 4
+/Kids [6 0 R 23 0 R 29 0 R 31 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 32 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F3 40 0 R /F5 41 0 R /F1 42 0 R /F9 43 0 R /F2 44 0 R /F7 45 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 567.066 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 515.813 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 451.36 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 373.707 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [23 0 R /XYZ 85.0 179.654 null]
+>>
+endobj
+21 0 obj
+<<
+/S /GoTo
+/D [29 0 R /XYZ 85.0 533.4 null]
+>>
+endobj
+32 0 obj
+<<
+ /First 33 0 R
+ /Last 33 0 R
+>> endobj
+xref
+0 46
+0000000000 65535 f 
+0000009665 00000 n 
+0000009744 00000 n 
+0000009836 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000810 00000 n 
+0000000930 00000 n 
+0000000997 00000 n 
+0000009970 00000 n 
+0000001132 00000 n 
+0000010033 00000 n 
+0000001269 00000 n 
+0000010099 00000 n 
+0000001406 00000 n 
+0000010165 00000 n 
+0000001543 00000 n 
+0000010230 00000 n 
+0000001679 00000 n 
+0000010296 00000 n 
+0000001816 00000 n 
+0000010362 00000 n 
+0000001952 00000 n 
+0000004185 00000 n 
+0000004308 00000 n 
+0000004349 00000 n 
+0000004527 00000 n 
+0000004712 00000 n 
+0000004912 00000 n 
+0000006737 00000 n 
+0000006845 00000 n 
+0000007314 00000 n 
+0000010426 00000 n 
+0000007422 00000 n 
+0000007848 00000 n 
+0000008033 00000 n 
+0000008197 00000 n 
+0000008403 00000 n 
+0000008625 00000 n 
+0000008859 00000 n 
+0000009003 00000 n 
+0000009116 00000 n 
+0000009226 00000 n 
+0000009334 00000 n 
+0000009440 00000 n 
+0000009556 00000 n 
+trailer
+<<
+/Size 46
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+10477
+%%EOF

Modified: hadoop/zookeeper/trunk/docs/index.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/index.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/index.html (original)
+++ hadoop/zookeeper/trunk/docs/index.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>
@@ -305,6 +320,31 @@
       
 </li>
 
+	  
+<li>
+<strong>BookKeeper Documentation</strong>
+	  
+<p> BookKeeper is a highly-available system that implements high-performance write-ahead logging. It uses ZooKeeper for metadata, 
+	  which is the main reason for being a ZooKeeper contrib.
+	  </p>
+      
+<ul>
+      
+<li>
+<a href="bookkeeperOverview.html">henn, what's it again?</a>
+</li>
+	  
+<li>
+<a href="bookkeeperStarted.html">Ok, now how do I try it out</a>
+</li>
+	  
+<li>
+<a href="bookkeeperProgrammer.html">Awesome, but how do I integrate it with my app?</a>
+</li>
+      
+</ul>
+      
+</li>
     
 </ul>
   

Modified: hadoop/zookeeper/trunk/docs/index.pdf
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/index.pdf?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
Binary files - no diff available.

Modified: hadoop/zookeeper/trunk/docs/javaExample.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/javaExample.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/javaExample.html (original)
+++ hadoop/zookeeper/trunk/docs/javaExample.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/linkmap.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/linkmap.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/linkmap.html (original)
+++ hadoop/zookeeper/trunk/docs/linkmap.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>
@@ -271,6 +286,40 @@
   
 <ul>
 <li>
+<a>BookKeeper</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>docs</em>
+</li>
+<ul>
+      
+<ul>
+<li>
+<a href="bookkeeperStarted.html">Getting started</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>bkStarted</em>
+</li>
+</ul>
+      
+<ul>
+<li>
+<a href="bookkeeperOverview.html">Overview</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>bkOverview</em>
+</li>
+</ul>
+      
+<ul>
+<li>
+<a href="bookkeeperConfig.html">Setup guide</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>bkProgrammer</em>
+</li>
+</ul>
+      
+<ul>
+<li>
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>bkProgrammer</em>
+</li>
+</ul>
+  
+</ul>
+</ul>
+  
+  
+<ul>
+<li>
 <a>Admin &amp; Ops</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>docs</em>
 </li>
 <ul>

Modified: hadoop/zookeeper/trunk/docs/linkmap.pdf
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/linkmap.pdf?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
Binary files - no diff available.

Modified: hadoop/zookeeper/trunk/docs/recipes.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/recipes.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/recipes.html (original)
+++ hadoop/zookeeper/trunk/docs/recipes.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <div class="menupagetitle">Recipes</div>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/releasenotes.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/releasenotes.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/releasenotes.html (original)
+++ hadoop/zookeeper/trunk/docs/releasenotes.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperAdmin.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperAdmin.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperAdmin.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperAdmin.html Tue Jun 23 18:38:33 2009
@@ -135,8 +135,23 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
-<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.4', 'skin/')" id="menu_selected_1.4Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
+<div id="menu_selected_1.4" class="selectedmenuitemgroup" style="display: block;">
 <div class="menupage">
 <div class="menupagetitle">Administrator's Guide</div>
 </div>
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperInternals.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperInternals.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperInternals.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperInternals.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_selected_1.4', 'skin/')" id="menu_selected_1.4Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Contributor</div>
-<div id="menu_selected_1.4" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_selected_1.5', 'skin/')" id="menu_selected_1.5Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Contributor</div>
+<div id="menu_selected_1.5" class="selectedmenuitemgroup" style="display: block;">
 <div class="menupage">
 <div class="menupagetitle">ZooKeeper Internals</div>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperJMX.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperJMX.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperJMX.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperJMX.html Tue Jun 23 18:38:33 2009
@@ -135,8 +135,23 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
-<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.4', 'skin/')" id="menu_selected_1.4Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
+<div id="menu_selected_1.4" class="selectedmenuitemgroup" style="display: block;">
 <div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
@@ -147,14 +162,14 @@
 <div class="menupagetitle">JMX</div>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperOver.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperOver.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperOver.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperOver.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperQuotas.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperQuotas.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperQuotas.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperQuotas.html Tue Jun 23 18:38:33 2009
@@ -135,8 +135,23 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
-<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.4', 'skin/')" id="menu_selected_1.4Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Admin &amp; Ops</div>
+<div id="menu_selected_1.4" class="selectedmenuitemgroup" style="display: block;">
 <div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperStarted.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperStarted.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperStarted.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperStarted.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>

Modified: hadoop/zookeeper/trunk/docs/zookeeperTutorial.html
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperTutorial.html?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/zookeeperTutorial.html (original)
+++ hadoop/zookeeper/trunk/docs/zookeeperTutorial.html Tue Jun 23 18:38:33 2009
@@ -135,9 +135,24 @@
 <a href="recipes.html">Recipes</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Admin &amp; Ops</div>
+<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">BookKeeper</div>
 <div id="menu_1.3" class="menuitemgroup">
 <div class="menuitem">
+<a href="bookkeeperStarted.html">Getting started</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperOverview.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperConfig.html">Setup guide</a>
+</div>
+<div class="menuitem">
+<a href="bookkeeperProgrammer.html">Programmer's guide</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Admin &amp; Ops</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
 <a href="zookeeperAdmin.html">Administrator's Guide</a>
 </div>
 <div class="menuitem">
@@ -147,14 +162,14 @@
 <a href="zookeeperJMX.html">JMX</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Contributor</div>
-<div id="menu_1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Contributor</div>
+<div id="menu_1.5" class="menuitemgroup">
 <div class="menuitem">
 <a href="zookeeperInternals.html">ZooKeeper Internals</a>
 </div>
 </div>
-<div onclick="SwitchMenu('menu_1.5', 'skin/')" id="menu_1.5Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.6', 'skin/')" id="menu_1.6Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.6" class="menuitemgroup">
 <div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/ZooKeeper">Wiki</a>
 </div>
@@ -231,12 +246,10 @@
                 zk = null;
             }
         }
-        //else mutex = new Integer(-1);
     }
 
     synchronized public void process(WatchedEvent event) {
         synchronized (mutex) {
-            //System.out.println("Process: " + event.getType());
             mutex.notify();
         }
     }

Modified: hadoop/zookeeper/trunk/docs/zookeeperTutorial.pdf
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperTutorial.pdf?rev=787780&r1=787779&r2=787780&view=diff
==============================================================================
Binary files - no diff available.

Added: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperConfig.xml
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperConfig.xml?rev=787780&view=auto
==============================================================================
--- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperConfig.xml (added)
+++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperConfig.xml Tue Jun 23 18:38:33 2009
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed 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.
+-->
+<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+"http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+<article id="bk_Admin">
+  <title>BookKeeper Administrator's Guide</title>
+
+  <subtitle>Setup Guide</subtitle>
+
+  <articleinfo>
+    <legalnotice>
+      <para>Licensed 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 <ulink
+      url="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</ulink>.
+      </para>
+
+      <para>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.
+      </para>
+    </legalnotice>
+
+    <abstract>
+      <para>This document contains information about deploying, administering
+      and mantaining BookKeeper. It also discusses best practices and common
+      problems.
+      </para>
+	  <para> As BookKeeper is still a prototype, this article is likely to change
+	  significantly over time. 
+	  </para>
+    </abstract>
+  </articleinfo>
+
+  <section id="bk_deployment">
+    <title>Deployment</title>
+
+    <para>This section contains information about deploying BookKeeper and
+    covers these topics:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para><xref linkend="bk_sysReq" /></para>
+      </listitem>
+
+      <listitem>
+        <para><xref linkend="bk_runningBookies" /></para>
+      </listitem>
+
+      <listitem>
+        <para><xref linkend="bk_zkMetadata" /></para>
+      </listitem>
+    </itemizedlist>
+    
+    <para> The first section tells you how many machines you need. The second explains how to bootstrap bookies
+     (BookKeeper storage servers). The third section explains how we use ZooKeeper and our requirements with
+     respect to ZooKeeper.
+    </para>
+    
+    <section id="bk_sysReq">
+ 	   <title>System requirements</title>
+ 	   <para> A typical BookKeeper installation comprises a set of bookies and a set of ZooKeeper replicas. The exact number of bookies
+ 	   depends on the quorum mode, desired throughput, and number of clients using this installation simultaneously. The minimum number of
+ 	   bookies is three for self-verifying (stores a message authentication code along with each entry) and four for generic (does not
+ 	   store a message authentication codewith each entry), and there is no upper limit on the number of bookies. Increasing the number of 
+ 	   bookies, in fact, enables higher throughput.
+ 	   </para>
+ 	   
+ 	   <para> For performance, we require each server to have at least two disks. It is possible to run a bookie with a single disk, but 
+ 	   performance will be significantly lower in this case. Of course, it works with one disk, but performance is significantly lower. 
+ 	   </para>
+
+ 	   <para> For ZooKeeper, there is no constraint with respect to the number of replicas. Having a single machine running ZooKeeper
+ 	   in standalone mode is sufficient for BookKeeper. For resilience purposes, it might be a good idea to run ZooKeeper in quorum 
+ 	   mode with multiple servers. Please refer to the ZooKeeper documentation for detail on how to configure ZooKeeper with multiple
+ 	   replicas
+ 	   </para>    
+     </section>
+     
+     <section id="bk_runningBookies">
+ 	   <title>Running bookies</title>
+ 	   <para>
+ 	   To run a bookie, we execute the following command:
+ 	   </para>
+ 	   
+ 	   <para><computeroutput>
+		java -cp .:./zookeeper-dev-bookkeeper.jar:./zookeeper-dev.jar:../log4j/apache-log4j-1.2.15/log4j-1.2.15.jar\
+		-Dlog4j.configuration=log4j.properties org.apache.bookkeeper.proto.BookieServer 3181 /path_to_log_device/\
+		/path_to_ledger_device/
+	   </computeroutput></para>
+ 	   
+ 	   <para>
+ 	   The parameters are:
+ 	   </para>
+ 	   
+ 	   <itemizedlist>
+ 	   	<listitem>
+ 	   	<para>
+ 	   		Port number that the bookie listens on;
+ 	   	</para>
+ 	   	</listitem>
+ 	   	
+ 	   	<listitem>
+ 	   	<para>
+ 	   		Path for Log Device (stores bookie write-ahead log);
+ 	   	</para>
+ 	   	</listitem>
+ 	   	
+ 	   	<listitem>
+ 	   	<para>
+ 	   		Path for Ledger Device (stores ledger entries);
+ 	   	</para>
+ 	   	</listitem>
+ 	   </itemizedlist>
+ 	   
+ 	   <para>
+ 	   Ideally, <computeroutput>/path_to_log_device/ </computeroutput> and <computeroutput>/path_to_ledger_device/ </computeroutput> are each
+ 	   in a different device. 
+ 	   </para>
+ 	 </section>
+ 	 
+ 	 <section id="bk_zkMetadata">
+ 	   <title>ZooKeeper Metadata</title>
+ 	   <para>
+ 	   For BookKeeper, we require a ZooKeeper installation to store metadata, and to pass the list
+ 	   of ZooKeeper servers as parameter to the constructor of the BookKeeper class (<computeroutput>
+ 	   org.apache.bookkeeper.client,BookKeeper</computeroutput>).
+ 	   To setup ZooKeeper, please check the <ulink url="index.html">
+          ZooKeeper documentation</ulink>.
+ 	   </para>
+ 	 </section>
+  </section>
+</article>
\ No newline at end of file

Added: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperOverview.xml
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperOverview.xml?rev=787780&view=auto
==============================================================================
--- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperOverview.xml (added)
+++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperOverview.xml Tue Jun 23 18:38:33 2009
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed 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.
+-->
+
+<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+"http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+<article id="bk_GettStartedGuide">
+  <title>BookKeeper overview</title>
+
+  <articleinfo>
+    <legalnotice>
+      <para>Licensed 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 <ulink
+      url="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</ulink>.</para>
+
+      <para>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.</para>
+    </legalnotice>
+
+    <abstract>
+      <para>This guide contains detailed information about using BookKeeper
+      for logging. It discusses the basic operations BookKeeper supports, 
+      and how to create logs and perform basic read and write operations on these
+      logs.</para>
+    </abstract>
+  </articleinfo>
+  <section id="bk_Overview">
+    <title>BookKeeper overview</title>
+
+    <para>This document explains basic concepts of BookKeeper. We start by discussing
+    the basic elements of BookKeeper, and next we discuss how they work together. 
+    </para>
+    
+    <section id="bk_basicComponents">
+    <title>Basic elements</title>
+	<para> 
+	BookKeeper uses four basic elements:
+	</para>
+	
+	<itemizedlist>
+      <listitem>
+      <para> 
+		<emphasis role="bold">Ledger</emphasis>: A ledger is a sequence of entries, and each entry is a sequence of bytes. Entries are
+		written sequentially to a ledger and at most once. Consequently, ledgers have an append-only semantics;
+	  </para>
+	  </listitem>
+	
+	  <listitem>
+	  <para> 
+		<emphasis role="bold">BookKeeper client</emphasis>: A client runs along with a BookKeeper application, and it enables applications
+		to execute operations on ledgers, such as creating a ledger and writing to it; 
+	  </para>
+	  </listitem> 
+	
+	  <listitem>
+	  <para>
+		<emphasis role="bold">Bookie</emphasis>: A bookie is a BookKeeper storage server. Bookies store the content of ledgers. For any given
+		ledger L, we call an <emphasis>ensemble</emphasis> the group of bookies storing the content of L. For performance, we store on
+		each bookie of an ensemble only a fragment of a ledger. That is, we stripe when writing entries to a ledger such that
+		each entry is written to sub-group of bookies of the ensemble.
+	  </para>
+	  </listitem>
+
+	  <listitem>
+	  <para> 	
+		<emphasis role="bold">Metadata storage service</emphasis>: BookKeeper requires a metadata storage service to store information related 
+		to ledgers and available bookies. We currently use ZooKeeper for such a task.     
+   	  </para>
+   	  </listitem>
+    </itemizedlist>
+    </section>
+    
+    <section id="bk_moreDetail">
+    <title>In slightly more detail...</title>
+    
+    <para> BookKeeper implements highly available logs, and it has been designed with write-ahead logging in mind. Besides high availability
+    due to the replicated nature of the service, it provides high throughput due to striping. As we write entries in a subset of bookies of an
+    ensemble and rotate writes across available quorums, we are able to increase throughput with the number of servers for both reads and writes. 
+    Scalability is a property that is possible to achieve in this case due to the use of quorums. Other replication techniques, such as 
+    state-machine replication, do not enable such a property. 
+    </para> 
+    
+	<para> An application first creates a ledger before writing to bookies through a local BookKeeper client instance. To 
+	create a ledger, an application has to specify which kind of ledger it wants to use: self-verifying or generic. Self-verifying
+	includes a digest on every entry, which enables a reduction on the degree of replication. Generic ledgers do not store a digest
+	along with entries at the cost of using more bookies.   
+	</para>
+	
+	<para> Upon creating a ledger, a BookKeeper clients writes metadata about the ledger to ZooKeeper. A given client first creates
+	a znode named "L" as a child of "/ledger" with the SEQUENCE flag. ZooKeeper consequently assigns a unique sequence number to the 
+	node, naming the node "/Lx", where x is the sequence number assigned. We use this sequence number as the identifier of the ledger. 
+	This identifier is necessary when opening a ledger. We also store the ensemble composition so that readers know which set of bookies
+	of access for a given ledger. 	
+	</para>
+	
+	<para>
+	Each ledger currently has a single writer. This writer has to execute a close ledger operation before any other client can read
+	from it. If the writer of a ledger does not close a ledger properly because, for example, it has crashed before having the 
+	opportunity of closing the ledger, then the next client that tries to open a ledger executes an procedure to recover it. As closing a ledger
+	consists essentially of writing the last entry written to a ledger to ZooKeeper, the recovery procedure simply finds the last entry
+	written correctly and writes it to ZooKeeper in the form of a close znode as a child of "/Lx", where x is the identifier of the ledger.     
+	</para>
+	
+	<para>
+	Note that currently this recovery procedure is executed automatically upon trying to open a ledger and no explicit action is necessary. 
+	Although two clients may try to recover a ledger concurrently, only one will succeed, the first one that is able to create the close znode
+	for the ledger.
+	</para> 
+	</section>  
+  </section>  
+</article>
\ No newline at end of file

Added: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml?rev=787780&view=auto
==============================================================================
--- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml (added)
+++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml Tue Jun 23 18:38:33 2009
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed 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.
+-->
+
+<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+"http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+<article id="bk_GettStartedGuide">
+  <title>BookKeeper Getting Started Guide</title>
+
+  <articleinfo>
+    <legalnotice>
+      <para>Licensed 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 <ulink
+      url="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</ulink>.</para>
+
+      <para>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.</para>
+    </legalnotice>
+
+    <abstract>
+      <para>This guide contains detailed information about using BookKeeper
+      for logging. It discusses the basic operations BookKeeper supports, 
+      and how to create logs and perform basic read and write operations on these
+      logs.</para>
+    </abstract>
+  </articleinfo>
+  <section id="bk_GettingStarted">
+    <title>Programming with BookKeeper</title>
+    
+    <itemizedlist>
+      <listitem>
+        <para><xref linkend="bk_instance" /></para>
+      </listitem>
+
+      <listitem>
+        <para><xref linkend="bk_createLedger" /></para>
+      </listitem>
+
+      <listitem>
+        <para><xref linkend="bk_writeLedger" /></para>
+      </listitem>
+
+      <listitem>
+        <para><xref linkend="bk_closeLedger" /></para>
+      </listitem>
+      
+	  <listitem>
+        <para><xref linkend="bk_openLedger" /></para>
+      </listitem>
+      
+      <listitem>
+        <para><xref linkend="bk_readLedger" /></para>
+      </listitem>
+      
+    </itemizedlist>
+    
+    <section id="bk_instance">
+    <title> Instantiating BookKeeper.</title>
+    <para>
+    The first step to use BookKeeper is to instantiate a BookKeeper object:
+    </para>
+    <para>
+    <computeroutput>
+    org.apache.bookkeeper.BookKeeper
+    </computeroutput>
+    </para>
+    
+    <para>
+    There is one BookKeeper constructor:
+    </para>
+    
+    <para>
+    <computeroutput>
+	public BookKeeper(String servers) 
+    	throws KeeperException, IOException    
+    </computeroutput>
+   	</para>
+    
+    <para> 
+    where <computeroutput>servers</computeroutput> is a comma-separated list of ZooKeeper servers.
+    </para>
+    
+    </section>
+    
+    <section id="bk_createLedger">
+    <title> Creating a ledger. </title>
+    
+    <para> Before writing entries to BookKeeper, it is necessary to create a ledger. 
+    With the current BookKeeper API, it is possible to create a ledger both synchronously
+    or asynchronously. The following methods belong
+    to <computeroutput>org.apache.bookkeeper.client.BookKeeper</computeroutput>.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Synchronous call:</emphasis>
+   	</para>
+   	
+   	<para>
+    <computeroutput>
+    public LedgerHandle createLedger(int ensSize, int qSize, QMode mode,  byte passwd[])
+        throws KeeperException, InterruptedException, 
+        IOException, BKException
+    </computeroutput>
+	</para>
+
+    <para>
+    where:
+    </para>
+    <itemizedlist>
+    	<listitem>
+    	<para> 
+    	<computeroutput>ensSize</computeroutput> is the number of bookies (ensemble size);
+    	</para>
+    	</listitem>
+    
+    	<listitem> 
+    	<para>
+    	<computeroutput>qSize</computeroutput> is the write quorum size;
+    	</para>
+    	</listitem>
+    
+    	<listitem> 
+    	<para>
+    	<computeroutput>mode</computeroutput> is the ledger mode (QMode.GENERIC, QMode.VERIFIABLE).
+    	If <computeroutput>mode</computeroutput> is QMode.GENERIC, then <computeroutput>ensSize</computeroutput> has to
+    	be at least <emphasis>3t+1</emphasis>, and <computeroutput>qSize</computeroutput> has to be <emphasis>2t+1</emphasis>.
+    	<emphasis>t</emphasis> is the maximum number of tolerated bookie failures.  
+    	</para>
+    	</listitem>
+    	
+    	<listitem>
+    	<para>
+    	<computeroutput>passwd</computeroutput> is a password that authorizes the client to write to the
+    	ledger being created.
+    	</para>
+    	</listitem>
+    </itemizedlist>
+    
+    <para>
+    All further operations on a ledger are invoked through the <computeroutput>LedgerHandle</computeroutput>
+    object returned.
+    </para>
+    
+    <para>
+    As a convenience, we provide a <computeroutput>createLedger</computeroutput> with default parameters (3,2,VERIFIABLE), 
+    and the only input parameter it requires is a password.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Asynchronous call:</emphasis>
+   	</para>
+    
+    <para>
+    <computeroutput>
+    public void asyncCreateLedger(int ensSize, 
+            int qSize, 
+            QMode mode,  
+            byte passwd[],
+            CreateCallback cb,
+            Object ctx
+            )
+    throws KeeperException, InterruptedException, 
+    IOException, BKException
+    </computeroutput>
+	</para>
+	
+    <para>
+	The parameters are the same of the synchronous version, with the
+	exception of <computeroutput>cb</computeroutput> and <computeroutput>ctx</computeroutput>. <computeroutput>CreateCallback</computeroutput>
+	is an interface in <computeroutput>org.apache.bookkeeper.client.AsyncCallback</computeroutput>, and
+	a class implementing it has to implement a method called <computeroutput>createComplete</computeroutput>
+	that has the following signature: 
+    </para>
+
+	<para>
+	<computeroutput>
+	void createComplete(int rc, LedgerHandle lh, Object ctx);
+	</computeroutput>    
+	</para>
+	
+	<para>
+	where:
+	</para>
+	<itemizedlist>
+		<listitem>
+		<para>
+		<computeroutput>rc</computeroutput> is a return code (please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+		</para>
+		</listitem>
+	
+		<listitem>
+		<para>
+		<computeroutput>lh</computeroutput> is a <computeroutput>LedgerHandle</computeroutput> object to manipulate a ledger;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>ctx</computeroutput> is a control object for accountability purposes;
+		</para>
+		</listitem>
+	</itemizedlist>	
+	
+	<para>
+	The <computeroutput>ctx</computeroutput> object passed as a parameter to the call to create a ledger
+	is the one same returned in the callback.
+    </para>
+    </section>
+    
+    <section id="bk_writeLedger">
+    <title> Adding entries to a ledger. </title>
+    <para>
+    Once we have a ledger handle <computeroutput>lh</computeroutput> obtained through a call to create a ledger, we
+    can start writing entries. As with creating ledgers, we can write both synchronously and 
+    asynchronously. The following methods belong
+    to <computeroutput>org.apache.bookkeeper.client.LedgerHandle</computeroutput>.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Synchronous call:</emphasis>
+   	</para>
+   	
+   	<para>
+    <computeroutput>
+	public long addEntry(byte[] data)
+    	throws InterruptedException
+    </computeroutput>
+	</para>
+
+    <para>
+    where:
+    </para>
+    
+    <itemizedlist>
+    	<listitem>
+    	<para> 
+    	<computeroutput>data</computeroutput> is a byte array;
+    	</para>
+    	</listitem>
+    </itemizedlist>
+    
+    <para>
+	A call to <computeroutput>addEntry</computeroutput> returns the status of the operation ((please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Asynchronous call:</emphasis>
+   	</para>
+
+	<para>
+    <computeroutput>
+	public void asyncAddEntry(byte[] data, AddCallback cb, Object ctx)
+    throws InterruptedException
+    </computeroutput>
+	</para>
+	
+    <para>
+    It also takes a byte array as the sequence of bytes to be stored as an entry. Additionaly, it takes
+    a callback object <computeroutput>cb</computeroutput> and a control object <computeroutput>ctx</computeroutput>. The callback object must implement
+    the <computeroutput>AddCallback</computeroutput> interface in <computeroutput>org.apache.bookkeeper.client.AsyncCallback</computeroutput>, and
+	a class implementing it has to implement a method called <computeroutput>addComplete</computeroutput>
+	that has the following signature: 
+    </para>
+
+	<para>
+	<computeroutput>
+	void addComplete(int rc, LedgerHandle lh, long entryId, Object ctx);
+	</computeroutput>    
+	</para>
+	
+	<para>
+	where:
+	</para>
+	<itemizedlist>
+		<listitem>
+		<para>
+		<computeroutput>rc</computeroutput> is a return code (please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+		</para>
+		</listitem>
+	
+		<listitem>
+		<para>
+		<computeroutput>lh</computeroutput> is a <computeroutput>LedgerHandle</computeroutput> object to manipulate a ledger;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>entryId</computeroutput> is the identifier of entry associated with this request;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>ctx</computeroutput> is control object used for accountability purposes. 
+		</para>
+		</listitem>
+	</itemizedlist>	 
+    </section>
+    
+    <section id="bk_closeLedger">
+    <title> Closing a ledger. </title>
+    <para>
+    Once a client is done writing, it closes the ledger. The following methods belong
+    to <computeroutput>org.apache.bookkeeper.client.LedgerHandle</computeroutput>.
+    </para>
+    <para>
+   	<emphasis role="bold">Synchronous close:</emphasis>
+   	</para>
+    
+    <para>
+    <computeroutput>
+	public void close() 
+    throws KeeperException, InterruptedException
+    </computeroutput>
+	</para>
+
+    <para>
+    It takes no input parameters.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Asynchronous close:</emphasis>
+   	</para>
+    <para>
+    <computeroutput>
+	public void asyncClose(CloseCallback cb, Object ctx)
+    throws InterruptedException
+    </computeroutput>
+	</para>
+	
+    <para>
+    It takes a callback object <computeroutput>cb</computeroutput> and a control object <computeroutput>ctx</computeroutput>. The callback object must implement
+    the <computeroutput>CloseCallback</computeroutput> interface in <computeroutput>org.apache.bookkeeper.client.AsyncCallback</computeroutput>, and
+	a class implementing it has to implement a method called <computeroutput>closeComplete</computeroutput>
+	that has the following signature: 
+    </para>
+
+	<para>
+	<computeroutput>
+	void closeComplete(int rc, LedgerHandle lh, Object ctx)
+	</computeroutput>    
+	</para>
+	
+	<para>
+	where:
+	</para>
+	<itemizedlist>
+		<listitem>
+		<para>
+		<computeroutput>rc</computeroutput> is a return code (please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+		</para>
+		</listitem>
+	
+		<listitem>
+		<para>
+		<computeroutput>lh</computeroutput> is a <computeroutput>LedgerHandle</computeroutput> object to manipulate a ledger;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>ctx</computeroutput> is control object used for accountability purposes. 
+		</para>
+		</listitem>
+	</itemizedlist>	
+    
+    </section>
+    
+    <section id="bk_openLedger">
+    <title> Opening a ledger. </title>
+    <para>
+    To read from a ledger, a client must open it first. The following methods belong
+    to <computeroutput>org.apache.bookkeeper.client.BookKeeper</computeroutput>.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Synchronous open:</emphasis>
+   	</para>
+    
+    <para>
+    <computeroutput>
+	public LedgerHandle openLedger(long lId, byte passwd[])
+    throws KeeperException, InterruptedException, IOException, BKException
+    </computeroutput>
+	</para>
+
+	<itemizedlist>
+	<listitem>
+	<para>
+	<computeroutput>ledgerId</computeroutput> is the ledger identifier;
+	</para>
+	</listitem>
+	
+	<listitem>
+	<para>
+	<computeroutput>passwd</computeroutput> is a password to access the ledger (used only in the case of <computeroutput>VERIFIABLE</computeroutput> ledgers);
+	</para>
+	</listitem>
+	</itemizedlist>
+    
+    <para>
+   	<emphasis role="bold">Asynchronous open:</emphasis>
+   	</para>
+    <para>
+    <computeroutput>
+	public void asyncOpenLedger(long lId, byte passwd[], OpenCallback cb, Object ctx)
+    throws InterruptedException
+    </computeroutput>
+	</para>
+	
+    <para>
+    It also takes a a ledger identifier and a password. Additionaly, it takes a callback object 
+    <computeroutput>cb</computeroutput> and a control object <computeroutput>ctx</computeroutput>. The callback object must implement
+    the <computeroutput>OpenCallback</computeroutput> interface in <computeroutput>org.apache.bookkeeper.client.AsyncCallback</computeroutput>, and
+	a class implementing it has to implement a method called <computeroutput>openComplete</computeroutput>
+	that has the following signature: 
+    </para>
+
+	<para>
+	<computeroutput>
+	public void openComplete(int rc, LedgerHandle lh, Object ctx)
+	</computeroutput>    
+	</para>
+	
+	<para>
+	where:
+	</para>
+	<itemizedlist>
+		<listitem>
+		<para>
+		<computeroutput>rc</computeroutput> is a return code (please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+		</para>
+		</listitem>
+	
+		<listitem>
+		<para>
+		<computeroutput>lh</computeroutput> is a <computeroutput>LedgerHandle</computeroutput> object to manipulate a ledger;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>ctx</computeroutput> is control object used for accountability purposes. 
+		</para>
+		</listitem>
+	</itemizedlist>	
+    </section>
+    
+    <section id="bk_readLedger">
+    <title> Reading from ledger </title>
+    <para>
+    Read calls may request one or more consecutive entries. The following methods belong
+    to <computeroutput>org.apache.bookkeeper.client.LedgerHandle</computeroutput>.
+    </para>
+    
+    <para>
+   	<emphasis role="bold">Synchronous read:</emphasis>
+   	</para>
+    
+    <para>
+    <computeroutput>
+	public LedgerSequence readEntries(long firstEntry, long lastEntry) 
+    throws InterruptedException, BKException
+    </computeroutput>
+	</para>
+
+	<itemizedlist>
+	<listitem>
+	<para>
+	<computeroutput>firstEntry</computeroutput> is the identifier of the first entry in the sequence of entries to read;
+	</para>
+	</listitem>
+	
+	<listitem>
+	<para>
+	<computeroutput>lastEntry</computeroutput> is the identifier of the last entry in the sequence of entries to read;
+	</para>
+	</listitem>
+	</itemizedlist>
+    
+    <para>
+   	<emphasis role="bold">Asynchronous read:</emphasis>
+   	</para>
+    <para>
+    <computeroutput>
+	public void asyncReadEntries(long firstEntry, 
+            long lastEntry, ReadCallback cb, Object ctx)
+    throws BKException, InterruptedException
+    </computeroutput>
+	</para>
+	
+    <para>
+    It also takes a first and a last entry identifiers. Additionaly, it takes a callback object 
+    <computeroutput>cb</computeroutput> and a control object <computeroutput>ctx</computeroutput>. The callback object must implement
+    the <computeroutput>ReadCallback</computeroutput> interface in <computeroutput>org.apache.bookkeeper.client.AsyncCallback</computeroutput>, and
+	a class implementing it has to implement a method called <computeroutput>readComplete</computeroutput>
+	that has the following signature: 
+    </para>
+
+	<para>
+	<computeroutput>
+	void readComplete(int rc, LedgerHandle lh, LedgerSequence seq, Object ctx)
+	</computeroutput>    
+	</para>
+	
+	<para>
+	where:
+	</para>
+	<itemizedlist>
+		<listitem>
+		<para>
+		<computeroutput>rc</computeroutput> is a return code (please refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+		</para>
+		</listitem>
+	
+		<listitem>
+		<para>
+		<computeroutput>lh</computeroutput> is a <computeroutput>LedgerHandle</computeroutput> object to manipulate a ledger;
+		</para>
+		</listitem>
+		
+		<listitem>
+		<para>
+		<computeroutput>seq</computeroutput> is a <computeroutput>LedgerSequence</computeroutput> object to containing the list of entries requested;
+		</para>
+		</listitem>
+
+		<listitem>
+		<para>
+		<computeroutput>ctx</computeroutput> is control object used for accountability purposes. 
+		</para>
+		</listitem>
+	</itemizedlist>	
+    </section>
+   </section>
+</article>
\ No newline at end of file