hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d...@apache.org
Subject svn commit: r632035 [1/3] - in /hadoop/core/trunk: ./ conf/ docs/ src/docs/src/documentation/content/xdocs/ src/java/org/apache/hadoop/dfs/ src/java/org/apache/hadoop/mapred/ src/java/org/apache/hadoop/net/ src/test/org/apache/hadoop/dfs/ src/test/org/...
Date Thu, 28 Feb 2008 16:04:47 GMT
Author: ddas
Date: Thu Feb 28 08:04:34 2008
New Revision: 632035

URL: http://svn.apache.org/viewvc?rev=632035&view=rev
Log:
HADOOP-1985.  This addresses rack-awareness for Map tasks and for HDFS in a uniform way. Contributed by Devaraj Das.

Added:
    hadoop/core/trunk/src/java/org/apache/hadoop/net/DNSToSwitchMapping.java
    hadoop/core/trunk/src/java/org/apache/hadoop/net/ScriptBasedMapping.java
    hadoop/core/trunk/src/test/org/apache/hadoop/mapred/TestRackAwareTaskPlacement.java
    hadoop/core/trunk/src/test/org/apache/hadoop/net/StaticMapping.java
Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/conf/hadoop-default.xml
    hadoop/core/trunk/docs/cluster_setup.html
    hadoop/core/trunk/docs/cluster_setup.pdf
    hadoop/core/trunk/docs/hadoop-default.html
    hadoop/core/trunk/docs/hdfs_design.html
    hadoop/core/trunk/docs/hdfs_design.pdf
    hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml
    hadoop/core/trunk/src/docs/src/documentation/content/xdocs/hdfs_design.xml
    hadoop/core/trunk/src/docs/src/documentation/content/xdocs/site.xml
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DataNode.java
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DatanodeDescriptor.java
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DatanodeInfo.java
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DatanodeProtocol.java
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/FSNamesystem.java
    hadoop/core/trunk/src/java/org/apache/hadoop/dfs/NameNode.java
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobInProgress_Counter.properties
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/Task.java
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java
    hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
    hadoop/core/trunk/src/java/org/apache/hadoop/net/NetUtils.java
    hadoop/core/trunk/src/java/org/apache/hadoop/net/NetworkTopology.java
    hadoop/core/trunk/src/java/org/apache/hadoop/net/Node.java
    hadoop/core/trunk/src/java/org/apache/hadoop/net/NodeBase.java
    hadoop/core/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java
    hadoop/core/trunk/src/test/org/apache/hadoop/dfs/NNThroughputBenchmark.java
    hadoop/core/trunk/src/test/org/apache/hadoop/dfs/TestDatanodeBlockScanner.java
    hadoop/core/trunk/src/test/org/apache/hadoop/mapred/MiniMRCluster.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Thu Feb 28 08:04:34 2008
@@ -20,6 +20,9 @@
     Disk layout version changed from -12 to -13. See changelist 630992
     (dhruba)
 
+    HADOOP-1985.  This addresses rack-awareness for Map tasks and for 
+    HDFS in a uniform way. (ddas)
+
   NEW FEATURES
 
     HADOOP-1398.  Add HBase in-memory block cache.  (tomwhite)

Modified: hadoop/core/trunk/conf/hadoop-default.xml
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/conf/hadoop-default.xml?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/conf/hadoop-default.xml (original)
+++ hadoop/core/trunk/conf/hadoop-default.xml Thu Feb 28 08:04:34 2008
@@ -418,15 +418,6 @@
 </property>
 
 <property>
-  <name>dfs.network.script</name>
-  <value></value>
-  <description>
-        Specifies a script name that print the network location path
-        of the current machine.
-  </description>
-</property>
-
-<property>
   <name>dfs.balance.bandwidthPerSec</name>
   <value>1048576</value>
   <description>
@@ -1146,6 +1137,45 @@
   <value></value>
   <description> Address (host:port) of the SOCKS server to be used by the
     SocksSocketFactory.
+  </description>
+</property>
+
+<!-- Rack Configuration -->
+
+<property>
+  <name>topology.node.switch.mapping.impl</name>
+  <value>org.apache.hadoop.net.ScriptBasedMapping</value>
+  <description> The default implementation of the DNSToSwitchMapping. It
+    invokes a script specified in topology.script.file.name to resolve
+    node names. If the value for topology.script.file.name is not set, the
+    default value of DEFAULT_RACK is returned for all node names.
+  </description>
+</property>
+
+<property>
+  <name>topology.script.file.name</name>
+  <value></value>
+  <description> The script name that should be invoked to resolve DNS names to
+    NetworkTopology names. Example: the script would take host.foo.bar as an
+    argument, and return /rack1 as the output.
+  </description>
+</property>
+
+<property>
+  <name>topology.script.number.args</name>
+  <value>20</value>
+  <description> The max number of args that the script configured with 
+    topology.script.file.name should be run with. Each arg is an
+    IP address.
+  </description>
+</property>
+
+<property>
+  <name>mapred.task.cache.levels</name>
+  <value>2</value>
+  <description> This is the max level of the task cache. For example, if
+    the level is 2, the tasks cached are at the host level and at the rack
+    level.
   </description>
 </property>
 

Modified: hadoop/core/trunk/docs/cluster_setup.html
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/cluster_setup.html?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/docs/cluster_setup.html (original)
+++ hadoop/core/trunk/docs/cluster_setup.html Thu Feb 28 08:04:34 2008
@@ -204,6 +204,9 @@
 </ul>
 </li>
 <li>
+<a href="#Hadoop+Rack+Awareness">Hadoop Rack Awareness</a>
+</li>
+<li>
 <a href="#Hadoop+Startup">Hadoop Startup</a>
 </li>
 <li>
@@ -656,7 +659,30 @@
 </div>
     
     
-<a name="N10343"></a><a name="Hadoop+Startup"></a>
+<a name="N10343"></a><a name="Hadoop+Rack+Awareness"></a>
+<h2 class="h3">Hadoop Rack Awareness</h2>
+<div class="section">
+<p>The HDFS and the Map-Reduce components are rack-aware.</p>
+<p>The <span class="codefrag">NameNode</span> and the <span class="codefrag">JobTracker</span> obtains the
+      <span class="codefrag">rack id</span> of the slaves in the cluster by invoking an API 
+      <a href="api/org/apache/hadoop/net/DNSToSwitchMapping.html#resolve(java.util.List)">resolve</a> in an administrator configured
+      module. The API resolves the slave's DNS name (also IP address) to a 
+      rack id. What module to use can be configured using the configuration
+      item <span class="codefrag">topology.node.switch.mapping.impl</span>. The default 
+      implementation of the same runs a script/command configured using 
+      <span class="codefrag">topology.script.file.name</span>. If topology.script.file.name is
+      not set, the rack id <span class="codefrag">/default-rack</span> is returned for any 
+      passed IP address. The additional configuration in the Map-Reduce
+      part is <span class="codefrag">mapred.cache.task.levels</span> which determines the number
+      of levels (in the network topology) of caches. So, for example, if it is
+      the default value of 2, two levels of caches will be constructed - 
+      one for hosts (host -&gt; task mapping) and another for racks 
+      (rack -&gt; task mapping).
+      </p>
+</div>
+    
+    
+<a name="N10369"></a><a name="Hadoop+Startup"></a>
 <h2 class="h3">Hadoop Startup</h2>
 <div class="section">
 <p>To start a Hadoop cluster you will need to start both the HDFS and 
@@ -691,7 +717,7 @@
 </div>
     
     
-<a name="N10389"></a><a name="Hadoop+Shutdown"></a>
+<a name="N103AF"></a><a name="Hadoop+Shutdown"></a>
 <h2 class="h3">Hadoop Shutdown</h2>
 <div class="section">
 <p>

Modified: hadoop/core/trunk/docs/cluster_setup.pdf
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/cluster_setup.pdf?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/docs/cluster_setup.pdf (original)
+++ hadoop/core/trunk/docs/cluster_setup.pdf Thu Feb 28 08:04:34 2008
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 623 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 662 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gaua=bAu>['Sc@.$C8s]PWR;Kajed_Q&`7fZVYLLCIT$K6I#/i$V2$mSVbch,qnTe7mDC`>duGn%pKAHK*[]aLA]Xe6f=>?JD:B^_N,"X+;HmbItDU.:Xqbso*r2U13[f/LN_m`13$^"m,7#u5l&Bu97SD_.nM?R`)M\YAbDfu?@_pPNNV=1^$_ueCd76*JC1bG7`5[T%%/+.E9^/(H&(!Mn&N87Fmmll$c7$.8'X,jrXiO*QE_lmA-*ptfST?t;7B"X%o(q`eZVU6O#nGWft3n3LM4PtbKu+?kH;9ogK(c1h<G4d;W](*=Wq0:JZqT0eGDOUF`SPHlJ)je$SaCi+o>`c>Y,MDAGBbC'+4Q#s"!;+7G0TdIh-b4H6M.5eH&mI\NDVAAmUPNM>tktF/3+7jS_"#=Nt*$e)^RBA1gZ*3PZ<sfT\klSZPTL67[c$h[(Hm3#Bd!^'.:`@[T@Krep\2fRnWU-d/^*Q^g<)QJ$>h<.rPXObD/:CtL@lKEIu7SUJcNrFLZ+Ih72lOc1Z3&aZk4_*R$HIa7KTDpo\%2I8V^'98hV&<bEj:F[9,kA$XC4'gU-as8394`lI@3A>`\D5.]omLrgtb5>-B(t&?`AQ\:?~>
+Gaua=9lldX&;KZO$6>[)<.+kh,Z@Ln;d+6XHD%^NR8DrMd7jRg-%V3Fc33kSnA/GqAYmH$?1!'&Hrs<4(dt$q''-d8#m0u,"(XV5jDIXF"KBI-nI'_OI4BG5*H/_F8M`H;H>*0#80%mmde%_^#:R;gmjZ&IpG8-ujUb?F\1GdpNH>Z?Rp)d@r8+I)aOYHs57TA.pP0?#%QT7p*W4ku9eOrpoiV1Fl_Eb3qL1`?lsn-tLX\HgXN3L^V3$WYA0*g15AGJEj\&s)[?9:>o^95q!Ld9tNB'BO#+^O0e=YL@PYG)F>.'81\5/Om^h1--fa,H,Z"*HZC9)[<lc$Cd1)=>,SjR\?K\;M4:<;qL]I"?`1]7LLWM6K[k2!r2Y+CP%ZeAms1mKEmhotBe448%`3X=A-:Yor@%b8c-31US!7],apk6!hELJ)?sr`3p/K6?olC>$bt*KT"]H@A0soB>TP*auuLHDJ8Chj@==$[A?rG<6u/Pi>c+,<jYWFIkTms$M8!btbr);rGqSmM![^,'i_WP](k%8muJ@eSc6i_L\#G9"lYHXq)c++,"#k;T>Ii$sVW"i#oM^5*`V;+'n=G-?NQiK]?GPK[O6C#8rK4A%@TdNN.r\OYF(AICo)>"%KIO9ecM!?"D,RlJHUe"8Z@D;'*m~>
 endstream
 endobj
 6 0 obj
@@ -30,6 +30,7 @@
 18 0 R
 20 0 R
 22 0 R
+24 0 R
 ]
 endobj
 8 0 obj
@@ -95,7 +96,7 @@
 20 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 102.0 450.466 185.66 438.466 ]
+/Rect [ 102.0 450.466 231.296 438.466 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A 21 0 R
@@ -105,7 +106,7 @@
 22 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 102.0 432.266 199.664 420.266 ]
+/Rect [ 102.0 432.266 185.66 420.266 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A 23 0 R
@@ -113,31 +114,41 @@
 >>
 endobj
 24 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 414.066 199.664 402.066 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 25 0 R
+/H /I
+>>
+endobj
+26 0 obj
 << /Length 2138 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
 Gatm<ac>+8&A@rkFA.3C,Ec6/\TRTKa>.JeAd/@kVJW#<dEuF$s*fi/XJ/D!NBtpX(<tR6?<-Og@eT)8m*U@YhI8;4^$Uc)55\82n_l#+32&J*(45MR(R2T)jt&@P0>?&W6'pl5pQ)fY4F=Q)r<,GSr*e.hnplNEnq-$#4;(&,L%:P95A.0Zbg<,dQ"eEOPQYtVDQujX6/YqMlFk=jFJ?oXOY.B[[*tr3UXI'[BjOgqbO1+KQ-M>Q[P$'K,kL]uZ'W#VU*"HIc`86QVD9)#5K^Cb#K/I"b=WL\k8)f/?P(eV<lfZXk1bH+;s6AB"T=ug=GJcB()s3$<JB/-ltJH%A:Y1,FR)^tBsg=`G.K<B"mCQpN+<Tg@A/L6h\l+o;*=(]R=lTOC&M_5mg.INPBH<c<!aO#K`ej=V7CUS3Fq\paq8?12dsWs,12koVb<^=Fd+49*=dre&Y4R*Wfh'sijriBH9XT<1Wfd93<KUXU=e3f@0Rth6%=uA4qV5iS\0`dO?2*)l^^HS49hcH<V3,F975Y]>jXn;@DTAV+G'?i^!/5V'P^sQT64>7Pq"/D+Tu=H5eddH=@<2u)5nJl65C2+&JB4i?31Fe6>Q%F4`Yt5O!kT4]BW+n\YBa,KS.@MnRr'a?o03-&=cO6MT;+m;X!Hp7oU>s4!BEQe=5`6'bLYjY%H10U.TAbNBec6X^j(;!+U!@<+IC'8KSg>VOZ=/"n'gYPn^=[9Unm2>_ti6Ebi^V21]FOIo)C\adM>qTrZ^=9`n)XlXrj6&0ZlSdB_i3'L&qpOB$&40Mr*A*#"p"^(;Et8!PdU,D-8DkmO_ZA>,um2Q_ld!l_')\cN(33$XGE45q6Zo7L;-&0!_#1-$_gc_B_JHBaDU!,=VAHAa?bUE$\@=@/aRC2msccED?u>Sf#TmQuTT9"2@4E$`YI`2QD0j<D6!iZs@s`P9R/q?eNq"n2RYUMrV5bq_'++LlAmlgU?76`7,!Gsuj
 j5V'.>5O7F*JAa1*VpRP6(PJaeWaEd'kn,6]<*tQS.^<SFors@L9,Bt1@0s:%m3S@X>[!T;6nGRaCk_@0:nfZZ%oG8rs.pTVG^S"h02bZM.X0`$[@)!2UDG:PO0Z:1Q'J^3n'[\a-Oo]PFA;$pMIM]t8[=H>j7B7e"2>]S/CNF='`mF7(W,<>B(Dn',t/A!&ifNoN#ELKJ8@;K[([hfenGH6a0KS%M@4\:[8BADE<jh%=)40"52ir1+7J*9qtC!GO5I[a]+trKS'WKMiOHq<Im^MK!3F)!Arl:IeR`S"q@;LBeY)t3YN:6X@,qqYs4_q:"SAQGks8@^B;Z!["\_*G9+`;e^$/SHlf/'P\//"]*ZkAP7EBBb+LhHWIVc9pEMKj6T<(LhWg-H!mW$M.IDae+>-ab@:+XG*L]0t8,`JMTEHKoWrUKbA]<[R'(nsgjfor:ohVq$@KnRjXbEfCfDG@3@Tn'k3ITrOOY"j3fhB-i:8c8?<_1'iO3lJAEF+Cm;\-aDk'\[).RqQ?H\l&m;;aNJ2.Fr26l(\VKFkm+=Ilt2]0N]NE&rsCdpWgT7oPW"]ei+[O!-UR$Ik-9d/U@MC:"8?A[?5T4O^J!7Qa@Mh5A\:__YIU7%jfhKSRWr2pe?G=fo:qFfVs2c0QO#[FXFs'BOm9/:6@]bd7qP)JQ^,>7ts/,Mg9SEX)sQ.T!?8ch[cBbFpo1c&2GO>Pf%ib+j3d8eJ'E;g\3T0FGH&4*o1B7qGr<Y[qi$DmBP\TA_su!V$S/WbWLkZAM\0F*N5ZHnsPrE'Gt'NPFJ-gc<QI\WV<)BIrs9[0cKpVe_dR^WA37OkF8'k3Y1*b0%54YeaGa`/d1.IYdIi8q)+6A@*tZXRTjaViNt9W!!1!pSNG4k<E43\Fr/e.Ai8uXa&Lp^&P`d7=dh4Phk>YEO/1Q:F,q4-7goS%@\+]nFZkZiNtO+#7Lsokge)&VQoJR%f8!)`I.j55qI%pt[Vb
 6XO%C=7rS/bO1u3O84>;e[#XLEdge.X>j%bBuh;eN<)FHtj^ZuJ"YW)o.`IoCNn=_4;/7GnsogU$pMKHIGYUMJTqr2N0dc$,[IQW"#"'PM@It5'II6XBkQM0CQ8cBc'cXcG,h0q2d9Cr[4<?0O-Fj9pdLOBFK~>
 endstream
 endobj
-25 0 obj
+27 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 24 0 R
-/Annots 26 0 R
+/Contents 26 0 R
+/Annots 28 0 R
 >>
 endobj
-26 0 obj
+28 0 obj
 [
-27 0 R
-28 0 R
 29 0 R
 30 0 R
 31 0 R
+32 0 R
+33 0 R
 ]
 endobj
-27 0 obj
+29 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 124.332 582.066 144.984 570.066 ]
@@ -148,7 +159,7 @@
 /H /I
 >>
 endobj
-28 0 obj
+30 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 176.316 533.732 217.644 521.732 ]
@@ -159,7 +170,7 @@
 /H /I
 >>
 endobj
-29 0 obj
+31 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 108.0 520.532 125.328 508.532 ]
@@ -170,7 +181,7 @@
 /H /I
 >>
 endobj
-30 0 obj
+32 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 108.0 243.011 202.32 231.011 ]
@@ -181,7 +192,7 @@
 /H /I
 >>
 endobj
-31 0 obj
+33 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 114.336 199.411 134.988 187.411 ]
@@ -192,43 +203,43 @@
 /H /I
 >>
 endobj
-32 0 obj
+34 0 obj
 << /Length 2870 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
 GauHNgN)%.&q0LUk\ZK_#UXO7`HcOaA=V-rp5W/EYa_a/9L:Wr'WECX31d>2k.O'3[o)N>AJ[q5J]?s'VZDlt[hnMB(]V%M=-)kBgP'8PCZRMcr8s``?4606iOQ!gXWB+oIdqT.EV[FVfaRkgh-F-ZSH]&\<Fs>knSGejmT9F9`<dio=)2"5o]eWa<Hn0iM0Iq=0pR$O`338B>&?Kl>[`5/ghiUe_&:NUB>hriPr#urPS,/+b)pPh%ID[K,@C#>Tplu=,fp')8&m/^C%pO33Hd@-@2*j.Yu1VfG(pAN#aZX'P8SAUgZ/.#<;[t7PBa:j]X9l@K"DN_kXIK?A*!5[kWbL5d*]3__A`#0."P@p,gNt+lDO3637nlBnQB:^n6a0iTGp??WdEak,\fA$aAhRB`$lWm#!2&D[nG/;7&]9B9ON_%L=e*NB(U]5837*i;[@3\#)DLHI"A8G8HLb)<U)=`qKA38!u7obRpX?D:(5#WA>a;kj'ZC7-=!hWEbZqnP)!m(rU31@%0qr?Vj:gKif"J]&&D:Yhl"L-n::1+8Sd7Qog]:K=A3g'BTlBb$ff8.^:hS?h)nAS1YI'0n7k3h5m[g<73eikW2qdF<!>\BF1l<d=2@(Z_^pT092`^elmXqa8GS;!JBf$W`uO(Q:ucPQ,en^VB=J/n,MCN_#9AlPILhj=L54Qc`<!QqTL,ceKCZockSl=IEoONV5q,@uiL`:'R2r(aq0t]APpX5fY`O#Z0Ir+dM;?/r*uOd.8mf0A8BD:Je-];BF;5QEZbm"\c)comeu,Q5Y.i`IIXXKs2;k7c2p;msY!bI/p_q!1-Y]UY4@0M_C)=n"%c^A7ks(SDjm\`sDPRgi>g$Rf6";T.:sX$\D?6_9bCSJ(_OaL<0([T#E;:."2KV?iL,#c2!qg>e]PUDZ%e,*W<M"]:</ea4_GjaHl#h&iI=$>8m;KJKICoLRqcFlED6hQ+f:BBSV$t3bOpNK'1E\`
 c:-6^s-pc:m$R=3*Z7X+*'GV2(O-a0W/_Do^Cstt,49G-d94(/UI"&)+Nl`+&g44I;`4qs!X.LN9A28%%5Xeij2m<k,\D=g4]"A";O0SVY[b!GZ$J\te%/7e*!cXbOLPj`JP(u`+/='m=RQ$VXh=]s?#V,C9`X;a#Q^X^1:G'a>qA?C2'UCM&X3$gV4ANE(\scD2ebl7DS8B7OYujrDWO!bS[RL[kKA:L:odNqg%$F@aUd3$-0AaSdD&1"e+\?a3UMEg_'[m;WGu^]k&gZmR1Dn_Y-B:N.1D@Dr-n77Q\W=`i%4d*<&+c.fofeJqfN8[np]hCGY0&_\ZFY;m-_#JEC("&j!l_-OCbW-Q#MSX*m5JA!T%V$oXDCJq\pndJaqbmp%Q3V_%[Hm$2<]2g!]C9&#>@;?dQ/oH)Lb@'8,72h9K&Zu/]NAo7[m2If<0ZUcjO(AE;^rTURHdlr<8LTCdt+%4EIbEgI\-IRU3MKFelae,&Kk#qn9.8nSBBO8,P&QTOgD@XsV:>R81QNm43CLjp$%:6TAC/L>[-^#%j26=9QfWP`lq^cNKAeU_=S>oD6[6Z_aVk.@=;tk9h,&,["H)Z_m/f>c"7PouF]4=p@8rDpdj)4'\Rb("@tiV&*uog-;aF:TZb5[j%]RR1a*UCstCfAf/J70Mf"OncM$@Ln2ul#t"E&YoFV^Q8=<KSo/b6@;83^i7KU:(n$7Q2i:V)ZTpJ3[kHQORu\g_#q"IB#:;;VH[.%57/p"'8?SMER:Ke67+5:bk+p[.;#+@\Wa++_qVTFbE<t<b2oDWY.DM9n@Q,VR9*.&CVe63#/.M4s]n_;/$fV6Hd-Sc+6[*>u=QS7mE/[N1-lb-`Tb:g(%aAlu\^NC-'Fs)DC)Xm&UW<]RKHlYb#b:,f4`e2N.@bc<5'7oVJF6sUJZ_uqm]PmSAp"b5^5TYXo).bVG+AHd=]@Nc(Yqu_4XNPP%P*NOQc-labZLPm?6%qgB&u
 $VB(h:j/oS+B(0nrkdRTA0=%9ku..(OSW`#A/nuO%QW'-leK1`H]0T5PdAOH_=O`=QIc6S`Y9&A7Cb"f;9istZ+7+gI6fj4HrIP9<(MSadD+)KNLLKWJl>!3q(8:nis%X:@+Bk/7,#deg?NM)D,5"*OUNDppmd$L3U+W='EO^=VT1T35d-7#&*)jIgV4TI"4@iWSB2m^mCaB<(a,kRt>@6<&7Z8'+Bkt]u\Z><WB0,oJdj[@d(!m\/FT/g2c'M^h.T3C\;5jsTKl_p&IigeP\JL:@;T]DJ_f`q-<P4L?V,1CLOEa`aq?C.oEh\DOP_k8.lh5j]>68\H!-)PCn+Pa,#Y](CL/083Ihm9SfZ%S%a,(1fI`)?$Kc;f%VXT+'UTbGm[2;Sb,NC$1I]B5Ta3j*'Df;M]_&=cTCMNSY^q.:NKZS-egFKZ'J=+`fKgB#3%`9T\e#^p82V'2FG=JNE*V\N\U0NJ_=XU^:]nHQAgIoK5,)cR;)mAK6)br6Xhlgp!+QH"j(16AA%qqP>\`OPKL37XIQJXX.J\@MTXO&Dq)>*GO5GC8GugjGECp$]-anH\oaU<C;WnV66f8\ZKAYP/h"IBWY"n+VUUH<JIi`UV^pMT$j/SK$oP3OXPY*=g''IUOp?"'Ub@H185;ce$d^/R<G(5N7C>O<A%"8AFpL.b%Mm]/2hDIn28q[Ad[drIGI'kc/l!hLCUQg5O[kq(/7gfBX3m4Utc2HImT=gHN5Nq=1,kR]A7R3ji5@IU$OMn%=PNNQD9ioqqQ1i(cHcD((.oD\bi.%dJ(c?akpPlVOk?E0uR>X;_['C&%IV&H>@Vh;(rOEkAq87d^WWjnSg=g#^NmVtc%Cf[(>%E.Z;QM(H]u2IU/Z!`[,;$OKU.YQ~>
 endstream
 endobj
-33 0 obj
+35 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 32 0 R
+/Contents 34 0 R
 >>
 endobj
-34 0 obj
+36 0 obj
 << /Length 2931 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
 Gau`VgQL;L&q-CUi+$",E<m-6-#^'%Nd!#6b'KqJ<5n`"M9q%rMWF=`j4VVj01^V(;nN*d.^aHQ,ta.iT0@\M!;Q9Hjt@6(s1CYK,QIMU:$C5ij`qpIT@!<'NY9re$*m08m;MuQoCi43JFWo/s,T_'2K7Dh0!$'TE;1O3AnI,!5AkmSZjst(g*P1m`M2[0A*fXdMhq`"[>FNN@UeQ_]YUJ7Ai"YU:a+SRhL7^*C*W[r]Q#u^*W?jXR#n`sjjD-"_qFnR)eM=gDleFj%tEW!_P,@G"+kC1(Cb7X;4Qggm5ZXg(>i/r<R&gu6PjFeL$O(%?1\4o_VprHDVebW*+f1LZf!9W2a@s]_B3@Z)f(6-JD5Qp8/%<>j7>8lS<Ah2Mg3L$h!o8&<K:sp`^Pp9^l`f)WgU#*h+^9UDdXla_T334<.](4RNJ9RNg"JiP^-R`:f/Oe<M$d6-k\[NA4co6hW<pA[&[:@Pu5d+U!f_<FNT[)k9?p%Psk,9A"LG7->K-3/a<uO*Oe<O+-0"9KFj+"]pr3H(.Y$+3:NP!.Io5D?cRnF;6g#BioU6\Mk`<OT9A<(di]JQk+tc:RUo\qUJDM&H=%D1C.9Yslu?\&F4[41;P\-KJc>2XdUIU(Gd9bg8o[`l?(`gj!.7@Uo6%0ePLe-]FXJ!5$@=+'V.hM.,)fN*76UZKX6QX0WlsVq`(Kpar4Dun*O#LtrD;21k\G3VcKdf/!1?GBY(FJIK:(kr-F4K'p&Hs^5c=W+CX.9-:A&Ep#,jHlP%/rF?>)ocrO5V%P/D!]N7Lsdcp>(^"pe_XB:7=J`q$!!JW<%d"QK*A4L7^aER@g'U_=8d_@M5e>@eRj0%p=JP:TJ#PIQItoQ<M7%JZe5U8o,!c.K"`V=#m/hm6h2@g>E+cH"7Ur:gFZE)M6&P6qdQ8gIrC?t8lk%>`<D!NYkaA2-cn0/4soO(7mn4:'jmUu#nDJ=JVgAc0Co^*1r*`uRISYM/`
 Q"2CY\,]ITo4%$^eop%U'IJ[n;]t%%BOZTci5$%A+YNkCrpgg_7LU;okL,9jbU_:Tr*Ht5/-(7@r.0<?E\6`";o%]O9nZ@Hs?<0o.&#o&i(NlA@G\)@\cY=3=.NQ#32JO-G>sc+Y7fF,&RkZN3'c.#r(ek1cZP.tP>qJ5TZmE*[EB*#^?0:CI8"DdG?VL$WBV/V6QXU(1U-Xjoni^3:oGf51h:Y&:;0Y.Qlg'S6\X8;Z<iHT!dBG[T&lAoFHr+U>&Q[%j^Wq8Z&6tq7QV\'Gf@A;:BK-cr@nF))5"7dfoDL`2W*rpfH0NV1q<*YHN5V>64sV!+%;`n]nYhYHJu8coG=kW7DgMtV/9rh16X)=T_fc:JmBGW'S>uKuT0ItKp+5@MC-Esu.=o;q.\FX^NVp&54;:`"56#$H\=!.+H@0J!:&*5`QHNLZ&.dZo(6:P$pVj][_3M.G7r-%SkQNqj9X=@/V]-Bm'>(pN(BXYI;&YA7ZE.f61\E2s-b'/t%T/PRi7Ip=a9;!gFM<S-opM(V'!i"R!^1Q.QFj(D;BDAiaYOK/ha2!"XDYh3!`/MbCs;o'HgL5XMpgE7H's8/]M"`o(>DRZ7@kN`a/0P<Xt4+2.*bWG$2^2-b\M\5Wl?O]>`T]jaR+2g#p<!^%dfqL(N!Koht&W07[@]!=R9ih']A>eBf^'d`T&D!]\YF]'cmY]).\QY,(i:G&b8u8V`Z6<pJkPN)juS.N'/7Yg[&'d342=8%LX<=MujD[U[f!VFV(e^4@1R)jP+G_aq;Br9XeWu"L:JKcgguFa6>TV)cdgYhZ=ZVcF7SW$:u!s]EQY&a3X_Cle!L'43oP-=o+-RC>&J)c(G8W956^M5$8.&0,_NoaPsG<oq,dja:j?P8(]KF-u9^YmJ:hV6sW(;d'XGp4%nu]<gJgO%CuiTp505@"I'gEUcctD*Ss!j"kl363NYVC'Otb%/[a!)-Om;!NR9(&oYr[Bh@lV^\:/
 <o9*LUX#?\Fa7\_.an=1D,X!CjZ(%E8*,ZCL&jY^7Hpb$pDH"15t*fCp"ESZtAlF]!ID_J!:RkIG?<_!G'IGo\YjG2b-dQYnd:Ni$$CLcO>KTV_T=*j8&U.SB=%6H1\"qbk^7_Xq9p$J%W3bg-Okq+b];b<],\)mhiq#8/o3"Tu,,absGpH^dKH[E$_b!*McpA8qpk2>0AW-H=Ag.ko+DB-emS^G!TgN%cuV&b&9=6JR<hd0!S2rBFG9P86/?ohqJ%;cIaq\3U]b"DPm2d*hVg*Tq$1[.O#>uPj%/mL0>+^Dt=aCu;ie1#L9S(&-AD&/6oMsg-KADAQXVtRJ:>TC'?Gpq)nqJh.-fr\';<W'ucQ!ieMr;!77QZ#C80!R@Xc*>L=X4j5ZB9aJ]3blq5=oJJ[>%4dgqi[<hhPZ3tkhC=1)9e@TJjMNH5b@A#Ma+i0E2P-X\XXAUE](7hMgB]DO-_9qXsq.S(GVU2'?'C+Ss[<f:>[SXUo#h\'8aqioJ(VR_7X$qe+)686*nPS70+:VV<;:EEq4+c*aD.WS*Q'_?.liNJ^CV>^0HdZFj\#%p8JU[6^ji8q3!FFNJ:]SX86s-R`7X+a0HGj77G(<fUD'k=S2""FF&#9+qZY1Ur+WQA,H#a3O87NhN/p+SCEsVV<>!1Z:#KY.7FfJh66"F']HZH5r&L3Sc;bP9237Pjq4$Qkf5RniQEMu.X'9Xb@D.3&T0VD3Ga<lrVh2If$dd9cNVU/YnbmoT"G^$gTD>r52r'L^=SG%C[58551_.m:QG4*n*X?7'[rP=7rbbopbLi-H*6U0O'12s\Vj%dp\A^b[MQ]05FfqhiT`oX^kq#uI655.Tp%i-C53k<\83CKqKICHf9.cmi-O_tV?jhlj>d/61jQFqq]\):kPP0Z^I5;.rP8.gEH_P&K4ZRBVX)6Vb6I:Tfbg[Trr=%?)9;~>
 endstream
 endobj
-35 0 obj
+37 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 34 0 R
-/Annots 36 0 R
+/Contents 36 0 R
+/Annots 38 0 R
 >>
 endobj
-36 0 obj
+38 0 obj
 [
-37 0 R
+39 0 R
 ]
 endobj
-37 0 obj
+39 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 328.596 435.8 350.592 423.8 ]
@@ -239,29 +250,29 @@
 /H /I
 >>
 endobj
-38 0 obj
+40 0 obj
 << /Length 2896 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
 Gatm>>Ee*S&q6H[iA[&PU:"mI_]-4CjW"W9(+/2Y<H'!AM3AeC.+lfR_llS9HtiC+&U%r&j,CS"rMf[0WTA?9LTbn4^HZ,p,l`;aYk=.I"[O8\19NfZ32MFIR9(Zje&)\,n,@S5)?pK=IrIN:j15)EfiF(C(a>a65)Oa`7gb4YYl#k=+"'QK>;b./PtG:cegR.3:8lolD+la5_O@qUY_Nr#]AnNNHgJqjniKO0+K(#.DjPf8^H%T.^#Va;MH<cSIjQRnqV:t_\,4a0M_J5F`Y+2[\KX:E&S<PT[1JI.#SHV*.7gCY#`U,G+`VXe]0a"C74fd$'K+de`@36"pGO:UUr]#b(Um&f5Ds%O=U/#\i'8S5a:G]$36T6(Y*).*GnaYDlC@JWl".2sQ:`OZpeJ/+;nePtP5!tF&l)@3BWQ;l=t,d$2R_c<FX(eSoi@=XK5+f\PS-4G0J&C)D4d&+.^m>IZ_?Zb'm?$QashYr6%hQF.?pK*G-W/qgX;*g#V/V=4Gp]e8-LJ3;5%L4YLM:PnrNr/X,2=uZd]RZAdOKp+UAQaU`ft2<qH;S(V(c@[c,(miUXZ1!%4"2Oi2N*aQ8&BTG'?-jZ]AL$ZXi%NA"p9*af$eRd&o:pdtI2+b'rnD";cNKZX.g@E\:Dq.i&sgX;$ecX.`8]\)B8dN67/Q.9]]cV`s5,I7NMa^"njiYKB7Ok"9YcUI7-TP^X3;5jCS4e:OA6C7:<QKDm=b.t!XA\>(>UVo:5<P4E[csEccS9Jp-07E7f=)E_.>FNt*GtBusX,<t)e*VBRML(o0OJ!*QXJWpa*`GQkR3b0oJc^TZ`I:>nEmt,SeZ?:,9C@V0D:l'ifK@`)1:=$HQ1j_@V+<-+HQ?A?abje6@a2T1HKdXY-GSFN=b&`PZ<El2M*B%i9'`fIgBNI2VNq-I#k%ok8-&Na,8'H8ikJPd&kTc@W7qL#.6rA87@s-IHZ;'CVcsa7WOVS-5KDGo:-im
 35]&rDRAp8S2t?!;r`[kXrsPLbX:H!@.0YoC[X6Ujkp=`L($?%ADqp@$$<jphA-nVC3b6rh&I7Nj@5@A>XamS!c)+_ebk<@,^HR8(:CV`Y:bmNeMXj`Tg9iX\f(keTNc7.A@#M1Iol+c+*kg"._6@Ps&IJT#"VfoB0gEWGS0q<7X9#19d0[&a&IV4?#(\g%ba(P16)%KH_;%<?Ik!b9&>JSI2'HGFn('+47mL.mWak&(7pBR*oMO*H33u>2.Q<l4V+XrLCVjVFq7,rjMQMZ#j_/Le*^!lP\/!.'6!Mc[Fc,71IMGYW.cUDFEi4#F[$So7pU\$q[q0T1C+Z+IEhBp/bEgO2G=rLH@,Ws&JAk^UhW5c%6Z+2jbl%sg_JDPd/"UoFG!Oq-.@t017Z:dj1tc!%eZK8O048-b#@d`2j/;Y5Zps%"f(M98!LfT_>dlWGa3-&aJl\m$5,HT_G'pQQbMO6,(>9f@7(`"PMu"--cq&W%mE;j7ptD*Yq!.[47a[;XF@R-QATc;(,a5<L9rA;@S9gK4fbQ&=hl/-7bRuI$*Y9m:6llhoXJP9S*cb<bf>;0j.E5brqo:Se_d("t"nq\Of#+mIHLuNX"B!KbP!Q\5>#eYROks?'3+904Q1qg`*C47[0Jt9\?s6/7-U@$Mno&lr*V$Ip)`EQmZcKk:_C2X`auR0qS>^7gLL$_ZQ0gB#7tp02Nh^<"/Ek8&]W%E!!SSW'1:&_+1juc'.I2es\Nl\A0H?9kJ"B\,BSUALOb_"?3M\CrjFHR@q(`JIdAkF:YPT#VOf^fRfp6p\n[1+=n9+HqBbr'iRGXXc9HFl,k89%k[DZ>\&?V)6SPE*b:miV%%=%u=2F$;Q@%X[l(HBV>Qo3=%do#N?jBD>kr=D^_/;`FD:*U42UhrLshuA#Hiof"$\<<*mKMhV]PLL9I`26_0>)Z%1CE'Ihf5%sa)q3DfelQhnD9fI!AHJ?Di$".meAEq;d)p-1c"P
 U;\$FF%2suUDHdLB'bCPPJJ%H^]6R.U^`(YYE`d.,P*0Q#i04Ptj6TLp*3UNWYRMnc>];3n0e+N[/hI2g=>@f+N"!/_#rDO=R8^Kt&r_TYX4t##6Lp\7.Xs,<GdBJmOXD.i3C#SEBW6X<[$]]"5A]"8FmJi'EG\'V8G,QiiYNS*]TeB&NA;Ynh^P"8<#S0@`pk]@\b@=EaYi0Fe8(l-$N$DSE7f:(r,p\0nqe-\:O:KVSDGY)4nTHE=Tm_8<Kki:i!Hd\YPl9WFPgr4b)-C2G;Yr\NJ==AA`_m+u6B7.,;_2K>Oc'nXVOd#3jm=N'bZ>h0JZ-0Jr*h"tYE5;1):e[kdgUB"&.4&_Veu^ekrWlGe[Nj\gl5=SeIT7C;LQK"\6ILL&3#s;nNhtH5NU.?\Ru^aX(i[3O5G0m3$ddP*&C`CYa9^TQcJS<C;7hPFY3s5([nWrO4L&EaTL5FW9CAZl70n`DT]d0E__Q0k8Yp)a%HRm5QR@>mrGh"lRgB"M>c-F$@BO&pJe3[LH_W@%AG+YVKM1`+i&X:UqI729F#X;8_N+!@g-\A5fVl.?G=0SC#sY6hhsT5QZCAN6a<(.=INnS*Z3n\%oGUSK;UN4Q0[fodh8fI_g\Af++7*)C?f'W#Jh!-?)G#(F/o^GhWXe3OB0qTT;mg_aH3SSY7=cY/VIZ7.U=;a\LU"o5f^-TCMd=.p2Xpqo&`u&U<4!ljq&nTXZmc`cricL8CH1Q]0`Uak&s:%@Al/WG]2I5Hc5?aa/$:Pc)<Z\"=f$Hj:-V8k3cJ[RSI"iQ*>qrp9q?mHacpn@".j94GmZUEoZ#AbF%:\6l;+?pogkiH9-[[P^XbqpJ8a%_u@dA"LKW7^$[#'eOp>J)BZobEi@kN5X8#0kN9Gc2)dMbbDN>]$3tNDrsQe_XEO~>
 endstream
 endobj
-39 0 obj
+41 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 38 0 R
-/Annots 40 0 R
+/Contents 40 0 R
+/Annots 42 0 R
 >>
 endobj
-40 0 obj
+42 0 obj
 [
-41 0 R
-42 0 R
+43 0 R
+44 0 R
 ]
 endobj
-41 0 obj
+43 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 172.32 157.906 236.64 145.906 ]
@@ -272,7 +283,7 @@
 /H /I
 >>
 endobj
-42 0 obj
+44 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 274.968 157.906 407.628 145.906 ]
@@ -283,193 +294,218 @@
 /H /I
 >>
 endobj
-43 0 obj
-<< /Length 2107 /Filter [ /ASCII85Decode /FlateDecode ]
+45 0 obj
+<< /Length 2498 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gb!#]D/\/e&H;*)+VY*G!XgTCHL82MBpKHMdl$QkFXUdW[aiNp-HS!$U&TP:,b%;,PhfpRL*2$ql$.C_ms0.W?Hsn$B9U(WfNO0ih^5%VCs2E4n^hdBod."#E^FT-baM=VT=d:#5Wg.AO#*/0]+uaQfk`CJ)`q:%@&p\X4lk:V2-X:7>f8a3UruIMeLAh:M7K'(00W`RI!N9\jZ9ClFZ[_Z25n$rk5"1QkaD+A21$R<q\I2RF58PW&Fhg%%O/t[(o]N5d]2Hk:>L0<Qch3mG1-qO5\q.gi;j-,1EH`dO2L[RMeO-NCrMXZYC*JWX+!0h1h.)U&m3:X)#u#f@)ab$b:$:J1*1XaGCYB;JPm+)JX7GD.S;ZROGFNl_4dX'$otqnKBRcUm4+)s+MJ*a4(iM4eb.Jc4\.`:poeGB?1A8h-#=01Z<H(/Lp@J7SlT?X;iEh2oRNS5IIlI`md@uZ[s,T8\[qb7I<o!8A(iOVQjAr2)nFOZ[16/d&O$3O07f"G&$48Z;'cd=266faT2o*h)WG\:"MnbOGiX"jJFTPl@J<V=Z`6X\)45,8o(@594XU>V#]U1FG^R(kKC:c@ncoKo6QD7h"\H")68WKICfA0kX+J=T,)%ZtBushd5`R@s%@tpEIS!>uOGjg0*.>7:b;r['_\m0(_`)_CW<]`n=3SHX#YdE\qp,W#P:m"8C<s0LPMruc\Bn`$!&^A00a#QQh]2`n3IiAG1E`AfVUBi'$)*jo,!T4#Kh*#fa<D5M[$N!Cnrm*[RQ?=m$b\rt%;I;^Abr&_e)9L*d9)luk9.eOoH\IKZ]PlB64]3mNS)*D;8<L;@e_/rcq`^:,m>MY5,<"q!EfjJff6I+*giX-n1<U(m<Qq-l_]q-!K7sI2Eqr=T&$PiRSR.Xe@h0_h;D2Q??`<L]1Wb48H=I1;Pg3diH5>]gC5:7p&t)';:a7A6"sG,"6d7Od;bJ0^;\IrANU$h,F/:4'u*^u;7Eq
 ^M^5E^/D:tN.(Dt@R+mYJ=fc_26"/5RBk5!8!%(4DBf#2'@$Vrq?UMI(JD0:7S`ZE1<CXB!7>;7\;iU$1M[BppOmBT'5+RSVXNmRuHOc\gW]f?L7._@iGFbo0^_VEkId1-b;=]K!JTH[@!P#+0`^s'c#%t.[Cs[ZR>%!!jM]?SRr6^J7m/bA$N!7<7?>,@Y`2/$ceDa5>F"lq(!+*r]dhY7;(f"VGEeSrW)6;^c.X4pZl!2`(8I"io!%r0&3a#WcaSJ2f\mG<bh>;!@N/pu(NVg]tlHSpATNXkU.a;*"P-0!t)@MJ./rt`(;*3-W31M@6mbYYV5*_4jSKu.a(&+WQ::nd_A:d[Mj0im<YQrm#*SpKs$Fpi]__IJbZ(o$[39H+0Fj<#0;FtIbluj#GhWCB(+'P1OWZ%%Ga#>=obaGG7n+iIEH=^4=)uZ!-l2N@c/jHXP'=4J'#1"P?%$86Mrjqoe0pltkKh\g#kqQfu*3Gj*U'Zr#Y]kDfA!!^\o1&]PD8W(UF'NC7kRHe5ah<`%#b'Mt#eRW9!b<f?J>U>h+^nB^bbGA-F*EP]R5/aR9\p.>hD]\H4'Z..gUB8X.'>PW)]#8!c-'WpTk\]_G67RsWgQt<Hgl-8+)iUpJt@6&QY?In=PHE$JlTM%j_00BS-$1_ih20UAcFrrZKQk1h"h<M'\=U97LI+nRF>ULk;o@bLeSHFRH^=m-0AhB6bK'D0f\&j<(A=QOPfACh_'c<RN#@=hWQ^<6;W0c2&I#f*!3h<8\pKrrgu#4Ichr,T#)F1TC'BdRC?[q*a>48!?;ZI)1sEcomiro!.-t-c4U3'il=/Rol>@7r4?.Zk2c;u'*@1Br\Qj?"I(kTBQ1,\.YEK7Ol7OlTEU'2MU8].qK=n./G_c/)u^XG0YJf6+Bh'%.b@2?$S?A$6'uc.<E&'R>WcJ$]Ma16iSH``250R_7kFkPNt2,dNJK*scc*Wq`;Lgs+UHJG>+pS#IJt
 =_-.BMP+:2knpt7&<^?Cs7s/WBiU<mt`^_,hhG,eWVfTk]Ae^V>U86e=dP,JttD-r:6_gFOj;2@RB(uOpR^$S"A[WenM-;U)*(BS49$FPN+G6Q!fq*^;eL#"u+bc;Z~>
+GatU4D3*F0')oV[63moT!P5Y:GP/iSgS@ELBX>89#5@(s#\9@3fuTm;dIo.%rU2\PA8s#]g:]"o'MHOfc9.VBjr+-iE:rh?eK7lBgVCRJ=1M+S01cfOIh\ruY="qF.&UCp]]I]$YC:e<6]e+^s(`PhDe"h4nEs_5je)8Bn/q?"]l?@O5Ook=hEPA5U0dH9^+CTHodd7h1AULab=ZTRf:q(9ZI=kmHDMFKd!puMb:E/+qj7'H$QPaaPkKm%#6u+QP2Y>T"=,1UBH-Dc-Ump2+8dTH)d[FeZPF)RTB(Gb_@WZ%m3%dFpaM&6f_b3CAbs@&`DS@t;h*B2@Mk%>m8Q;]#TSl?/6ORZU='Q%;%@g]JE7T-L-\Q70@SNiYnEcSi$B82,8[3s0unQ-_R#fnQBth:?\+_Q146/!ml,1R;<V"-IaH9u<ci$0MQMeb-1umX;=2bXhTZ3F;Nc]al0rosH%5GJmdB,e?glj"I<5;Mcc(,hcELen0ne!B(Nn?-h'Pr9-$09;RK=LF&$.WUd4%o!''B7Lcc@ZYL@Q:!OY]HB?CZ=PB_1Ckqsd*XZEE62$<^QA@Q3bnj:D\?5VDjMO3b;RqO8lVWO8DuV]&H9Ko9KJ_.ZI5DVnmK]7uSuc1-ir]Odq%+IAMI],l^5oqbE0:6C5r80ZO:UrnFlkj/m!G9cgefh4spdu:P:"`WIgmJehJ^%_rmGNTlK]WhE.iesD?"3g;:/fA,Yjl6M0`W<RTG_IO[dhK!f8-!^kL&>C]1_;;(OX8r>@M0o+o!=Ha#!9\_)`'oY%E]I3L*)@u#$_6T3cd)L+qd>4)+6&k2Nr_iSrd?k#?pn$,nT13Y402&!kkiqcr;\$jFOY4!G#h=ZME5*I,Ka*/ZMD_NVB:%m7pRA$"2at=7^X?4n8DRk4PIh8O)P,G?A*cg)HXUH$9_#57&HOBrJQV1V?ikVfm]MgN\?n>#Cj]An2f,-%\n%._;]@kSAsIX$hM>(G,T
 5f6lJLMRo(U-s!urWoDFb6R,QdQaIh7cVi#o$ko+%9/HNmO".]%Y%Bf(i2.Z6mo4Jn7Hj'PGJ)d*eiDDq><!P>^74/@*Yk-=6C+qQENoLT-L5-]IRI#dE\E4s#tta%FL,5KV8YZ[5Ksu$[,Sl&fG6H+^u\$(Y?!4\*,@V18:M%Qi.QtSN'<1b`hoFm@+nPn&EUcgENlcg_^sATE<g=j7pS-jX-jT;"g/ld7#!K6poCB]`/PJr8@EmP\`KPO;[_O,Q.mZb.g0#t=_Z7BYO=Zf<FU>.X*ctaCgh6Z56n2o;/U[(3Y\rKCj67Jk#>ZS;\Jqpl,5PW]YF@2k<Baio!q<nk#ON#@8+:q%5Ol\,`;J+a&iG7>K<uI"@?@sDN5jgC7T:0@rDY6(T-_Jm%l.%L$+E.TdoIe\#Arnk&?*VcFAJ`MWXaK>O?EJX'C>W;G3A'<--'%Tq\j<%RH\KeF74MEWOS+h!kETm=SNckopJd(/2/B`ooNBTKW\A^t]I<j26.mEb@Tj_So9TPQe8&kFN_a5)HVe[*eRb1M@01R[Zs7\=;n&CKJ-LM?@oJZ&(HmG7q7[o$McoMA+=6o(jKC)*/1ML7=7539,?1hPYSSQ+F^A#5KBo5ou!PJ6!9g.N>!ZSklXOoo@mW?N\46G2jHCcs&dg!O%FHE5iuL.1?'$35UKemX)3j[]TnGOLXbOR2h.:SQP80jq8U\&B;TOSXZL6EED%%qdH.,4ZiW)"0-2a"n_*'U`\KC]P+c]?J0Zp@2:gpR2$(s+59+WA"SlB<lqRVo8),-^BG7so(3?IX2R]>S"lU7Ous7K;_S^hQsLh*%4"?Q,F@MXJ=:/e.DhcQcOF\UaRRcQ.lG?2fFhC&CLU@XZ5rH),WL"m)_'2&0fS'bU25*"(ZX`ON%:<_'L<RL7N,_%O!.,tO?Qh'oU9*R_'92Ff59=jYA/WO[U\k5#BJ;3IkkJUhe-",_hDFk<nuL]91WN0`P/cSmb8
 Y4Di>`+NHA3"F<1@WV;,A0#Ht\\-i=_6<CPB.@7aSZmua5YU7sA3gY)&71eU,H7Ae<qcBfXk)3IA^NE#8[W]:M1-6\5CFtPu;6-n:7&aGPNqqVm/7Bs:T:SB.somV'XF0`.:ek@,Rqs?/B0hLCd5K/]PoH&Li2\LiC]26Fs??9Y5:N")8hG^'FZ"F*?WM?\lPTmY!7HlR"]lm38OKm0.pSIDFrYc:kbQ3bCUQ%oE&!2dcTl;.1nC2Jn"o*hrO#'$Z>F[JFK:RigP*l*lnA]"5B6a%/oKpHKJDT_?94k&fHhA7KIJOfI"^VDn#ju_Q9#;kJ@+HY](a@=-dM-RZ$+uV.[A4e7h(rnoOG00Q#blc?`Yh;RF>X*$cP$k\3WXjn$+&"%,EeTpr)dd&EE[sGTRICY#g4?E.8DB\)FLu.@Logn%0h>hMrq;+S*_XNdd2')5tpr$nGQ=i#&<NA2iYse]tP:uGoS00rlJBLY?**;-"pMTjSe([G)+Z8o\!tJ1j8m&+k]\$~>
 endstream
 endobj
-44 0 obj
+46 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 43 0 R
+/Contents 45 0 R
+/Annots 47 0 R
 >>
 endobj
-45 0 obj
-<< /Length 898 /Filter [ /ASCII85Decode /FlateDecode ]
+47 0 obj
+[
+48 0 R
+]
+endobj
+48 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 172.332 293.775 206.988 281.775 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (api/org/apache/hadoop/net/DNSToSwitchMapping.html#resolve(java.util.List))
+/S /URI >>
+/H /I
+>>
+endobj
+49 0 obj
+<< /Length 1305 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`R>u03/'Re<2n,j1DXfh'DEO%NrlPS'#dCa<016($XUi@0JX/9V2IEi(WdumV]VPt*V]uiM4q"X^LSqYI/bQ4RPJT0`o0R#39k(c6Q9[9Cc`3'?^-2;lS_%SLFXNVbnLe+MHN@0Wa&ZKo!!ks9UdWlWih[ED>p>2d2>RGo*"17oRJBa\sEXD0):X3+bJcSP[(0q+I6cs0GPJV3_0cEjABH7nI2C]KJ%;%(]e2g@fD/-):99D\^g.]4QgH_Su:m'8t4;ER/RY)*j_%(BB#bX2Wc2:0bjct_aVJ>k4P]97*<H%UgWPq.e,gFA"L8BYTQM5A[e4-K)1t,8Sp,&mJR*Qpj:r7qAdhH:sT$/fH]GD`%]3%l#3%J0X7A?&q8Z?#BL#0D!Ibi8)H*#cZki]qLkkb/<melorHoLn@qeN,DnQkEC6lG,K33tSiCu*X%]?kK1fpS:X*@iRPVttoU_7j\SUg%H.\F!I+`5-I+lGJ/I*OLqW`%rZD'L9*,((%NN4mtld8^Cm=@U2-m%K#F"i0,oP,M824n53_K>8aQ?npbu%lcl.fSf;JerM@(9F"r*)q7]GiaB%!#?GVH,f.3.2b@PdO>p/i-]<DWKe;d@/>,#=&QQ:\r9j"mBCE0+tKa)en+DSOP*MIr$BVh(*FjN5^lttAQJMHp&\qG7R6D5KmVr;sOGXJt2?[0J-9RmZ<c4t;7eeJhINS>2%Eu8kWJE-63ARP+)DBb!=B!3fJ&lbQ5`$&d<`e)F-Pl&ViEF6OX1'l*i_]&Y9@P0aE\4%L7B'"V.iKRK'(M4'[*WnS`B>HIT\]TB^nU+2.55.]=^(?%RL`jXj.'08HK@<Lfm<G@;`EM>'Auo$I,`5^#cml*bV@KW_g5;_mq02FZ>N(#5@Imu.~>
+Gb!#\>Ar7S'Roe[cpJmQ@%kQO['qr]f+hE9eU#u)K!AunW%;\pe-Lg-pJIY*;R.%\\H"pW`/"&snDcMN5O2f9q'DL-1P+CTs8G%cIGfI21&[Hck4L%k)'E6/]t;B.PE4+%3hm`aqOM:[nQRYRs$4nT;?W@_]P-@(GnI%Mg:`Jd;-'EiX=<MZ:Eigh\+V#Jb=WOniEk'cfHt<IX\?mi>1IT+4&rDR&$Dams*?SI$Hnri^Pi$\X,Q@u4=C`Qp\sl\cb8.E#fqJh1KA80nL\BoCQ1;&X!5*T.sEMe,aIK)::0hBQY8Df+(4OaK`OI9V!iC2k*mqMflXpJG.3coNQb?QmE4O2=6;+A4e@=]*;KCVo.IJ4TXdc$@:-#k<SJd'3RFeN7cXN4>q,'_)Cc[3(!A@8AYK?I&1[fB#QrN2ac4=#VT!%aqh.m5qgKn'Ka&@s",G=5k%21V6+K194*0S!/K`(B+U!aH4jHTR:^DZEHatPfghl#W<:4a;AXuk5mo0K!_ut[Bp/8R#pX=o`gY4C=Y&8/ihl_J+qVSYR`=H+C7#$A<es^T(Ueuk$,6fq_eqfn_4p%\Gefg%ho?k>r(75kYj'@R8S1"L*,D1EZ=NHI?Ql=q(B4llq9gUK4Qnp]oEYLN]e"_M)K_^on5k?d!6$E^/eQl.1`V8N;)2+ITpsAUh$UAGej!Y:O6sdrZ";-aB+d>hld.'(K,GP#UlU?&$/hhVZr9"Xmij^)mWD%gSBgHfMNTpolL'NabhuWuhj*%(?;1:`8#3;59\rNu1"Oe7?Uj9%PbQ,]-AEI9%hTaYp'ru2[$[='`M&nD"+DTsbeGk+$q:VmC))f4,,raqTeKk%KE@N'*818Co+4og('+nU/]mP?d<'F3>i24Wl)'%]uN6d1hl8ubb'#AnHBfEq.pkNTYfoKVKkj[<Ec"QN/F+uqoTcbBE&M4'lr'W]W*\"(9]KRJ>#kd<B7N3RJr".5HgT.@g9Gg#b=l=.
 1PGaUufcJ-D6U0j^Jdh>-:3$MmiM0X4>-jkU30,[sLU5DP65iI<rEkpHW,=->c1'et/h!A'"7aTR/oIUbrI?$Vq`TQK!X,lLl9lR=="kkf)nMWEUK<PTji"tIE/4N_Th0&H$KiPm%!`Xjp*%r'g0@[$m`LjXkuSf5qAaIc;_5Y#PX_i-pNcuaXWSm8aE@`7&M)O+`LZRnDkPQ7#]W2%-Z5#D&2NMS7.1;J:ff-]09Xksm<fs3M#=+2]X<jiF)+2K8n37i`PT%GC0>CBiN17&S].<q<!F=$F#M$OF-hn=93M2>o4rpS+'/-R,6~>
 endstream
 endobj
-46 0 obj
+50 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 45 0 R
+/Contents 49 0 R
 >>
 endobj
-48 0 obj
+52 0 obj
 <<
  /Title (\376\377\0\61\0\40\0\120\0\165\0\162\0\160\0\157\0\163\0\145)
- /Parent 47 0 R
- /Next 49 0 R
+ /Parent 51 0 R
+ /Next 53 0 R
  /A 9 0 R
 >> endobj
-49 0 obj
+53 0 obj
 <<
  /Title (\376\377\0\62\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 47 0 R
- /Prev 48 0 R
- /Next 50 0 R
+ /Parent 51 0 R
+ /Prev 52 0 R
+ /Next 54 0 R
  /A 11 0 R
 >> endobj
-50 0 obj
+54 0 obj
 <<
  /Title (\376\377\0\63\0\40\0\111\0\156\0\163\0\164\0\141\0\154\0\154\0\141\0\164\0\151\0\157\0\156)
- /Parent 47 0 R
- /Prev 49 0 R
- /Next 51 0 R
+ /Parent 51 0 R
+ /Prev 53 0 R
+ /Next 55 0 R
  /A 13 0 R
 >> endobj
-51 0 obj
+55 0 obj
 <<
  /Title (\376\377\0\64\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
- /Parent 47 0 R
- /First 52 0 R
- /Last 53 0 R
- /Prev 50 0 R
- /Next 66 0 R
+ /Parent 51 0 R
+ /First 56 0 R
+ /Last 57 0 R
+ /Prev 54 0 R
+ /Next 70 0 R
  /Count -8
  /A 15 0 R
 >> endobj
-52 0 obj
+56 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\61\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156\0\40\0\106\0\151\0\154\0\145\0\163)
- /Parent 51 0 R
- /Next 53 0 R
+ /Parent 55 0 R
+ /Next 57 0 R
  /A 17 0 R
 >> endobj
-53 0 obj
+57 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\40\0\123\0\151\0\164\0\145\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
- /Parent 51 0 R
- /First 55 0 R
- /Last 63 0 R
- /Prev 52 0 R
+ /Parent 55 0 R
+ /First 59 0 R
+ /Last 67 0 R
+ /Prev 56 0 R
  /Count -6
  /A 19 0 R
 >> endobj
-55 0 obj
+59 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\61\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\105\0\156\0\166\0\151\0\162\0\157\0\156\0\155\0\145\0\156\0\164\0\40\0\157\0\146\0\40\0\164\0\150\0\145\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\104\0\141\0\145\0\155\0\157\0\156\0\163)
- /Parent 53 0 R
- /Next 57 0 R
- /A 54 0 R
+ /Parent 57 0 R
+ /Next 61 0 R
+ /A 58 0 R
 >> endobj
-57 0 obj
+61 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\62\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\104\0\141\0\145\0\155\0\157\0\156\0\163)
- /Parent 53 0 R
- /First 59 0 R
- /Last 59 0 R
- /Prev 55 0 R
- /Next 61 0 R
+ /Parent 57 0 R
+ /First 63 0 R
+ /Last 63 0 R
+ /Prev 59 0 R
+ /Next 65 0 R
  /Count -1
- /A 56 0 R
+ /A 60 0 R
 >> endobj
-59 0 obj
+63 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\62\0\56\0\61\0\40\0\122\0\145\0\141\0\154\0\55\0\127\0\157\0\162\0\154\0\144\0\40\0\103\0\154\0\165\0\163\0\164\0\145\0\162\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156\0\163)
- /Parent 57 0 R
- /A 58 0 R
+ /Parent 61 0 R
+ /A 62 0 R
 >> endobj
-61 0 obj
+65 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\63\0\40\0\123\0\154\0\141\0\166\0\145\0\163)
- /Parent 53 0 R
- /Prev 57 0 R
- /Next 63 0 R
- /A 60 0 R
+ /Parent 57 0 R
+ /Prev 61 0 R
+ /Next 67 0 R
+ /A 64 0 R
 >> endobj
-63 0 obj
+67 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\64\0\40\0\114\0\157\0\147\0\147\0\151\0\156\0\147)
- /Parent 53 0 R
- /First 65 0 R
- /Last 65 0 R
- /Prev 61 0 R
+ /Parent 57 0 R
+ /First 69 0 R
+ /Last 69 0 R
+ /Prev 65 0 R
  /Count -1
- /A 62 0 R
+ /A 66 0 R
 >> endobj
-65 0 obj
+69 0 obj
 <<
  /Title (\376\377\0\64\0\56\0\62\0\56\0\64\0\56\0\61\0\40\0\110\0\151\0\163\0\164\0\157\0\162\0\171\0\40\0\114\0\157\0\147\0\147\0\151\0\156\0\147)
- /Parent 63 0 R
- /A 64 0 R
+ /Parent 67 0 R
+ /A 68 0 R
 >> endobj
-66 0 obj
+70 0 obj
 <<
- /Title (\376\377\0\65\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\123\0\164\0\141\0\162\0\164\0\165\0\160)
- /Parent 47 0 R
- /Prev 51 0 R
- /Next 67 0 R
+ /Title (\376\377\0\65\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\122\0\141\0\143\0\153\0\40\0\101\0\167\0\141\0\162\0\145\0\156\0\145\0\163\0\163)
+ /Parent 51 0 R
+ /Prev 55 0 R
+ /Next 71 0 R
  /A 21 0 R
 >> endobj
-67 0 obj
+71 0 obj
 <<
- /Title (\376\377\0\66\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\123\0\150\0\165\0\164\0\144\0\157\0\167\0\156)
- /Parent 47 0 R
- /Prev 66 0 R
+ /Title (\376\377\0\66\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\123\0\164\0\141\0\162\0\164\0\165\0\160)
+ /Parent 51 0 R
+ /Prev 70 0 R
+ /Next 72 0 R
  /A 23 0 R
 >> endobj
-68 0 obj
+72 0 obj
+<<
+ /Title (\376\377\0\67\0\40\0\110\0\141\0\144\0\157\0\157\0\160\0\40\0\123\0\150\0\165\0\164\0\144\0\157\0\167\0\156)
+ /Parent 51 0 R
+ /Prev 71 0 R
+ /A 25 0 R
+>> endobj
+73 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F3
 /BaseFont /Helvetica-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
-69 0 obj
+74 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F5
 /BaseFont /Times-Roman
 /Encoding /WinAnsiEncoding >>
 endobj
-70 0 obj
+75 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F6
 /BaseFont /Times-Italic
 /Encoding /WinAnsiEncoding >>
 endobj
-71 0 obj
+76 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F1
 /BaseFont /Helvetica
 /Encoding /WinAnsiEncoding >>
 endobj
-72 0 obj
+77 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F9
 /BaseFont /Courier
 /Encoding /WinAnsiEncoding >>
 endobj
-73 0 obj
+78 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F2
 /BaseFont /Helvetica-Oblique
 /Encoding /WinAnsiEncoding >>
 endobj
-74 0 obj
+79 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F7
@@ -479,192 +515,203 @@
 1 0 obj
 << /Type /Pages
 /Count 7
-/Kids [6 0 R 25 0 R 33 0 R 35 0 R 39 0 R 44 0 R 46 0 R ] >>
+/Kids [6 0 R 27 0 R 35 0 R 37 0 R 41 0 R 46 0 R 50 0 R ] >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 1 0 R
- /Outlines 47 0 R
+ /Outlines 51 0 R
  /PageMode /UseOutlines
  >>
 endobj
 3 0 obj
 << 
-/Font << /F3 68 0 R /F5 69 0 R /F1 71 0 R /F6 70 0 R /F9 72 0 R /F2 73 0 R /F7 74 0 R >> 
+/Font << /F3 73 0 R /F5 74 0 R /F1 76 0 R /F6 75 0 R /F9 77 0 R /F2 78 0 R /F7 79 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 9 0 obj
 <<
 /S /GoTo
-/D [25 0 R /XYZ 85.0 659.0 null]
+/D [27 0 R /XYZ 85.0 659.0 null]
 >>
 endobj
 11 0 obj
 <<
 /S /GoTo
-/D [25 0 R /XYZ 85.0 559.066 null]
+/D [27 0 R /XYZ 85.0 559.066 null]
 >>
 endobj
 13 0 obj
 <<
 /S /GoTo
-/D [25 0 R /XYZ 85.0 501.532 null]
+/D [27 0 R /XYZ 85.0 501.532 null]
 >>
 endobj
 15 0 obj
 <<
 /S /GoTo
-/D [25 0 R /XYZ 85.0 353.998 null]
+/D [27 0 R /XYZ 85.0 353.998 null]
 >>
 endobj
 17 0 obj
 <<
 /S /GoTo
-/D [25 0 R /XYZ 85.0 301.664 null]
+/D [27 0 R /XYZ 85.0 301.664 null]
 >>
 endobj
 19 0 obj
 <<
 /S /GoTo
-/D [33 0 R /XYZ 85.0 659.0 null]
+/D [35 0 R /XYZ 85.0 659.0 null]
 >>
 endobj
 21 0 obj
 <<
 /S /GoTo
-/D [44 0 R /XYZ 85.0 357.509 null]
+/D [46 0 R /XYZ 85.0 357.509 null]
 >>
 endobj
 23 0 obj
 <<
 /S /GoTo
-/D [46 0 R /XYZ 85.0 659.0 null]
+/D [46 0 R /XYZ 85.0 151.975 null]
 >>
 endobj
-47 0 obj
+25 0 obj
 <<
- /First 48 0 R
- /Last 67 0 R
+/S /GoTo
+/D [50 0 R /XYZ 85.0 452.6 null]
+>>
+endobj
+51 0 obj
+<<
+ /First 52 0 R
+ /Last 72 0 R
 >> endobj
-54 0 obj
+58 0 obj
 <<
 /S /GoTo
-/D [33 0 R /XYZ 85.0 573.347 null]
+/D [35 0 R /XYZ 85.0 573.347 null]
 >>
 endobj
-56 0 obj
+60 0 obj
 <<
 /S /GoTo
-/D [33 0 R /XYZ 85.0 408.775 null]
+/D [35 0 R /XYZ 85.0 408.775 null]
 >>
 endobj
-58 0 obj
+62 0 obj
 <<
 /S /GoTo
-/D [35 0 R /XYZ 85.0 399.6 null]
+/D [37 0 R /XYZ 85.0 399.6 null]
 >>
 endobj
-60 0 obj
+64 0 obj
 <<
 /S /GoTo
-/D [39 0 R /XYZ 85.0 282.85 null]
+/D [41 0 R /XYZ 85.0 282.85 null]
 >>
 endobj
-62 0 obj
+66 0 obj
 <<
 /S /GoTo
-/D [39 0 R /XYZ 85.0 185.078 null]
+/D [41 0 R /XYZ 85.0 185.078 null]
 >>
 endobj
-64 0 obj
+68 0 obj
 <<
 /S /GoTo
-/D [44 0 R /XYZ 85.0 641.8 null]
+/D [46 0 R /XYZ 85.0 641.8 null]
 >>
 endobj
 xref
-0 75
+0 80
 0000000000 65535 f 
-0000022719 00000 n 
-0000022819 00000 n 
-0000022911 00000 n 
+0000024200 00000 n 
+0000024300 00000 n 
+0000024392 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000785 00000 n 
-0000000905 00000 n 
-0000000979 00000 n 
-0000023056 00000 n 
-0000001114 00000 n 
-0000023119 00000 n 
-0000001251 00000 n 
-0000023185 00000 n 
-0000001386 00000 n 
-0000023251 00000 n 
-0000001523 00000 n 
-0000023317 00000 n 
-0000001660 00000 n 
-0000023383 00000 n 
-0000001797 00000 n 
-0000023447 00000 n 
-0000001933 00000 n 
-0000023513 00000 n 
-0000002070 00000 n 
-0000004301 00000 n 
-0000004424 00000 n 
-0000004479 00000 n 
-0000004648 00000 n 
-0000004825 00000 n 
-0000005001 00000 n 
-0000005214 00000 n 
-0000005413 00000 n 
-0000008376 00000 n 
-0000008484 00000 n 
-0000011508 00000 n 
-0000011631 00000 n 
-0000011658 00000 n 
-0000011865 00000 n 
-0000014854 00000 n 
-0000014977 00000 n 
-0000015011 00000 n 
-0000015195 00000 n 
-0000015383 00000 n 
-0000017583 00000 n 
-0000017691 00000 n 
-0000018681 00000 n 
-0000023577 00000 n 
-0000018789 00000 n 
-0000018922 00000 n 
-0000019111 00000 n 
-0000019289 00000 n 
-0000019513 00000 n 
-0000019728 00000 n 
-0000023628 00000 n 
-0000019977 00000 n 
-0000023694 00000 n 
-0000020377 00000 n 
-0000023760 00000 n 
-0000020720 00000 n 
-0000023824 00000 n 
-0000021023 00000 n 
-0000023889 00000 n 
-0000021185 00000 n 
-0000023955 00000 n 
-0000021379 00000 n 
-0000021576 00000 n 
-0000021765 00000 n 
-0000021946 00000 n 
-0000022059 00000 n 
-0000022169 00000 n 
-0000022280 00000 n 
-0000022388 00000 n 
-0000022494 00000 n 
-0000022610 00000 n 
+0000000824 00000 n 
+0000000944 00000 n 
+0000001025 00000 n 
+0000024537 00000 n 
+0000001160 00000 n 
+0000024600 00000 n 
+0000001297 00000 n 
+0000024666 00000 n 
+0000001432 00000 n 
+0000024732 00000 n 
+0000001569 00000 n 
+0000024798 00000 n 
+0000001706 00000 n 
+0000024864 00000 n 
+0000001843 00000 n 
+0000024928 00000 n 
+0000001980 00000 n 
+0000024994 00000 n 
+0000002116 00000 n 
+0000025060 00000 n 
+0000002253 00000 n 
+0000004484 00000 n 
+0000004607 00000 n 
+0000004662 00000 n 
+0000004831 00000 n 
+0000005008 00000 n 
+0000005184 00000 n 
+0000005397 00000 n 
+0000005596 00000 n 
+0000008559 00000 n 
+0000008667 00000 n 
+0000011691 00000 n 
+0000011814 00000 n 
+0000011841 00000 n 
+0000012048 00000 n 
+0000015037 00000 n 
+0000015160 00000 n 
+0000015194 00000 n 
+0000015378 00000 n 
+0000015566 00000 n 
+0000018157 00000 n 
+0000018280 00000 n 
+0000018307 00000 n 
+0000018534 00000 n 
+0000019932 00000 n 
+0000025124 00000 n 
+0000020040 00000 n 
+0000020173 00000 n 
+0000020362 00000 n 
+0000020540 00000 n 
+0000020764 00000 n 
+0000020979 00000 n 
+0000025175 00000 n 
+0000021228 00000 n 
+0000025241 00000 n 
+0000021628 00000 n 
+0000025307 00000 n 
+0000021971 00000 n 
+0000025371 00000 n 
+0000022274 00000 n 
+0000025436 00000 n 
+0000022436 00000 n 
+0000025502 00000 n 
+0000022630 00000 n 
+0000022827 00000 n 
+0000023057 00000 n 
+0000023246 00000 n 
+0000023427 00000 n 
+0000023540 00000 n 
+0000023650 00000 n 
+0000023761 00000 n 
+0000023869 00000 n 
+0000023975 00000 n 
+0000024091 00000 n 
 trailer
 <<
-/Size 75
+/Size 80
 /Root 2 0 R
 /Info 4 0 R
 >>
 startxref
-24019
+25566
 %%EOF

Modified: hadoop/core/trunk/docs/hadoop-default.html
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/hadoop-default.html?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/docs/hadoop-default.html (original)
+++ hadoop/core/trunk/docs/hadoop-default.html Thu Feb 28 08:04:34 2008
@@ -17,9 +17,9 @@
 <td><a name="hadoop.logfile.count">hadoop.logfile.count</a></td><td>10</td><td>The max number of log files</td>
 </tr>
 <tr>
-<td><a name="hadoop.job.history.location">hadoop.job.history.location</a></td><td>file://${hadoop.log.dir}/history</td><td> If job tracker is static the history files are stored 
-  in this single well known place. By default, it is in the local 
-  file system at ${hadoop.log.dir}/history.
+<td><a name="hadoop.job.history.location">hadoop.job.history.location</a></td><td></td><td> If job tracker is static the history files are stored 
+  in this single well known place. If No value is set here, by default,
+  it is in the local file system at ${hadoop.log.dir}/history.
   </td>
 </tr>
 <tr>
@@ -250,12 +250,6 @@
  	</td>
 </tr>
 <tr>
-<td><a name="dfs.network.script">dfs.network.script</a></td><td></td><td>
-        Specifies a script name that print the network location path
-        of the current machine.
-  </td>
-</tr>
-<tr>
 <td><a name="dfs.balance.bandwidthPerSec">dfs.balance.bandwidthPerSec</a></td><td>1048576</td><td>
         Specifies the maximum amount of bandwidth that each datanode
         can utilize for the balancing purpose in term of
@@ -694,6 +688,31 @@
 <tr>
 <td><a name="hadoop.socks.server">hadoop.socks.server</a></td><td></td><td> Address (host:port) of the SOCKS server to be used by the
     SocksSocketFactory.
+  </td>
+</tr>
+<tr>
+<td><a name="topology.node.switch.mapping.impl">topology.node.switch.mapping.impl</a></td><td>org.apache.hadoop.net.ScriptBasedMapping</td><td> The default implementation of the DNSToSwitchMapping. It
+    invokes a script specified in topology.script.file.name to resolve
+    node names. If the value for topology.script.file.name is not set, the
+    default value of DEFAULT_RACK is returned for all node names.
+  </td>
+</tr>
+<tr>
+<td><a name="topology.script.file.name">topology.script.file.name</a></td><td></td><td> The script name that should be invoked to resolve DNS names to
+    NetworkTopology names. Example: the script would take host.foo.bar as an
+    argument, and return /rack1 as the output.
+  </td>
+</tr>
+<tr>
+<td><a name="topology.script.number.args">topology.script.number.args</a></td><td>20</td><td> The max number of args that the script configured with 
+    topology.script.file.name should be run with. Each arg is an
+    IP address.
+  </td>
+</tr>
+<tr>
+<td><a name="mapred.task.cache.levels">mapred.task.cache.levels</a></td><td>2</td><td> This is the max level of the task cache. For example, if
+    the level is 2, the tasks cached are at the host level and at the rack
+    level.
   </td>
 </tr>
 </table>

Modified: hadoop/core/trunk/docs/hdfs_design.html
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/hdfs_design.html?rev=632035&r1=632034&r2=632035&view=diff
==============================================================================
--- hadoop/core/trunk/docs/hdfs_design.html (original)
+++ hadoop/core/trunk/docs/hdfs_design.html Thu Feb 28 08:04:34 2008
@@ -389,7 +389,7 @@
         Large HDFS instances run on a cluster of computers that commonly spread across many racks. Communication between two nodes in different racks has to go through switches. In most cases, network bandwidth between machines in the same rack is greater than network bandwidth between machines in different racks.  
         </p>
 <p>
-        At startup time, each Datanode determines the rack it belongs to and notifies the Namenode of its rack id upon registration. HDFS provides <acronym title="Application Programming Interface">API</acronym>s to facilitate pluggable modules that can be used to determine the rack id of a machine. A simple but non-optimal policy is to place replicas on unique racks. This prevents losing data when an entire rack fails and allows use of bandwidth from multiple racks when reading data. This policy evenly distributes replicas in the cluster which makes it easy to balance load on component failure. However, this policy increases the cost of writes because a write needs to transfer blocks to multiple racks. 
+        The NameNode determines the rack id each DataNode belongs to via the process outlined in <a href="cluster_setup.html#Hadoop+Rack+Awareness">Rack Awareness</a>. A simple but non-optimal policy is to place replicas on unique racks. This prevents losing data when an entire rack fails and allows use of bandwidth from multiple racks when reading data. This policy evenly distributes replicas in the cluster which makes it easy to balance load on component failure. However, this policy increases the cost of writes because a write needs to transfer blocks to multiple racks. 
         </p>
 <p>
         For the common case, when the replication factor is three, HDFS&rsquo;s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack. This policy cuts the inter-rack write traffic which generally improves write performance. The chance of rack failure is far less than that of node failure; this policy does not impact data reliability and availability guarantees. However, it does reduce the aggregate network bandwidth used when reading data since a block is placed in only two unique racks rather than three. With this policy, the replicas of a file do not evenly distribute across the racks. One third of replicas are on one node, two thirds of replicas are on one rack, and the other third are evenly distributed across the remaining racks. This policy improves write performance without compromising data reliability or read performance.



Mime
View raw message