Return-Path: Delivered-To: apmail-zookeeper-commits-archive@www.apache.org Received: (qmail 29395 invoked from network); 28 Feb 2011 23:23:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 28 Feb 2011 23:23:07 -0000 Received: (qmail 17489 invoked by uid 500); 28 Feb 2011 23:23:07 -0000 Delivered-To: apmail-zookeeper-commits-archive@zookeeper.apache.org Received: (qmail 17463 invoked by uid 500); 28 Feb 2011 23:23:06 -0000 Mailing-List: contact commits-help@zookeeper.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ Delivered-To: mailing list commits@zookeeper.apache.org Received: (qmail 17455 invoked by uid 99); 28 Feb 2011 23:23:06 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Feb 2011 23:23:06 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Feb 2011 23:22:58 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5538B2388C42; Mon, 28 Feb 2011 23:22:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r786254 [15/16] - in /websites/staging/zookeeper/trunk/content: ./ doc/r3.3.3/ doc/r3.3.3/images/ doc/r3.3.3/skin/ doc/r3.3.3/skin/images/ Date: Mon, 28 Feb 2011 23:22:00 -0000 To: commits@zookeeper.apache.org From: buildbot@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110228232202.5538B2388C42@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.html ============================================================================== --- websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.html (added) +++ websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.html Mon Feb 28 23:21:57 2011 @@ -0,0 +1,289 @@ + + + + + + + +ZooKeeper Quota's Guide + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + +
+
+
+
+ +
+ + +
+ +
+ +   +
+ + + + + +
+ +

ZooKeeper Quota's Guide

+

A Guide to Deployment and Administration

+
+ +
+ + + + + +

Quotas

+
+

ZooKeeper has both namespace and bytes quotas. You can use the ZooKeeperMain class to setup quotas. + ZooKeeper prints WARN messages if users exceed the quota assigned to them. The messages + are printed in the log of the ZooKeeper. +

+

+$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 +

+

The above command gives you a command line option of using quotas.

+ +

Setting Quotas

+

You can use + setquota to set a quota on a ZooKeeper node. It has an option of setting quota with + -n (for namespace) + and -b (for bytes).

+

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. +

+ +

Listing Quotas

+

You can use + listquota to list a quota on a ZooKeeper node. +

+ +

Deleting Quotas

+

You can use + delquota to delete quota on a ZooKeeper node. +

+
+ +

+ +

+
+ +
 
+
+ + + Added: websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.pdf ============================================================================== --- websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.pdf (added) +++ websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperQuotas.pdf Mon Feb 28 23:21:57 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!Q22'Sc@1MX6"Ma'>*WM&2[Z2[iu;=VMdY1Sqo#FEi/%<(TmkgnF,03Q\g[Vj[QIMp@%c;%=FSZO#=31rKQQWb5,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#.eQlqmN8-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&.!Mfa2QfeX(,#XH8Ri@8qbeWr*AV1Pfcu\pc[,%HXWhQ_]WO]W6/A"C,hAZKPj"S$7UIB1-d;eVGDgUb%qVa-*gYoODp6L8!tKR0U3r)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(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\Bmb74N]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/r3.3.3/zookeeperStarted.html ============================================================================== --- websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperStarted.html (added) +++ websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperStarted.html Mon Feb 28 23:21:57 2011 @@ -0,0 +1,643 @@ + + + + + + + +ZooKeeper Getting Started Guide + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + +
+
+
+
+ +
+ + +
+ +
+ +   +
+ + + + + +
+ +

ZooKeeper Getting Started Guide

+ + + + + + + +

Getting Started: Coordinating Distributed Applications with + ZooKeeper

+
+

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 ZooKeeper + Administrator's Guide.

+ +

Pre-requisites

+

See + System Requirements in the Admin guide.

+ +

Download

+

To get a ZooKeeper distribution, download a recent + + stable release from one of the Apache Download + Mirrors.

+ +

Standalone Operation

+

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.

+

Once you've downloaded a stable ZooKeeper release unpack + it and cd to the root

+

To start ZooKeeper you need a configuration file. Here is a sample, + create it in conf/zoo.cfg:

+
+tickTime=2000
+dataDir=/var/zookeeper
+clientPort=2181
+
+

This file can be called anything, but for the sake of this + discussion call + it conf/zoo.cfg. Change the + value of dataDir to specify an + existing (empty to start with) directory. Here are the meanings + for each of the fields:

+
+ +
+ +tickTime + +
+
+

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.

+
+ +
+
+ +
+ +dataDir + +
+
+

the location to store the in-memory database snapshots and, + unless specified otherwise, the transaction log of updates to the + database.

+
+ + +
+ +clientPort + +
+
+

the port to listen for client connections

+
+ +
+

Now that you created the configuration file, you can start + ZooKeeper:

+
bin/zkServer.sh start
+

ZooKeeper logs messages using log4j -- more detail + available in the + Logging + 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.

+

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 Running Replicated + ZooKeeper.

+ +

Managing ZooKeeper Storage

+

For long running production systems ZooKeeper storage must + be managed externally (dataDir and logs). See the section on + maintenance for + more details.

+ +

Connecting to ZooKeeper

+

Once ZooKeeper is running, you have several options for connection + to it:

+
    + +
  • + +

    +Java: Use

    + + +
    bin/zkCli.sh -server 127.0.0.1:2181
    + + +

    This lets you perform simple, file-like operations.

    + +
  • + + +
  • + +

    +C: compile cli_mt + (multi-threaded) or cli_st (single-threaded) by running + make cli_mt or make + cli_st in + the src/c subdirectory in + the ZooKeeper sources. See the README contained within + src/c for full details.

    + + +

    You can run the program + from src/c using:

    + + +
    LD_LIBRARY_PATH=. cli_mt 127.0.0.1:2181
    + + +

    or

    + + +
    LD_LIBRARY_PATH=. cli_st 127.0.0.1:2181
    + +

    This will give you a simple shell to execute file + system like operations on ZooKeeper.

    + +
  • + +
+

Once you have connected, you should see something like: +

+
+
+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]
+        
+

+ From the shell, type help to get a listing of commands that can be executed from the client, as in: +

+
+
+[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
+
+        
+

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 ls, yielding: +

+
+
+[zkshell: 8] ls /
+[zookeeper]
+        
+

Next, create a new znode by running create /zk_test my_data. This creates a new znode and associates the string "my_data" with the node. + You should see:

+
+
+[zkshell: 9] create /zk_test my_data
+Created /zk_test
+      
+

Issue another ls / command to see what the directory looks like: +

+
+
+[zkshell: 11] ls /
+[zookeeper, zk_test]
+
+        
+

+ Notice that the zk_test directory has now been created. +

+

Next, verify that the data was associated with the znode by running the get command, as in: +

+
+
+[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
+        
+

We can change the data associated with zk_test by issuing the set command, as in: +

+
+
+[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
+      
+

+ (Notice we did a get after setting the data and it did, indeed, change.

+

Finally, let's delete the node by issuing: +

+
+
+[zkshell: 16] delete /zk_test
+[zkshell: 17] ls /
+[zookeeper]
+[zkshell: 18]
+
+

That's it for now. To explore more, continue with the rest of this document and see the Programmer's Guide.

+ +

Programming to ZooKeeper

+

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 Programming + Examples in the ZooKeeper Programmer's Guide for + sample code using of the different APIs.

+ +

Running Replicated ZooKeeper

+

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 quorum, 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:

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

The new entry, initLimit is + timeouts ZooKeeper uses to limit the length of time the ZooKeeper + servers in quorum have to connect to a leader. The entry syncLimit limits how far out of date a server can + be from a leader.

+

With both of these timeouts, you specify the unit of time using + tickTime. In this example, the timeout + for initLimit is 5 ticks at 2000 milleseconds a tick, or 10 + seconds.

+

The entries of the form server.X 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 + myid in the data directory. That file has the + contains the server number, in ASCII.

+

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. +

+
+
Note
+
+ +

If you want to test multiple servers on a single + machine, specify the servername + as localhost with unique quorum & + 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 dataDirs and + distinct clientPorts are also necessary + (in the above replicated example, running on a + single localhost, you would still have + three config files).

+ +
+
+ +

Other Optimizations

+

There are a couple of other configuration parameters that can + greatly increase performance:

+
    + +
  • + +

    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 myid file. The dataLogDir + parameters indicates a different directory to use for the + transaction logs.

    + +
  • + + +
  • + +

    +[tbd: what is the other config param?] +

    + +
  • + +
+
+ +

+ +

+
+ +
 
+
+ + + Added: websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperStarted.pdf ============================================================================== --- websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperStarted.pdf (added) +++ websites/staging/zookeeper/trunk/content/doc/r3.3.3/zookeeperStarted.pdf Mon Feb 28 23:21:57 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@$%G?ML1mEbmVj,>8@&EHj/38/n3N>*(=9JKb<-2=Zdb,@t;I(R>21pN-k.I?e!kcA+nAFY2&nP$I+9B&*#Bpdla48rYFX`+6RTe/4iYH7[!P+n,>Y2QXqa;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 +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`m7nP?W=*oIi"PBGcFS&qGtH+.kLL%6rQA!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^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^(#@*_M_[EMuNm'oQc=KE--Bn-DiG\11.!8H1(TT]6[I6UT1O0T$GT6R,&@[?reZY`UL*:oQ<2I&P^hgYsS+"Qc;F,Nr^gRr5CNadEMl&]X$%BeAc*)^M)[,o`_u1gHiTcs3["YJb$%'D>RH+-qHoFk1Z?m`sV\-^R_%ok`4SBa!Y9)mdOS=T_l&?"Be*k[t1X!(@]%a\NN^6dm#::'f.[.\$>QlAsAukFAVUmJbgul7jf\oZ#$nAl9o^N!hRi^Y&`UW$>0"591drV(MC;+C'g6Vf#4e[Djde59%]b+/Un]rB!>QQ#hhrk(*m:$)i;'(n/k#N:]%S&pjjCeBQn'!Lq$_mMm"K,S2H$LCd72p^\n1T0`l@FNZN\ee2k,rLd+?o)\:$S=*MU;/M(c3ILtB.8SCD0_6Y,#gZsIPEqPOlMheX[oo@a\&fYEZgUjZ`0DeK]e)a[Vd.D[!g9@sf1"8$G?hk1rKKn@Jk$6G9epBsY!6f:,qOu!(Eo9WJ-Y9AVtIFD3o-1W?=n:?TX\S^;]^m)PbjLTos*2<.lC#WCDJ=`4YDaFj2m+X]N**j3hV1pFN]LF/L1CbA=.g_U:IWM_?R-M;0`-`POXPA]<'kp"gai,Z9>I>;0NAWdF[qDpEF)mcIUE!G$:bW"($o)D`E&2Uh]T9hL&4E4+8k[ZM'9L\'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 +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?;m'Roe[i2uNC/0c6K-)?f/aiE5]WI8NiKo#]m0+\a%`)kj@BnT-J*inGhJr[#&XFSd.Kj>=bX)G8&$+YHB`sVS5B.^krZq[%0!Wd*8(dh%KE@qm@^>!4[K6g/McY<(TTA)H$Liso%5SN1DGN?gF$`4\Niq/pA*\e*$G>"KjSDiuiAjV3.IuH1Oi;9QAYZTUF0R2.RB'(#X[$YXogu+DJ!B[ui\j,>*b9tL(*Y6I)Lj7GM45cnMPq;JZqOBfEfOR]5#c*H/cS2\T7tpSiiLVD!R<#5pMJNfM,,.ae\?NW@p)6:c2[>!_Wmek2PD&SO9?oW+b4'SeIpPo"LN=%1lrHp2S4&HQs"a)sICHi2R_oW?M'(F34]n$Gt)6;_\$)O@uTJr-.o%<`-s#h>t:(XNY&2\0"7S,Y2UH:G)b7oAfjjsV[15gK;@?:Kc9aY2;>i3-%Y$8AYe29GD(BYK7NqY;h)s\EY37GD#F<])pWX\A^Bt9We^i[?[1cdN'/diO5;3m'u465@Y.Tm-7S3PtO]h_Pe6m[Ke`?F/?1,G$0Bg#38,r%#2!8]'&ddlN;iKp`DEUlUE74(\5R(,&f:.ZEF4-?]Up#J(LAg5MkGqpfbl5\8n(RPreZ5rLtXNEBAEH0Y=*5Y-uFIGak`2k6[3_EtDkVHr2\hLZB8q.%0G\sU@3M?fa"]VD2LcHOH=T@A026>tlbeL1KHmiEM[F5gf9+;D(h.I:Z(]XU\4O%p1/#]>`as)mAlJ'+t_kXGhId"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/Qqo4l##k84BLi@KU'Hi6G/D,h^Jq&aT8b,Y^H1*&41Y1/Y'r@8B0JpT(M'$Eic@IE643/_oA5_&89gChLuCYa+*XW$'t_JPODLUtig:]bYBGe;q'6>@l13RicldMK&AFd9/LL_EAjJa'`im9H1;$o6=d1>Z96+rKXg'hENV?bbUB?!F;Ye6^@=gY[_Pu["+\t/_*hZ0&0_@3J`=5M`Hs7+Xiq:2CtbO`[`h\.f`RMtj99n:&t&^YO+5EFp6`Uk*#B:Sb`BpPh"@6+8Xh9#@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 +Gatm7qX/7,(mUd37V[%f540H7'`U9nOREc(fLon,6"11S=V0TA@ht[tOe)=lL[`MkUJ@6X$Zh.#Ce8GtN=jZbL-kSpB0_;94.Mq2"![OntQ`Np!C<2uW7+V<>E56.ij.oHNgErFEX0q2JWCr*cejUbSNgoFb'(HE,B:MA+(]6lc2L;$Gj+el+G6@S/;!RYue%9U&c-'^!i6KO7Yn5&>n*jKaD4Q,crbm7?Pa#H&EZoK3#`I@0d])BOTcrQ'V]2hJP5L`4d&(*[fdiWKkE6=)h1l'3ZSZ]W_Ol'P4!W/!t1/dm1V!=H`K7CZ1"2@6(3q)Y69IVh4&D8^sq4Mo*XZ4@EFRfh(MihP/gBIqoo[hR@`n8VUl]#r4X\02[K)B?0IAYr1m\:Kk7E[5N3D8g^]DQDLPrQ\m+1hi)1Z?knY%ul!*H?H_@7p_d0k?fE3.3i6.5#hoG&;qoVeJ9g6-k$ST:VSg#B0ue9d4PESkVq.iY0QCT:=n/iE4+2BYS`N4E![OW8F-.:;0fPfWN0sM8lmrh#Y`8OU7[.tdin2QZk++Y\,lA).%SQ0%2gM?:]iIMgi'%.HW'i&\\6\2aFt9t6fR!Ao?)K;74@M]\5@NS27a.4(:*i](CN/XP^hDT03*U*ifM_R/_ha26;_[YI=K6#W2tR6H0J8/S(l-'ZKHPuXZ&o>D&+SJ?C8nZAdPL2\i9=o6^&_AJ1#&@\AHPFalRs$=S"63g``\ZuPAOo3AXG+@o25sQ!?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!^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.P6r?5'NqWi&RYe*XQ270s9ZHXrE0Jbf^bQH1'P8CRI[g>Jrpmt2:_#sp-!5Cj$a%mulE#>>)TSpqLP@l,D-TDZp849\V>d;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's:imO&%Cmg@lLNcb\=cu2;in+d`*QREO1&*iQ?\SX)V6,4Sm\leV!VWu7Y,&AC#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#acR*)*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+uZlBWMGii2=BG@ER)`+'MH@A,ihTqm=g,?'1DlYBNjg_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.!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_>*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$'>>/>dN[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'.XWiUKSTQki@=_OYXUfcm5ht$>?E*'fE1C%n;>o0tX0dA*?7k)Z%J\mig/$(MSWp5PD'#Rbh//bZ0"+$YR2;'MiB,[r#>rseUrs,_(jJGVcf2bB./9B8_Jl+Z,S"=u>Ds4uiX#%#?HAnY]h`H#OJMu7ZoQ,C&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<4ijWr!mCPu^d([spC^t?kY2mL(`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#UrCD5NDttGml[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?=?>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_haHf;FjW"@,+)H4Ib09lkbUI>*s9i4p'4RM?b7-*TK@H.oLa643mSs5a9k(p;Db4pp&h-*s8%=qj\#G6JBBpF$\l1,oNb,_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+)#EmU!"Q2%.)Hq.jghggkQRIY[eOPp[4/>LWEnDa,P+'Y;Yh"9X?>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'2=[(H']sp7FUZF5r=m!,+>e&/:lLpk>l\S4u;lUq*(L)9<04$T$'pM%A>FYb0PbTkV`X';\f22mpl!\fTT06Au"8:_DNM7q_'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