You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by bu...@apache.org on 2011/04/05 04:48:27 UTC

svn commit: r787995 [38/39] - in /websites/staging/zookeeper/trunk/content/doc/current: ./ api/ api/org/ api/org/apache/ api/org/apache/zookeeper/ api/org/apache/zookeeper/class-use/ api/org/apache/zookeeper/data/ api/org/apache/zookeeper/data/class-us...

Added: websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.html
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.html (added)
+++ websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.html Tue Apr  5 02:48:22 2011
@@ -0,0 +1,289 @@
+<!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>ZooKeeper Quota's 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.3 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_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>
+<div class="menupage">
+<div class="menupagetitle">Quota Guide</div>
+</div>
+<div class="menuitem">
+<a href="zookeeperJMX.html">JMX</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperObservers.html">Observers Guide</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="zookeeperQuotas.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>ZooKeeper Quota's Guide</h1>
+<h3>A Guide to Deployment and Administration</h3>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#zookeeper_quotas">Quotas</a>
+<ul class="minitoc">
+<li>
+<a href="#Setting+Quotas">Setting Quotas</a>
+</li>
+<li>
+<a href="#Listing+Quotas">Listing Quotas</a>
+</li>
+<li>
+<a href="#Deleting+Quotas"> Deleting Quotas</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+	
+	
+	
+	
+<a name="N1000B"></a><a name="zookeeper_quotas"></a>
+<h2 class="h3">Quotas</h2>
+<div class="section">
+<p> ZooKeeper has both namespace and bytes quotas. You can use the ZooKeeperMain class to setup quotas.
+	ZooKeeper prints <em>WARN</em> messages if users exceed the quota assigned to them. The messages 
+	are printed in the log of the ZooKeeper. 
+	</p>
+<p>
+<span class="codefrag computeroutput">$java -cp zookeeper.jar:src/java/lib/log4j-1.2.15.jar/conf:src/java/lib/jline-0.9.94.jar \
+	 org.apache.zookeeper.ZooKeeperMain -server host:port</span>
+</p>
+<p> The above command gives you a command line option of using quotas.</p>
+<a name="N1001F"></a><a name="Setting+Quotas"></a>
+<h3 class="h4">Setting Quotas</h3>
+<p>You can use 
+	 <em>setquota</em> to set a quota on a ZooKeeper node. It has an option of setting quota with
+	  -n (for namespace)
+	 and -b (for bytes). </p>
+<p> The ZooKeeper quota are stored in ZooKeeper itself in /zookeeper/quota. To disable other people from
+	changing the quota's set the ACL for /zookeeper/quota such that only admins are able to read and write to it.
+	</p>
+<a name="N1002F"></a><a name="Listing+Quotas"></a>
+<h3 class="h4">Listing Quotas</h3>
+<p> You can use
+	<em>listquota</em> to list a quota on a ZooKeeper node.
+	</p>
+<a name="N1003C"></a><a name="Deleting+Quotas"></a>
+<h3 class="h4"> Deleting Quotas</h3>
+<p> You can use
+	<em>delquota</em> to delete quota on a ZooKeeper node.
+	</p>
+</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: websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.pdf
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.pdf (added)
+++ websites/staging/zookeeper/trunk/content/doc/current/zookeeperQuotas.pdf Tue Apr  5 02:48:22 2011
@@ -0,0 +1,252 @@
+%PDF-1.3
+%ª«¬­
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 532 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gb!<Kb>Q22'Sc@1MX6"Ma'>*WM&2[Z2[iu;=VMdY1Sqo#FEi/%<(TmkgnF,03Q\g[Vj[QIMp@%c;%=FSZO#=31r<oI&VSo*T[`DK*!;*4PV(6Lmp><aV3\.GUJiY+p:*%bCQkBlr5SE@/6!]SU$Tc6+E:Ij-``=A;F8!sK5\SuVU9j@WKrh+/6$Ka?="H)(_hn6/m"pl9r[HOKCl&G\:Brp?qiO`Di"c"adl&>KQQWb5,heN_B/CBbcdqU2Jn5MD*ELVhT\PE[0\Pi`^Q5UK^SJj]8PQdG9_$!\;G7dVe%5)#A,(-UO0iEDrQTRZ3?#sk`gYN%2^U*b'NI\I`tsI/spVAr)`*%%&lapLXF"i]Cp">?Z_lio]YWqH5LV#.eQlqm<tlQ3K$&s<>N8-nT8e;YQWWG\7RHlJJs5Sd3q&bU._s__N7Sekr"e5!GO)]g($DloG;haC!-6mTR2`!&8tF)'5qI.JUe5rq)#J!H=l%)-J04$F^6uGKHR@r]]!T1!oKrAC0jm@*rR+>dSoH~>
+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
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 511.541 143.996 499.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 493.341 194.504 481.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 475.141 194.504 463.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 456.941 201.824 444.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 15 0 R
+/H /I
+>>
+endobj
+16 0 obj
+<< /Length 1302 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0C969,]&AJ$CkWfmQ_.1_WYJ"K`Z3;cnbIWQ4b[E&^C^!t:Q/mVflY4&6*a+@6C+5d$4T52T^M^a@/Co$:70Tru9t[^4rIS32r2:@_E97L&.!Mf<dJDmXP,5Qq:47T_nY@[<0!.@?c1d-72iH"T=6mS-[!GsghfUNugg4u<PJ@L+6<Uq>a2QfeX(,#XH8Ri@8qbeWr*AV1Pfcu\pc[,%HXWhQ_]WO]W6/A"C,hAZKPj"S$7UIB1-d;eVGDgUb%qVa-*gYoODp6L8!tKR0U3r)<U$Y_Au<"4=I3a$W`/mjC_N)TM^5?L"P.eb76-cD,k,'Vc`agmr,buM7"BPHEJ:(e2(do2(G:Q(aqX%molm?61fLG%.>1Du-Mu#sXUWN"RAu\h35k5ogL0W>J]^<=b([N;]SngK]cR@t?ULETlPWC2BZK/Omiqbr?9ZjrE:(Zd.a08]FD^#\)ZOLL=6o$U(2q>>>h:=RBsLr1T]1Dh#p[s!s':C@Mp3dHBp,G11`m#lI:^irnBN&`h%%9c@S\9Adm9*>M"-,d'7kAsd(IZli1S9Y9s0E>RFg#9BC>St)0j;pIR%A@O%5t9pW3LAq[%JMHq(<B#f8O(&tMbWI4CFs^V"C*/g6l^5*:p4>f&Y=VbBdQT2\f.-EjYPn9lK/moe/Dlh:Gf'cs^fm:ps$eRmKe3fJ%CR`9lT\h9QXPsTs)^+f5!B7l18TLSR(6'2gtLNm/r$5N@uADW[h3;;TD0?5L"Pg)P,Pk]ZeNsQjs.qF$S'5JS+5Gts5R7Xg?bpkY>CqH457Nm:?kYs30<,Kk!Qn-?P(NWP9@4J6KQ,_;)f4XAN2]`Q-)tYPQUm/J*pEbpg,[1QZCt0o$/"L1P\Bmb<g(,sn)b=;\UT[;mpmJ1lmlhjA(lrZcaP&(*?ulquf3.s'C*+I[Cco0R15@H@opM<"_YmI_)9ogpa!.Kp[$'](Z#O+^cCCKY(kV<G;SJ%@\-F"!h@<u
 S@kZdum_V9mlcBt%28`N'nR!Y%&(:2H79m^`aT'+n=((!+lEMBGNaVZPV<W350S`KWY$MJEV8T/$$NYm>74N]t/n7&'92nu$ILlC\E%hZS1Ccgg^?td"jT/&>"V[L^Sl[T+XFm4CT(CY4;\CO<9`6]sPSXlST$r7"'50\I,jmC\j#A%Jc[B]I`oh\S(dGoMCj9G<%r/Qg[>E3liLk*SlG,)t*=Fp#ZECS'FT,5bqa9u+iHq8i;9Y_d`,+0MUi$[M_JQVS%e:tf=-)2$Bi"0h.>q_"S-`(ddm7YpQUk0%mMV.\G5hX&\UBA~>
+endstream
+endobj
+17 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 16 0 R
+>>
+endobj
+19 0 obj
+<<
+ /Title (\376\377\0\61\0\40\0\121\0\165\0\157\0\164\0\141\0\163)
+ /Parent 18 0 R
+ /First 20 0 R
+ /Last 22 0 R
+ /Count -3
+ /A 9 0 R
+>> endobj
+20 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\61\0\40\0\123\0\145\0\164\0\164\0\151\0\156\0\147\0\40\0\121\0\165\0\157\0\164\0\141\0\163)
+ /Parent 19 0 R
+ /Next 21 0 R
+ /A 11 0 R
+>> endobj
+21 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\62\0\40\0\114\0\151\0\163\0\164\0\151\0\156\0\147\0\40\0\121\0\165\0\157\0\164\0\141\0\163)
+ /Parent 19 0 R
+ /Prev 20 0 R
+ /Next 22 0 R
+ /A 13 0 R
+>> endobj
+22 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\63\0\40\0\104\0\145\0\154\0\145\0\164\0\151\0\156\0\147\0\40\0\121\0\165\0\157\0\164\0\141\0\163)
+ /Parent 19 0 R
+ /Prev 21 0 R
+ /A 15 0 R
+>> endobj
+23 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+24 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+25 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+26 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+27 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+28 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+29 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 2
+/Kids [6 0 R 17 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 18 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F1 23 0 R /F5 24 0 R /F3 25 0 R /F2 26 0 R /F9 27 0 R /F6 28 0 R /F7 29 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 511.466 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 399.413 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [17 0 R /XYZ 85.0 348.16 null]
+>>
+endobj
+18 0 obj
+<<
+ /First 19 0 R
+ /Last 19 0 R
+>> endobj
+xref
+0 30
+0000000000 65535 f 
+0000004410 00000 n 
+0000004475 00000 n 
+0000004567 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000694 00000 n 
+0000000814 00000 n 
+0000000860 00000 n 
+0000004712 00000 n 
+0000000995 00000 n 
+0000004775 00000 n 
+0000001132 00000 n 
+0000004841 00000 n 
+0000001269 00000 n 
+0000004907 00000 n 
+0000001406 00000 n 
+0000002801 00000 n 
+0000004972 00000 n 
+0000002909 00000 n 
+0000003062 00000 n 
+0000003247 00000 n 
+0000003446 00000 n 
+0000003637 00000 n 
+0000003745 00000 n 
+0000003855 00000 n 
+0000003968 00000 n 
+0000004084 00000 n 
+0000004190 00000 n 
+0000004301 00000 n 
+trailer
+<<
+/Size 30
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+5023
+%%EOF

Added: websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.html
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.html (added)
+++ websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.html Tue Apr  5 02:48:22 2011
@@ -0,0 +1,643 @@
+<!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>ZooKeeper 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.3 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_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Overview</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperOver.html">Overview</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Getting Started</div>
+</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_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">
+<a href="zookeeperQuotas.html">Quota Guide</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperJMX.html">JMX</a>
+</div>
+<div class="menuitem">
+<a href="zookeeperObservers.html">Observers Guide</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="zookeeperStarted.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>ZooKeeper Getting Started Guide</h1>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#ch_GettingStarted">Getting Started: Coordinating Distributed Applications with
+      ZooKeeper</a>
+<ul class="minitoc">
+<li>
+<a href="#sc_Prerequisites">Pre-requisites</a>
+</li>
+<li>
+<a href="#sc_Download">Download</a>
+</li>
+<li>
+<a href="#sc_InstallingSingleMode">Standalone Operation</a>
+</li>
+<li>
+<a href="#sc_FileManagement">Managing ZooKeeper Storage</a>
+</li>
+<li>
+<a href="#sc_ConnectingToZooKeeper">Connecting to ZooKeeper</a>
+</li>
+<li>
+<a href="#sc_ProgrammingToZooKeeper">Programming to ZooKeeper</a>
+</li>
+<li>
+<a href="#sc_RunningReplicatedZooKeeper">Running Replicated ZooKeeper</a>
+</li>
+<li>
+<a href="#Other+Optimizations">Other Optimizations</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+  
+
+  
+
+  
+<a name="N10009"></a><a name="ch_GettingStarted"></a>
+<h2 class="h3">Getting Started: Coordinating Distributed Applications with
+      ZooKeeper</h2>
+<div class="section">
+<p>This document contains information to get you started quickly with
+    ZooKeeper. It is aimed primarily at developers hoping to try it out, and
+    contains simple installation instructions for a single ZooKeeper server, a
+    few commands to verify that it is running, and a simple programming
+    example. Finally, as a convenience, there are a few sections regarding
+    more complicated installations, for example running replicated
+    deployments, and optimizing the transaction log. However for the complete
+    instructions for commercial deployments, please refer to the <a href="zookeeperAdmin.html">ZooKeeper
+    Administrator's Guide</a>.</p>
+<a name="N10016"></a><a name="sc_Prerequisites"></a>
+<h3 class="h4">Pre-requisites</h3>
+<p>See <a href="zookeeperAdmin.html#sc_systemReq">
+          System Requirements</a> in the Admin guide.</p>
+<a name="N10024"></a><a name="sc_Download"></a>
+<h3 class="h4">Download</h3>
+<p>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="sc_InstallingSingleMode"></a>
+<h3 class="h4">Standalone Operation</h3>
+<p>Setting up a ZooKeeper server in standalone mode is
+      straightforward. The server is contained in a single JAR file,
+      so installation consists of creating a configuration.</p>
+<p>Once you've downloaded a stable ZooKeeper release unpack
+      it and cd to the root</p>
+<p>To start ZooKeeper you need a configuration file. Here is a sample,
+      create it in <strong>conf/zoo.cfg</strong>:</p>
+<pre class="code">
+tickTime=2000
+dataDir=/var/zookeeper
+clientPort=2181
+</pre>
+<p>This file can be called anything, but for the sake of this
+      discussion call
+      it <strong>conf/zoo.cfg</strong>. Change the
+      value of <strong>dataDir</strong> to specify an
+      existing (empty to start with) directory.  Here are the meanings
+      for each of the fields:</p>
+<dl>
+        
+<dt>
+<term>
+<strong>tickTime</strong>
+</term>
+</dt>
+<dd>
+<p>the basic time unit in milliseconds used by ZooKeeper. It is
+            used to do heartbeats and the minimum session timeout will be
+            twice the tickTime.</p>
+</dd>
+      
+</dl>
+<dl>
+        
+<dt>
+<term>
+<strong>dataDir</strong>
+</term>
+</dt>
+<dd>
+<p>the location to store the in-memory database snapshots and,
+            unless specified otherwise, the transaction log of updates to the
+            database.</p>
+</dd>
+
+        
+<dt>
+<term>
+<strong>clientPort</strong>
+</term>
+</dt>
+<dd>
+<p>the port to listen for client connections</p>
+</dd>
+      
+</dl>
+<p>Now that you created the configuration file, you can start
+      ZooKeeper:</p>
+<pre class="code">bin/zkServer.sh start</pre>
+<p>ZooKeeper logs messages using log4j -- more detail
+      available in the
+      <a href="zookeeperProgrammers.html#Logging">Logging</a>
+      section of the Programmer's Guide. You will see log messages
+      coming to the console (default) and/or a log file depending on
+      the log4j configuration.</p>
+<p>The steps outlined here run ZooKeeper in standalone mode. There is
+      no replication, so if ZooKeeper process fails, the service will go down.
+      This is fine for most development situations, but to run ZooKeeper in
+      replicated mode, please see <a href="#sc_RunningReplicatedZooKeeper">Running Replicated
+      ZooKeeper</a>.</p>
+<a name="N10083"></a><a name="sc_FileManagement"></a>
+<h3 class="h4">Managing ZooKeeper Storage</h3>
+<p>For long running production systems ZooKeeper storage must
+      be managed externally (dataDir and logs). See the section on
+      <a href="zookeeperAdmin.html#sc_maintenance">maintenance</a> for
+      more details.</p>
+<a name="N10091"></a><a name="sc_ConnectingToZooKeeper"></a>
+<h3 class="h4">Connecting to ZooKeeper</h3>
+<p>Once ZooKeeper is running, you have several options for connection
+      to it:</p>
+<ul>
+        
+<li>
+          
+<p>
+<strong>Java</strong>: Use</p>
+
+          
+<pre class="code">bin/zkCli.sh -server 127.0.0.1:2181</pre>
+
+          
+<p>This lets you perform simple, file-like operations.</p>
+        
+</li>
+
+        
+<li>
+          
+<p>
+<strong>C</strong>: compile cli_mt
+          (multi-threaded) or cli_st (single-threaded) by running
+          <span class="codefrag command">make cli_mt</span> or <span class="codefrag command">make
+          cli_st</span> in
+          the <strong>src/c</strong> subdirectory in
+          the ZooKeeper sources. See the README contained within
+          <strong>src/c</strong> for full details.</p>
+
+          
+<p>You can run the program
+          from <strong>src/c</strong> using:</p>
+
+          
+<pre class="code">LD_LIBRARY_PATH=. cli_mt 127.0.0.1:2181</pre>
+
+          
+<p>or</p>
+
+          
+<pre class="code">LD_LIBRARY_PATH=. cli_st 127.0.0.1:2181</pre>
+          
+<p>This will give you a simple shell to execute file
+          system like operations on ZooKeeper.</p>
+        
+</li>
+      
+</ul>
+<p>Once you have connected, you should see something like:
+        </p>
+<pre class="code">
+
+Connecting to localhost:2181
+log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
+log4j:WARN Please initialize the log4j system properly.
+Welcome to ZooKeeper!
+JLine support is enabled
+[zkshell: 0]
+        </pre>
+<p>
+        From the shell, type <span class="codefrag command">help</span> to get a listing of commands that can be executed from the client, as in:
+      </p>
+<pre class="code">
+
+[zkshell: 0] help
+ZooKeeper host:port cmd args
+        get path [watch]
+        ls path [watch]
+        set path data [version]
+        delquota [-n|-b] path
+        quit
+        printwatches on|off
+        createpath data acl
+        stat path [watch]
+        listquota path
+        history
+        setAcl path acl
+        getAcl path
+        sync path
+        redo cmdno
+        addauth scheme auth
+        delete path [version]
+        setquota -n|-b val path
+
+        </pre>
+<p>From here, you can try a few simple commands to get a feel for this simple command line interface.  First, start by issuing the list command, as
+      in <span class="codefrag command">ls</span>, yielding:
+      </p>
+<pre class="code">
+
+[zkshell: 8] ls /
+[zookeeper]
+        </pre>
+<p>Next, create a new znode by running <span class="codefrag command">create /zk_test my_data</span>. This creates a new znode and associates the string "my_data" with the node.
+      You should see:</p>
+<pre class="code">
+
+[zkshell: 9] create /zk_test my_data
+Created /zk_test
+      </pre>
+<p>  Issue another <span class="codefrag command">ls /</span> command to see what the directory looks like:
+        </p>
+<pre class="code">
+
+[zkshell: 11] ls /
+[zookeeper, zk_test]
+
+        </pre>
+<p>
+      Notice that the zk_test directory has now been created.
+      </p>
+<p>Next, verify that the data was associated with the znode by running the <span class="codefrag command">get</span> command, as in:
+      </p>
+<pre class="code">
+
+[zkshell: 12] get /zk_test
+my_data
+cZxid = 5
+ctime = Fri Jun 05 13:57:06 PDT 2009
+mZxid = 5
+mtime = Fri Jun 05 13:57:06 PDT 2009
+pZxid = 5
+cversion = 0
+dataVersion = 0
+aclVersion = 0
+ephemeralOwner = 0
+dataLength = 7
+numChildren = 0
+        </pre>
+<p>We can change the data associated with zk_test by issuing the <span class="codefrag command">set</span> command, as in:
+        </p>
+<pre class="code">
+
+[zkshell: 14] set /zk_test junk
+cZxid = 5
+ctime = Fri Jun 05 13:57:06 PDT 2009
+mZxid = 6
+mtime = Fri Jun 05 14:01:52 PDT 2009
+pZxid = 5
+cversion = 0
+dataVersion = 1
+aclVersion = 0
+ephemeralOwner = 0
+dataLength = 4
+numChildren = 0
+[zkshell: 15] get /zk_test
+junk
+cZxid = 5
+ctime = Fri Jun 05 13:57:06 PDT 2009
+mZxid = 6
+mtime = Fri Jun 05 14:01:52 PDT 2009
+pZxid = 5
+cversion = 0
+dataVersion = 1
+aclVersion = 0
+ephemeralOwner = 0
+dataLength = 4
+numChildren = 0
+      </pre>
+<p>
+       (Notice we did a <span class="codefrag command">get</span> after setting the data and it did, indeed, change.</p>
+<p>Finally, let's <span class="codefrag command">delete</span> the node by issuing:
+      </p>
+<pre class="code">
+
+[zkshell: 16] delete /zk_test
+[zkshell: 17] ls /
+[zookeeper]
+[zkshell: 18]
+</pre>
+<p>That's it for now.  To explore more, continue with the rest of this document and see the <a href="zookeeperProgrammers.html">Programmer's Guide</a>. </p>
+<a name="N10130"></a><a name="sc_ProgrammingToZooKeeper"></a>
+<h3 class="h4">Programming to ZooKeeper</h3>
+<p>ZooKeeper has a Java bindings and C bindings. They are
+      functionally equivalent. The C bindings exist in two variants: single
+      threaded and multi-threaded. These differ only in how the messaging loop
+      is done. For more information, see the <a href="zookeeperProgrammers.html#ch_programStructureWithExample">Programming
+      Examples in the ZooKeeper Programmer's Guide</a> for
+      sample code using of the different APIs.</p>
+<a name="N1013E"></a><a name="sc_RunningReplicatedZooKeeper"></a>
+<h3 class="h4">Running Replicated ZooKeeper</h3>
+<p>Running ZooKeeper in standalone mode is convenient for evaluation,
+      some development, and testing. But in production, you should run
+      ZooKeeper in replicated mode. A replicated group of servers in the same
+      application is called a <em>quorum</em>, and in replicated
+      mode, all servers in the quorum have copies of the same configuration
+      file. The file is similar to the one used in standalone mode, but with a
+      few differences. Here is an example:</p>
+<pre class="code">
+tickTime=2000
+dataDir=/var/zookeeper
+clientPort=2181
+initLimit=5
+syncLimit=2
+server.1=zoo1:2888:3888
+server.2=zoo2:2888:3888
+server.3=zoo3:2888:3888
+</pre>
+<p>The new entry, <strong>initLimit</strong> is
+      timeouts ZooKeeper uses to limit the length of time the ZooKeeper
+      servers in quorum have to connect to a leader. The entry <strong>syncLimit</strong> limits how far out of date a server can
+      be from a leader.</p>
+<p>With both of these timeouts, you specify the unit of time using
+      <strong>tickTime</strong>. In this example, the timeout
+      for initLimit is 5 ticks at 2000 milleseconds a tick, or 10
+      seconds.</p>
+<p>The entries of the form <em>server.X</em> list the
+      servers that make up the ZooKeeper service. When the server starts up,
+      it knows which server it is by looking for the file
+      <em>myid</em> in the data directory. That file has the 
+      contains the server number, in ASCII.</p>
+<p>Finally, note the two port numbers after each server
+       name: " 2888" and "3888". Peers use the former port to connect
+       to other peers. Such a connection is necessary so that peers
+       can communicate, for example, to agree upon the order of
+       updates. More specifically, a ZooKeeper server uses this port
+       to connect followers to the leader. When a new leader arises, a
+       follower opens a TCP connection to the leader using this
+       port. Because the default leader election also uses TCP, we
+       currently require another port for leader election. This is the
+       second port in the server entry.
+       </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        
+<p>If you want to test multiple servers on a single
+        machine, specify the servername
+        as <em>localhost</em> with unique quorum &amp;
+        leader election ports (i.e. 2888:3888, 2889:3889, 2890:3890 in
+        the example above) for each server.X in that server's config
+        file. Of course separate <em>dataDir</em>s and
+        distinct <em>clientPort</em>s are also necessary
+        (in the above replicated example, running on a
+        single <em>localhost</em>, you would still have
+        three config files).</p>
+      
+</div>
+</div>
+<a name="N1017B"></a><a name="Other+Optimizations"></a>
+<h3 class="h4">Other Optimizations</h3>
+<p>There are a couple of other configuration parameters that can
+      greatly increase performance:</p>
+<ul>
+        
+<li>
+          
+<p>To get low latencies on updates it is important to
+          have a dedicated transaction log directory. By default
+          transaction logs are put in the same directory as the data
+          snapshots and <em>myid</em> file. The dataLogDir
+          parameters indicates a different directory to use for the
+          transaction logs.</p>
+        
+</li>
+
+        
+<li>
+          
+<p>
+<em>[tbd: what is the other config param?]</em>
+</p>
+        
+</li>
+      
+</ul>
+</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: websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.pdf
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.pdf (added)
+++ websites/staging/zookeeper/trunk/content/doc/current/zookeeperStarted.pdf Tue Apr  5 02:48:22 2011
@@ -0,0 +1,623 @@
+%PDF-1.3
+%ª«¬­
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.5) >>
+endobj
+5 0 obj
+<< /Length 771 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gb!$E966RV&:j6I$6>[)<':eRhXY>@dn[qt_PrRu2DSkK916koUqaVV(e\u)i,fmHpgA9ue`pA@<k?M,=#UhT&0d4<!bD=s!<Qh_!AZkJ;QG^B"DO*NC]clI5"YRAo7j;%E),E2I%J%5>$%G?ML1mEbmVj,>8@&EHj/38/n3N>*(=9JKb<-2=Zdb,@t;I(R>21pN-k.I?e!kcA+nAFY2&nP$I+9B&*#Bpd<Id4L`MRb841r=Lja@8PBl=U1A<QN8)7h9[F8APWJX=/A%V',eZ)ehpY"hs(JRh094KD>la48rYFX`+6RTe/4iYH7[!P+n,>Y2QXqa;<i^4XBPDLCrZE_<Lioc1`Cob"m]UbMG90JT/;0Xp=R"R/9b[cl^jDZ\pU6^)pY@n/O6DJ097hL\#17^o.*DCa:,-Rj42Vm.&@oouab_(n8d_<ATU(.jX*-F58m5o^:7:)"_n#.*64(###j=cu*'.s]?lj1i!1cIj0DhDkpgNU/j6La*HEG>4R^$'C>A%(i>8$O""YG"D6m(UB>P,6;[S,WKFJs0jrp1P)/VUY'LnKdnNiGL0a#l9SUVilO-SH@YW-fc/t1%RJ216(Z_bk9]Ic1=D+S*Kli(8%hIGHEG7Y_U2EP6DKQ"g,B=@2-W3'Po^0":50fK2qCq\?m&6E_$an$*f0O?ABDNBuGO)E>B(s]QmIV\^p3&p4Y3e,_AkPUhn;HE7*`>?bVjW]uu\=\WL*;@b<M(c`O@@d)BlcRC?FLirsPg56/%S6h^~>
+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
+22 0 R
+24 0 R
+]
+endobj
+8 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 529.541 455.312 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 227.816 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 268.796 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 248.144 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 258.812 408.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 21 0 R
+/H /I
+>>
+endobj
+22 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 402.141 276.14 390.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+24 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 383.941 221.828 371.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 25 0 R
+/H /I
+>>
+endobj
+26 0 obj
+<< /Length 2348 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat%%8TWWE'Y`m7n<RV)7L8G+9FaYLUs!kC`]CNlJL2NHA!0XgdYdV]qnVkj!bHLpL]R,7g\9Y#ldb<^YsSWQ3pY&5Fg`gc\F>P?W=*oIi"PBGcFS&qGtH+.kLL%6rQA!<Bm@=^0CG<'2QV-Zhg>u%(;.r:n*[]#,_'Ldg\LErIUDXc^(duDD\'M6c)8=1pk,h7PHUL+Sb;HP?e2:HTWD2he#HL#%nI=%:='U.L2KQA1j('b*`dcmhJ6%WLO-Y5VO8JO6/5\ThJo>Y+nE'NFYhq9U2D`Hp#Pd8aK!^<^21aco9LQrUM/hClFf)_HuF<0=<=)W!XcnbLcJL!j-Ac^3Qne\9o(`1]9g1Q,f^NR`33QEX:ucfn_K&8&Q*@Y,7u/\(l>]35pGURP!]tfp*ITd#!\C7M21c+D"EjdJP[IL2Y4gC,jo'S!_]aCP[ot59Kk1V@kaI,YlhG0Wk^<"pC-QL)s!N$L],F5@OU!B"r3J0Q_"#t@W+S)15/qKAQDf#!83E,e"W*'#\@5+7k@\DV*aO?=Nt!>ZQ!^"PK9_kEEM_%@],?QCn'YnJi'T_[$qmY,T9@00_ETmQPIdgFgI/]K-/COO&\5R?,3!jl5lXb_BegaYP:o"C3Fbn_Jnd.NQc.&j_!)1@Z(<\X#N@uap!DY)(7Ya\E9TgSgbeQdnJmd/"\U7G\>0:;W(::7^<KSen?(f6b:S"1N:'WE`P"&8JD<CM!DjZ*1E`Mo#>b8\0MAjkMY.iD13Um>A$iEAhiU\*@P$k+f03Af=N=$Phc0VaQ&)paWgPZksRE[qQ>?peRLCNKRBI/e2@&;H0HW#kN&U.m^jpAmM5SYFL/]R>$d/m`/%l73Ia\VmlD0B>=NZ>"5=%]!s6:UjGRQXP/5(9]O>Oe(5-Qj!pYiN!(OYG%42?Y0UrVfhQt2^Ub;2N`!MTk,db`iSSQW#F&d[L>R[;reZe=:;+.;:jKdQ^(<HjjO+rBDMc$*;Z+aR
 f/0sOBK-gF::!RV:og6:UOrcn;SQ!i]9+XCDGi>#@*_M_[EMuNm'oQc=KE--Bn-DiG\11.!8H1(TT]6[I6UT1O0T$GT6R,&@[?reZY`UL*:oQ<2I...@fZ78>hL&4E4+8k[ZM'9<K*W/q+CJ's>L\'VbX!Z>"?q_(F$[3sL7bJ9HuD".k,-:G@
 DST[1TP0D+O8[0X,hG#I)K,GI%n$5YdA7a6MI96E.IMEDhd)T@Aa='+!=Unq/q>`/HrgU1dL>Z.!A[hYqHIe2+T4;a_Ze_+9r`(:Y\E"8/kdaM[g35e.u-lsM%DX7Dq,LeX\V_1**g$>crKDKEC!S?6kRQ1VrEt[+BE?D)4/`YK7R125lHM6KClc$Hr,1$$ob&hhls(,U;%R$m%45[IO!7[!:O:Us?-*RHgo\YVVT:Y<`JkgdS4/l8#;!gp,O+9fjLMRpW")Ns'*/&"oUL?^A.!2+oW&N!8Ys1jo20AbZXsJE<SPObiP5-qN')c7op;Z^;fJJBB"hDDD-sB_\"pdDTod/333nXk2=gt";AG4i/2;VaW~>
+endstream
+endobj
+27 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 26 0 R
+/Annots 28 0 R
+>>
+endobj
+28 0 obj
+[
+29 0 R
+30 0 R
+31 0 R
+]
+endobj
+29 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 145.644 550.466 309.108 538.466 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html)
+/S /URI >>
+/H /I
+>>
+endobj
+30 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 110.328 499.213 215.328 487.213 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html#sc_systemReq)
+/S /URI >>
+/H /I
+>>
+endobj
+31 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 341.616 447.96 369.612 435.96 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://hadoop.apache.org/zookeeper/releases.html)
+/S /URI >>
+/H /I
+>>
+endobj
+32 0 obj
+<< /Length 2306 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gatm<>B...@A026>tlbeL1KHmiEM[F5gf9+;D(h.I:Z(]XU\4O%p1/#]>`as)mAlJ'+t_k<tJR74YR6Jq+dbR3\"_P,I'D"iha^_RN
 D^6/7-FXA"UpHmlOXSnS#N^E_4PXhuUbpGdC\s*@tBPb46&os$G5Oe?Ai,HPm8R\L2Eukl?lpc\Qdcg%"UI#1mWX%j)eBl\IPfQN=ZpSOhqOFL'mOn$:C;8^!&RS.-jAD@09]\-U>XGhId"J,KHB[9QPHV66Z+;qb+C*s`33$QM^7ETg++nIuJ0#7DTLWTSob.l42c%OnblcX^77du!FHiuI6o[5hUob1r19-B3PEgGV?u7;.@Aj:Z7D=*(:$Qfk_)Qf8UX][!i](15.t`,hAl"7b-NI4/6*&Nh3GpQMoiUTMnD%EdNU@5!@9S[fa-+&P0pu?ZqUK02+\?t1]:7(_"tQ6342YqQF"okB$X$3_CKLE:"7i-#c=(4?ZU):^P^&dZV,PSI!$_KQ&c.`g7FTYXTXJXZlSL>>Q4qg80uFCAHiah3ShV/18!d<_P...@L>0mpF%2mD%h;#AS&=p931Vj`dp``a=M>)4hla3,`C;r'3FS`kP02.QG3oCk7\s"B!JI/P"l,7mc?rU
 ?5V5Qj$QYT3*U+TTRC!q'/$r^7BI((2k+f78Lb2"c50EgYibF%A&Qtg$pSl<1Wd]HIpN\?S:X<3#=g#fU-m.^+PNrt<$Lg@Bg0CD6%:dfM6m#F`g82misfD&HU`Ssu.NLF!()XNk!Xs90b'6dWo?a&tCH>t*#]uTd6Y3V#9[f$Wle[MXBg)"rmfKS6?_-dr=ef\cc#]rtLO@/j2oXaCtiEhb$XO7A@\Rn$LnLXmnb0Y2]W9BICNTTZ&8E+JBLA=+kL,##)-YD,LE9]&7gV`h>>2f(\gm%P1J_n&?iR%=r4^"9Dm@fZEcri3cqO.hQq[Yba4@K~>
+endstream
+endobj
+33 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 32 0 R
+/Annots 34 0 R
+>>
+endobj
+34 0 obj
+[
+35 0 R
+36 0 R
+37 0 R
+38 0 R
+]
+endobj
+35 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 419.616 595.04 460.284 583.04 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperProgrammers.html#Logging)
+/S /URI >>
+/H /I
+>>
+endobj
+36 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 395.28 521.04 490.944 509.04 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+37 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 90.0 507.84 143.976 495.84 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+38 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 273.3 443.387 333.948 431.387 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperAdmin.html#sc_maintenance)
+/S /URI >>
+/H /I
+>>
+endobj
+39 0 obj
+<< /Length 1633 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gatm<D/...@6aSlc>YI=K6#W2tR6H0J8/S(l-'ZKHPuXZ&o>D&+SJ?C8nZAdPL2\i9=o6^&_AJ1#&@\AHPFalRs$=S"63g``\ZuPAOo3AXG+@o25sQ!<SDA!-PVDsc:2VHU5ZL=2UXLd42kqDUlV1g]JB+5C$-d6/6t&niR2mX+5J>?YK;EOPk5aWH^GcE4!21/
 j'kh-jaH`n:]0MB+6eGV\(:i"#X4:BZYYND4!ZJjtpH(&i"I,X:7^hN752c9f!U;k(l0DRg)+aai/N:H^,->do@=j*/1gCZK6_/0Qgt8S'B#crT\X'I=-m)O.@/\Q*O2,-tHR$3?hbE:CA_n<)V&B4BV9FTS8CY(!Rin-k08X(INGU\1MgL."m_2Xe)r4u:qpIBm8aXA;7.D>$&a49dU"TnI[&OU__k[t<^j?j$Efk,he(f\eBB`#kH1\+8ma\i?/T47]Mn?^Vd-Dd[OQi%c(5=5@LmJNr!f`BBHI.9Ll#b9"7aV0M**DrCq!:M1[gc0r69:VX3.`RD^&/+74Nkn\4J<7up=.Pd(u$IA9Qo6Qiu"Zg4m#8"hWucN?6a!^<uWZ#Z<W6n*Iifa%0aY*cQ^,Nd7D*<5q24H"mRk51.-b?TW=?k(mJXV"$hN2o([oj^]9P%Lj2FVU?Z+]L:pB*gM5Wt`cKls':)DMZBGbF01J%fr44))Cl;UX]It3-R0"3jP?Pn"Zk%O5XP:V.ZXiuB"N=36WU]QcL?=die:Tr88N0DXQ(+>eQ`J,QX<*ObXpN&l"UPm(e@bHj9:RrUX,QZu\UYi1)*8XT>=-?F5_]]UU)8aLDJd`e$h[M1BXHUq%>%Lp~>
+endstream
+endobj
+40 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 39 0 R
+>>
+endobj
+41 0 obj
+<< /Length 1271 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau`TD/Yn7&H;*)Yocmnh<ZZ8>.P6r?5'<?g0SRfV"UO?fGg="J.">NqWi&RYe*XQ270s9ZHXrE0Jbf^bQH1'P8CRI[g>Jrpmt2:_#sp-!5Cj$a%mulE#>>)TSpqLP@l,D-TDZp849\V>d<R$_$WO)'(qlEItg#P^blnE]>;Ug7^P34]:=tR?N`P,eXA5rX([flcUXUW>SScq?;I2dVZEdB*`77OKQZ76:S+5#1jaMgQj@[[>@UfZA^&0Ta%ks@eX+\uja!VKE[hZ4[:fAk.*".U[A>fb):&a/@Cu;pb#MF;P'<q2mhQ[YDWYMrhn#Xa<&c&GDObZS9^8F!DPGQ1E*&]1;lm*Nk'MC?oWCn0?eujbmNO,*-f+QX77E?`j2qDkK",(Y"eK<6:V?2bT5W18:7$/=S,DT!q%oQ2#">s:imO&%Cmg@lLNcb\=cu2;in+d`*QREO1&*iQ?\SX)V6,4Sm\leV!VWu7Y,&A<pmG4]]+io_[tWC1)a[u1CST#=Q[4]S0&m9HhW3tNpNYYus5=H!V^bVIW^aCT'@Wq,R`A0J\P8V[U_b8J8i7oG>C#tpbR'4>h<=u@(,h>,h@jHd,'b0sKiV;7>I5:1]a-u!gMMRD0B+PMe0^a?.YQra[B%1>37pJ-@aX7"R]hM4"5M'Hq.?rgM92OcgRH^R")It[#MK@Og8)n40\t>^Sba>'7$GK0Rlk&slU>\4%\e/F#ac<Z1mmlq#D)Kfa7<5p0)%h+0+._!Gjc(Z+)U&4fFC/N%RDcKX1^3ELXDCp5he@Ms!QM-+u*lL(7`Dj49TI\e3;F]?n4@D/\8d,?2;'+YIZ3A6[/$>R*)*W`8b;VYPRO^Ql:(H6;+<8KrJNRkZ"j]hD=B\EL=nJ`agp'EhY9O&6!;0!N%a:^OW:7"N(+qR*(Z5nh<`PSbdoWC*9DA)itt7V8#+R(b2nFT-gmm4j*u5*,K$/1/9CLHDI-DN*$iSY\+iHABWsRWFoY
 qZFGHK9B!?kEPm-hL;X_/;*@Pe[5;\ncdI>I+uZlBWMGi<NTjRqW9%KDo,rcq:u*(nWd8&jHf7nh^"PVp<t%=pePuW;7q\\M)eNR25*Sq$0HGAn2I;b6\q$+>i2=BG@ER)`+'MH@A,ihTqm=g,?'1DlYBNjg_<e;"(R9D9JO?:7:>L7(.O@2X8lRt7YpSASZd!>.03:4N#/gR@oIlEX8Pn-7P@c]0X+`bsdG1'QA=)CPP^=pYff"O)Ko3a=g3W.>h7X1l2MK8Vh:i!%gj^9-!sJ~>
+endstream
+endobj
+42 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 41 0 R
+>>
+endobj
+43 0 obj
+<< /Length 2572 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gatm=>E@5m'RlZ]OgbK#9H<5Q1_7A'Hddk+O]X3.<MjnCCQc3g11g7RH^r%!EFO\eX@>!EV`sk0BBSC$ea&^*Y?06._sc?\bU:+@a"dK$,PCkH_uerqYuc#8p?Ji^QTlag/0Ytgs6NJ@;./D>m&p8Xb_I;*%AZid@R'L&9(16(c]A'iXk<-`hUA-1p?7/nDoHm'jH$u-hT]uS4?G@NN+i>U_pIJXkO"Z_>*<D&$0EN/Y3#=%ZJfXNWr;R_4^d[J2Fm%486=1W7Q`uo<*RZ<K?YRCp7.)1R\!uQKNbcBU<8DR!DsWFrM`q@8jl7n@[#'&!uYJ=91o+BQ!nk_[qKp]J;e94%fH!IADa;E%tR=MaR_ti=V@\5#s@ajHLJDZI/hb:'.mT;5%eIsW0q:+[;Y?f;ajh_U283Te+^K:^l&9$H5c[oSi$F%/[S%?qUtVTIp:d:[YR=c9G6LMRioF6K6URf,r%t)btQ8AcB#X;@bhqM`2@L`l'IZk%NHT/r,<)-bouOSa-Nki=lW>NaL&O@dqA[I=NDEB5m]'3f!9nUl#:'hp>DmF\p(ViaW94bOIf[ekt59iNiHkST*[bsfXkV8X,+`Ca!dWT+:O?4qFL]jQpupVnidIb2Nk(f2-n?;P%p>tX6%(@bECK?R[hQl$W<_*FjWhtfpkJ<2$'>>/>d<X8WhSB40d=R_Mrm$MDgZ>N[5`X[N+lPP"!3kS!"VbNcpK:9i4+Q,N\BBraY+/,:C\jP!Qd?]c[M@*@&U$.SNhm(i'@Jd=Mlh8hec@J'7<.l5'4Skh\9Sn'uG+Y+#M`9esahZg4Vc.qIPk;/q$O`-krWVOLg!J]fYX-B'Wql;D-k:#Ic?'oKp9L#P;"7:*CHF&Z;XWA'41k4t<]*UY>fU(pJs-I[^hR.%X-NeOR=(U/JrH*UT^=[9C67S>1Ue)Yj#h$PTlGZNe;;K8Mo)r(KfUW\K$qI>qoOJ-91@H1c&-!?t>=\:Hr](A=
 f0DsmohK.h2D)^b'.XWiUKSTQ<n-+^f!O,*n_>ki@=_OYXUfcm5ht$>?E*'fE1C%n;>o0tX0dA*?7k)Z%J\mig/$(MSWp5PD'#Rbh//bZ0"+$YR2<CPFgp8XB,Eh[sBZPq4N),sA7_6+]A_p&Hdr*0/$&dDh/Qp"J('2XM,R](&mmN%4^0jFV"XoN']#Z1UGg6ATTGK">;'MiB,<?+:JLT;g@(3!d/r[k*D!r:;2k$+Ld@q)op#=f2bn%'E8-,u-RDo:7C9R*<W\T7BkJoo*neTQ8$h/ZW%Uc!M"$mP#A@VgTYRKO,dQt9p1)>[r#>rseUrs,_(jJGVcf2bB./9B8_Jl+Z,S"=u>Ds4uiX#%#?HAnY]h`H#OJMu7ZoQ,C<i6e=%CuILk5YM&>&Lss9TKG3+f,[S.hM<`X"JR!D$dFe)Udu+ICI2N3$V+d]<>diZtFBrl[)qsG(kkhLI+;-r&@4P=#aXr=H-PR-/qA-0m,8RLtGQ#CFAGN>WK#C^i;XYRT([fk#K;&I`A``@J)+?9rJhM\a-UO':?Km3mLUl`ZC_:#XHf(`4i9b1"_>7]ATpic5s)WPbQ5r?K+>-TgW89(=.X7ag>]lL-&Z/l3k]+\%)4WdkEgsm.b;JI5`.<-[t$^_qH)E`!:DWIpU-nF@Ihun6$B1EZN&*(hBV[9+m`+)c?1l_"W8Xa8H]!S%c)Kg\b\]?U'0Aag:RbM2a(-;A-nmfqqS?pRSD?l[Yk^\f]Ed?Z:io[!t?@[+CF_Dj$8ST7`VgC,>2cXF&ul`7ik;PR+r,e`h,dR6G9Qa%?S-0+CUd5g]a"TF1cD`[2^)FDO8+*/O]K,gTA:4+o9aE&rSDl\?j4oZo0$j+oBS,mM,jDca:OBLpdG%OH9+#p[%t4gBqcW6WChkf"\$>5*![hW%cr\s+VF-Tfe&1]uBr3c>j9gZa"h`ATtcXSA[#J!jeni6YcA3b9DMPmE+q:ETrQS'D>T'#61-8Ha
 Ru+RIpE%!S6$"(,?]N&3WOXC^S)(PK64Xk"$.`mYhdq\G6O>*eLR>:N6D88kWo8#(^o8nSX%G9/f/SN,rV2e)M8bIVbP=2K)YC8C,#n"!m!)4VUTdidJ6f:pJE&k=`=P\RrO5X?6R:]3,U,$=O3L7Ye4/=kl&c`",$L1,c2D!pe[6kmNQ3fe(Xi3)$8CKp\DT]1VkLXi)SccEtp7BjbfCfPI]L7$IBe-bUPL._P7dPr0E?L,Jn0H$?jKlLg?_R=`"CCf((AU]Cjo'##kka5h3dGDnGYH5HKajb2Zar(2]`kA<4i...@ecuIb>s=)3>0-hU^]>dA'@79Y1e2//#7/H0"]IHV&eFIT+LK?JnWNm71%66tSR.kYT7'NZ(]a38%pa+42_"V)Cf2>hN^g)V2FImdmPN@fF58%eM5AG>P_u5Nn+&V#UrCD5NDt<k>tGml[i^`YT,i2k#Zcse/$J%(TbdMm+)X>ri2b0i7&LdlO`XcdAN_SN*:jVGIuq;91qj/2T"L1+S0$1*LEJ?p<7?b3G(\AYcbqE'I.n^uF&NP~>
+endstream
+endobj
+44 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 43 0 R
+/Annots 45 0 R
+>>
+endobj
+45 0 obj
+[
+46 0 R
+47 0 R
+48 0 R
+]
+endobj
+46 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 90.0 546.04 189.144 534.04 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperProgrammers.html)
+/S /URI >>
+/H /I
+>>
+endobj
+47 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 371.976 468.387 518.304 456.387 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperProgrammers.html#ch_programStructureWithExample)
+/S /URI >>
+/H /I
+>>
+endobj
+48 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 90.0 455.187 246.12 443.187 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (zookeeperProgrammers.html#ch_programStructureWithExample)
+/S /URI >>
+/H /I
+>>
+endobj
+49 0 obj
+<< /Length 1972 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat=,gMYe)&:NH>&Gja75XLCY4YK6oej4V?>;+?tE?=<Y[7`atAVm_)rVDOlX._.]V[;]I-&m03E+[D>?>VVcDDr(FC@1!C_^;[GD>CmV^Kn&=qi0Xg,kN+X'\<6FpW_6p"uM3n:XSd#f:GDKgtF(o]/?qR5IEONcR6Ho>2.9tHkFP"m'J7'jH]Cm[BI3p*k37mM+kmu3q-lhkQAE&;n;$G?b9U#nkkY33j5l:;8+))aF*p_h<k*#*s'b*C\uQ`]]0TJ!.QSASu,$MP$D_+!^JuLED`Z4:U)&'4OG"Hi4HlE:O"5CNlu@\5?ShXBZ]i_4m"R[&aMBmJ5B<G7i'0RN3Ikl7$SXEA\+h*EDee:qXR>aHf;FjW"@,+)H4Ib09lkbUI>*s9i4p'4<bsap(58L@</X5q4db07-qbgS]\6!QTM>RM?b7-*TK@H.oLa643mSs5a9k(p;Db4<Q:CMQ!gX0!+<Zm<@,qB6L84a.*]!X9C@(f8&E*U^QnXuL][$,NC/L=,Pa%j?P*^'8lPCnn?:@L'<0nT"nMB5K?+kH,8X-S1\=p$!W21O&jeJl.m?I[NhI#opn29/mr-Llkqi<IMIjLda"a=J9'l=8M2+MN&mhJ^^=<8gIPd?QO\Waa'^(Sr"Q2:tZ6rnZl`q58:/O'<ih;Yt=F!(^#"B:E\M[r5^hLjsAkPmQ@_m$qW`+2D"Ir`0L./9,l82)Jk>pp&h-*s8%=qj\#G6JBBpF$\l1,o<X:;ST#+6,9f5dkFW\:;.SVm*_>Nb,_I_[jeM/CVl17regCIW$QnI(:=`m,N1?3_7R]9\#BQD$gmTYothi]#6:[g%I1E[_I!iKNsDc7^CH4!ZtCDFE-8)/NDo".qQD,B0gPX%<#8[N4_kG3S4ZSgu(mQAa17,O,hqq&P#.O^K//N=qK=.odKE"l7:nEl]GqKfMaS[9SHUqM";lk\Odi-*^CIj4SNh3ZdqiWXjj-CO]`"nD42[!Z%7
 (V[E(bTGil;4)\ls2Jbar)0SeRUYZ*krh2e8*bn^+fsq%TRG-@:N9q6rfO/#jRjs%m]t9@oTT[k_G]0'@m^7$dC9C"F[E+)<Oo9lheTWHuhg>#EmU!"Q2%.)Hq.jghggkQRIY[eOPp[4/>LWEnDa,P+'Y;Yh"9X?><L8s_0Ej,?(@*,1I7VL71g^>j'`UIblN'=>.&"jBXg%_5Xb^PbA\QXZ+IGNi^.glZ;@.A`dgF><%d#io6]Ano<(!Z%3o[dEY\9d3Mfk/jc#,Y%*#*U.S``J_nk<1g4eqG<6_?bROi5bWM<"B.*C=Di5#nN%(HAWU*L@$1BQR-AX1f:Ve_M`r63c0(R*aRd_KB/DfW;soEem*=Cj\D]>%[>4h@t_P9:mr&]+0XL':bq?Ri8;]LN4%5a:_$SLLU]2Mm`>r51`8d^dH2=C[:2`90OeAOI)B^Ats8YLj&,'(,-bKUKrP+JkJ)T@6/+W:nI,NrP@SQ?1HVATWn/Sh_F8e0U`pPdL-i,M'\BVH\'pbL$&lcO*i=oMD"V?)KH..Pk]RUkeO2XS&'pk.2MG17s2rFMGI1u<VpKAD-_</7_HS!V/L+ONd.nP7'X2N>'2=[(H']sp7FU<mD/;6"#V+4-g*p@:qBj(4G\eLGi%$B;e_[h#7D]<6IR2Ab4o40GqSVMhmAfMh0+\S(U\0-l!+;3]K>ZF5r=m!,+>e&/:lLpk>l\S4u;lUq*(L)9<04$T$'pM%A>FYb0PbTkV`X';\f22mpl!\fTT06Au"8:_DNM7q_'<B$j=VA+V16s;\gs4D%Zss$@HGkHk9KUZ?Ws(X*NB2lM+U9@q!Z?ql\F-;b5j>PobYccPQfK,-]-7@F4&GiHo!L'd0]70b!2:(:YD,-9R>W4p\7u0(r8Z=2hG/qa4"q&@QEYoB<\n[N1C/5-2B8])oQ6[(]OsId2hXGNE#YH-B'JHuIS-F15iWY0^@ZNFe''m/I&`KjTr~>
+endstream
+endobj
+50 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 49 0 R
+>>
+endobj
+52 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\103\0\157\0\157\0\162\0\144\0\151\0\156\0\141\0\164\0\151\0\156\0\147\0\40\0\104\0\151\0\163\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\144\0\40\0\101\0\160\0\160\0\154\0\151\0\143\0\141\0\164\0\151\0\157\0\156\0\163\0\40\0\167\0\151\0\164\0\150\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 51 0 R
+ /First 53 0 R
+ /Last 60 0 R
+ /Count -8
+ /A 9 0 R
+>> endobj
+53 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 52 0 R
+ /Next 54 0 R
+ /A 11 0 R
+>> endobj
+54 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 52 0 R
+ /Prev 53 0 R
+ /Next 55 0 R
+ /A 13 0 R
+>> endobj
+55 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\63\0\40\0\123\0\164\0\141\0\156\0\144\0\141\0\154\0\157\0\156\0\145\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\151\0\157\0\156)
+ /Parent 52 0 R
+ /Prev 54 0 R
+ /Next 56 0 R
+ /A 15 0 R
+>> endobj
+56 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\64\0\40\0\115\0\141\0\156\0\141\0\147\0\151\0\156\0\147\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\123\0\164\0\157\0\162\0\141\0\147\0\145)
+ /Parent 52 0 R
+ /Prev 55 0 R
+ /Next 57 0 R
+ /A 17 0 R
+>> endobj
+57 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\65\0\40\0\103\0\157\0\156\0\156\0\145\0\143\0\164\0\151\0\156\0\147\0\40\0\164\0\157\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 52 0 R
+ /Prev 56 0 R
+ /Next 58 0 R
+ /A 19 0 R
+>> endobj
+58 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\66\0\40\0\120\0\162\0\157\0\147\0\162\0\141\0\155\0\155\0\151\0\156\0\147\0\40\0\164\0\157\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 52 0 R
+ /Prev 57 0 R
+ /Next 59 0 R
+ /A 21 0 R
+>> endobj
+59 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\67\0\40\0\122\0\165\0\156\0\156\0\151\0\156\0\147\0\40\0\122\0\145\0\160\0\154\0\151\0\143\0\141\0\164\0\145\0\144\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162)
+ /Parent 52 0 R
+ /Prev 58 0 R
+ /Next 60 0 R
+ /A 23 0 R
+>> endobj
+60 0 obj
+<<
+ /Title (\376\377\0\61\0\56\0\70\0\40\0\117\0\164\0\150\0\145\0\162\0\40\0\117\0\160\0\164\0\151\0\155\0\151\0\172\0\141\0\164\0\151\0\157\0\156\0\163)
+ /Parent 52 0 R
+ /Prev 59 0 R
+ /A 25 0 R
+>> endobj
+61 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+62 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+63 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+64 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+65 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+66 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+67 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 7
+/Kids [6 0 R 27 0 R 33 0 R 40 0 R 42 0 R 44 0 R 50 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ /Outlines 51 0 R
+ /PageMode /UseOutlines
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F1 61 0 R /F5 62 0 R /F3 63 0 R /F2 64 0 R /F9 65 0 R /F6 66 0 R /F7 67 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+9 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 659.0 null]
+>>
+endobj
+11 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 527.466 null]
+>>
+endobj
+13 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 476.213 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 411.76 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ 85.0 484.84 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [33 0 R /XYZ 85.0 420.387 null]
+>>
+endobj
+21 0 obj
+<<
+/S /GoTo
+/D [44 0 R /XYZ 85.0 523.04 null]
+>>
+endobj
+23 0 obj
+<<
+/S /GoTo
+/D [44 0 R /XYZ 85.0 432.187 null]
+>>
+endobj
+25 0 obj
+<<
+/S /GoTo
+/D [50 0 R /XYZ 85.0 459.39 null]
+>>
+endobj
+51 0 obj
+<<
+ /First 52 0 R
+ /Last 52 0 R
+>> endobj
+xref
+0 68
+0000000000 65535 f 
+0000020795 00000 n 
+0000020895 00000 n 
+0000020987 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000933 00000 n 
+0000001053 00000 n 
+0000001134 00000 n 
+0000021132 00000 n 
+0000001269 00000 n 
+0000021195 00000 n 
+0000001406 00000 n 
+0000021261 00000 n 
+0000001543 00000 n 
+0000021327 00000 n 
+0000001680 00000 n 
+0000021392 00000 n 
+0000001817 00000 n 
+0000021457 00000 n 
+0000001954 00000 n 
+0000021523 00000 n 
+0000002091 00000 n 
+0000021588 00000 n 
+0000002227 00000 n 
+0000021654 00000 n 
+0000002364 00000 n 
+0000004805 00000 n 
+0000004928 00000 n 
+0000004969 00000 n 
+0000005142 00000 n 
+0000005328 00000 n 
+0000005528 00000 n 
+0000007927 00000 n 
+0000008050 00000 n 
+0000008098 00000 n 
+0000008283 00000 n 
+0000008419 00000 n 
+0000008553 00000 n 
+0000008739 00000 n 
+0000010465 00000 n 
+0000010573 00000 n 
+0000011937 00000 n 
+0000012045 00000 n 
+0000014710 00000 n 
+0000014833 00000 n 
+0000014874 00000 n 
+0000015048 00000 n 
+0000015258 00000 n 
+0000015464 00000 n 
+0000017529 00000 n 
+0000021719 00000 n 
+0000017637 00000 n 
+0000018161 00000 n 
+0000018346 00000 n 
+0000018510 00000 n 
+0000018745 00000 n 
+0000019015 00000 n 
+0000019267 00000 n 
+0000019525 00000 n 
+0000019807 00000 n 
+0000020022 00000 n 
+0000020130 00000 n 
+0000020240 00000 n 
+0000020353 00000 n 
+0000020469 00000 n 
+0000020575 00000 n 
+0000020686 00000 n 
+trailer
+<<
+/Size 68
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+21770
+%%EOF