You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2010/01/17 01:24:36 UTC

svn commit: r900036 - in /hadoop/hbase/branches/0.20: ./ docs/ src/java/org/apache/hadoop/hbase/metrics/ src/java/org/apache/hadoop/hbase/regionserver/metrics/

Author: jdcryans
Date: Sun Jan 17 00:24:35 2010
New Revision: 900036

URL: http://svn.apache.org/viewvc?rev=900036&view=rev
Log:
HBASE-2138  unknown metrics type (Stack via JD)

Modified:
    hadoop/hbase/branches/0.20/CHANGES.txt
    hadoop/hbase/branches/0.20/docs/index.html
    hadoop/hbase/branches/0.20/docs/index.pdf
    hadoop/hbase/branches/0.20/docs/linkmap.html
    hadoop/hbase/branches/0.20/docs/linkmap.pdf
    hadoop/hbase/branches/0.20/docs/metrics.html
    hadoop/hbase/branches/0.20/docs/metrics.pdf
    hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/metrics/MetricsMBeanBase.java
    hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java

Modified: hadoop/hbase/branches/0.20/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.20/CHANGES.txt Sun Jan 17 00:24:35 2010
@@ -58,6 +58,7 @@
    HBASE-2127  randomWrite mode of PerformanceEvaluation benchmark program
                writes only to a small range of keys (Kannan Muthukkaruppan
                via Stack)
+   HBASE-2138  unknown metrics type (Stack via JD)
 
   IMPROVEMENTS
    HBASE-1970  Export does one version only; make it configurable how many

Modified: hadoop/hbase/branches/0.20/docs/index.html
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/index.html?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/index.html (original)
+++ hadoop/hbase/branches/0.20/docs/index.html Sun Jan 17 00:24:35 2010
@@ -117,6 +117,9 @@
 <a href="metrics.html">HBase Metrics</a>
 </div>
 <div class="menuitem">
+<a href="cygwin.html">HBase on Windows</a>
+</div>
+<div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/Hbase">Wiki</a>
 </div>
 <div class="menuitem">
@@ -193,7 +196,7 @@
 </div>
 <div class="copyright">
         Copyright &copy;
-         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+         2009 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
 </div>
 <div id="logos"></div>
 <!--+

Modified: hadoop/hbase/branches/0.20/docs/index.pdf
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/index.pdf?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/index.pdf (original)
+++ hadoop/hbase/branches/0.20/docs/index.pdf Sun Jan 17 00:24:35 2010
@@ -8,7 +8,7 @@
 << /Length 810 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=*c#T:-(qfGS3[QYb.YNK5BX`,QSsl+9*1@osaM7p'#D#$`qo[ng_@@WJ`s6sF^>8`g8FeNV^8sGI#t,oi39^.&3!a&T$]t4p+?Y\["@:?E5dU]EmX?]sam[&YbQ@J$m[Hc$/[(VQ.7A:hrds@3ihXB/*Tr*31'W.p3he%S2"^S$DBm;%*/Z4%6YXjtc-WU/q]`Gj&lBs&B2=AbF>?)>Bj5Xo6BfHL6&20c%E`t,1[&,O#%ZMhP"f1?4RLmo[ceAqL)*uRkt";L%=[*VLun0`C2th>$b`rQ*j_0)Ar;e^ZJptLG3cfMr&o)WSBa"er;[gu+W+*a\b@4Im^I]h[8]+&7nS;>5T)P3[I`H1US59E^_hT1YqjtO7B'5\;#"!Z$+oE,n/92:JYKpoHKs*5`F.>_>)(3e2SE=A-P.9iUt/dJRrn\\iZS%gg>b6D8RCboK]<hfB=8*9+U`Vm(Q@TPE%VLofgtl(&n9h+NpSFo_9*4'9]r7[+*c8YYM3%E.*jNfT9lluH(a#ad%;[&NV8'ldIh$+g;0@$ACU2n]fo[3_k=>k)>$$RNnbJT7s&fUIIZWC:AdLRaa<6Wr#*IFJYJf*"akl1ZoXLVB%8%XYK@Z^ip62Y6[]mn)oNN+0jUUr%#1C4fA\9tlM,A&2iN-togcn_^<nX?0#Q6!Be#Z6g7YJn0a`_#71dBOe/W9/'s*u;=*K04TiQXqV(hNj#h:HO3g$UTpKeY=hO*X+"]O"qN)3nYImJ9dZ&987YJmA!`3hJ.&oEp!^B)\2l`ShLBPhHl/pY.n.5\1,#8!Wb:B~>
+Gat=*c#T:-(qfGS3[QYb.YNK5BX`,QSsl+9*1@osaM7p'#D#$`qo[ng_@@WJ`s6sF^>8`g8FeNV^8sGI#t,oi39^.&3!a&T$]t4p+?Y\["@:?E5dU]EmX?]sam[&YbQ@J$m[Hc$/[(VQ.7A:hrds@3ihXB/*Tr*31'W.p3he%S2"^S$DBm;%*/Z4%6YXjtc-WU/q]`Gj&lBs&B2=AbF>?)>Bj5Xo6BfHL6&20c%E`t,1[&,O#%ZMhP"f1?4RLmo[ceAqL)*uRkt";L%=[*VLun0`C2th>$b`rQ*j_0)Ar;e^ZJptLG3cfMr&o)WSBa"er;[gu+W+*a\b@4Im^I]h[8]+&7nS;>5T)P3[I`H1US59E^_hT1YqjtO7B'5\;#"!Z$+oE,n/92:JYKpoHKs*5`F.>_>)(3e2SE=A-P.9iUt/dJRrn\\iZS%gg>b6D8RCboK]<hfB=8*9+U`Vm(Q@TPE%VLofgtl(&n9h+NpSFo_9*4'9]r7[+*c8YYM3%E.*jNfT9lluH(a#ad%;[&NV8'ldIh$+g;0@$ACU2n]fo[3_k=>k)>$$RNnbJT7s&fUIIZWC:AdLRaa<6Wr#*IFJYJf*"akl1ZoXLVB%8%XYK@Z^ip62Y6[]mn)oNN+0jUUr%#1C4fA\9tlM,A&2iN-togcn_^<nX?0#Q6!Be#Z6g7YJn0a`_#71dBOe/W9/'s*u;=*K04TiQXqV(hNj#h:HO3g$UTpKeY=hO*X+"]O"qN)41aImJ9dZ&987YJmA!`3hJ.&oEp!^B)\2l`ShLBPhHl/pY.n.5\1,#8&-7:]~>
 endstream
 endobj
 6 0 obj
@@ -87,8 +87,8 @@
 13 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F3
-/BaseFont /Helvetica-Bold
+/Name /F1
+/BaseFont /Helvetica
 /Encoding /WinAnsiEncoding >>
 endobj
 14 0 obj
@@ -101,8 +101,8 @@
 15 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F1
-/BaseFont /Helvetica
+/Name /F3
+/BaseFont /Helvetica-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
 16 0 obj
@@ -124,7 +124,7 @@
 endobj
 3 0 obj
 << 
-/Font << /F3 13 0 R /F5 14 0 R /F1 15 0 R /F2 16 0 R >> 
+/Font << /F1 13 0 R /F5 14 0 R /F3 15 0 R /F2 16 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 xref
@@ -143,8 +143,8 @@
 0000001697 00000 n 
 0000001878 00000 n 
 0000002063 00000 n 
-0000002176 00000 n 
-0000002286 00000 n 
+0000002171 00000 n 
+0000002281 00000 n 
 0000002394 00000 n 
 trailer
 <<

Modified: hadoop/hbase/branches/0.20/docs/linkmap.html
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/linkmap.html?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/linkmap.html (original)
+++ hadoop/hbase/branches/0.20/docs/linkmap.html Sun Jan 17 00:24:35 2010
@@ -117,6 +117,9 @@
 <a href="metrics.html">HBase Metrics</a>
 </div>
 <div class="menuitem">
+<a href="cygwin.html">HBase on Windows</a>
+</div>
+<div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/Hbase">Wiki</a>
 </div>
 <div class="menuitem">
@@ -188,6 +191,12 @@
     
 <ul>
 <li>
+<a href="cygwin.html">HBase on Windows</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>api</em>
+</li>
+</ul>
+    
+<ul>
+<li>
 <a href="http://wiki.apache.org/hadoop/Hbase">Wiki</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>wiki</em>
 </li>
 </ul>
@@ -229,7 +238,7 @@
 </div>
 <div class="copyright">
         Copyright &copy;
-         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+         2009 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
 </div>
 <!--+
     |end bottomstrip

Modified: hadoop/hbase/branches/0.20/docs/linkmap.pdf
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/linkmap.pdf?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/linkmap.pdf (original)
+++ hadoop/hbase/branches/0.20/docs/linkmap.pdf Sun Jan 17 00:24:35 2010
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 695 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 730 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatUqd;I\]'Sc)T'O7LOAUjg9QV"fjRp'Z//G3JC.V=kIeM4$t)XZp)lmCXiDQ4tE&e<"_ruK#99[_kB1^&Iu"O_RGlsCMNYQupJbnl#Nc>e_LaCC=7_!fZE)0l688JF*6UK^_^YJf-hUuH=OXm<M:?g6"[daT)k%nM1,c4"+/3VVlB'L@amB9t5ND'bQT)>Re$L2R3#crkO%Z]m)`oP.Z&j3?)rO$oC_:<'W?9sr*eVNPoENX+3>!gED=rK.Zb6*_?\f>9M!FI2BSaL/Ie0[q"*^&RF&q)^kT@@/=90A5GH$phCWTGS<k_nO(!9E&+-RoQe5_C/]]MAFXE6h?:XSUGSs0Xh^S1qs-+5@8!pWoWka.Mfl4o=g":M]O*1"NCOShkW!,>du"81SQW[5FJl-Td8TFc[)L7"I-p"/#WQsnZVBko"*Y=;r8m8GIV94f'548Vs^o5d+qA`m8`A@1mL*(d9\A_oGp/M8D.Br4K)n81/Nc:e[M[90cjQ+"$G'&rL#XZpftHOVa5^7%do!"H?F2-C3.B!2N<O@^15P>[L[d\K9s#r[?iU;&W@R"XYYQ^JP(N>E$%bih]pDBY4'=TU<ID"QnatI#*KP'W3a%_l[P1'/<+FYO+^pX&VOVs%kbOJ3*qNeO(WcV[\E>)VKu2'm0sH:a,7_;X`s0OZ>T(ZR7!>;IqK&8'E~>
+GatUq9lK#F&;KZL'gC&5]s_E4aV!74h,UN3MF]n;X-K.kYSpu>R%jQRRh*:E<D!ukJsil!mk_C"1Pre`;]cPX&W#TkWrE\BJVAj[WkK<<Fc96%I3*ub"eJ1>A`O$),XGP7N:'[E\e8ctLrE$LXR!F)YB4YmDTW@V#K/hWAHji&Prj";#TuXEQ&D!/XAc?LA`VR^RQH,PBdI!</>[J%]io's30@+LT#ai#aZ*1p.5m%9'G;J>E=Y-h?ki%]T*\qu'T5i%/W:oFpXS,X<9q+2L)T$c+$YO6r'Nd`?l2>.S$K0$++iu#Jmq8I#Q#.o[eOX/Cf])s$);T+'[<P)MrkAC3r/+t?sX'TWIB3@I_Eqa?-2JA.cs)?o<*g3,X"SN#Rl($^.Vs8^9C[PAjg'<3gd9hTd\o+c#THJ"=O_-gJCD5j53'PjE5Md6hca#-eo:ICNZ)+;gV`0k\_cBF?9&#RR3Qr=MIrTkph,gOg<j;3'qFbA7n-,4Or3&\.hs1*/7bl0B(JFh1PU'?Ie!4o?hROD3OB%&)t9^1*&TLM;oqTMmnm,IMh^#_nAlLVetm%C!O5,e_Ht-X-g:4Rtkljn#[J:c0W4oJ,obZ;+?X$:e3;7*kY'-VFe20+4DA>.!)7BAdh/!J]NTtBP"@=qHop394R/R1L\p^"JNmSgIl0mO4PRqrL'7HXXK^\<,_?7)$nT7/Bb-DBU=`4bNcJb;eSi(%mHEXPQ~>
 endstream
 endobj
 6 0 obj
@@ -22,8 +22,8 @@
 7 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F3
-/BaseFont /Helvetica-Bold
+/Name /F1
+/BaseFont /Helvetica
 /Encoding /WinAnsiEncoding >>
 endobj
 8 0 obj
@@ -36,22 +36,22 @@
 9 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F6
-/BaseFont /Times-Italic
+/Name /F3
+/BaseFont /Helvetica-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
 10 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F1
-/BaseFont /Helvetica
+/Name /F2
+/BaseFont /Helvetica-Oblique
 /Encoding /WinAnsiEncoding >>
 endobj
 11 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F2
-/BaseFont /Helvetica-Oblique
+/Name /F6
+/BaseFont /Times-Italic
 /Encoding /WinAnsiEncoding >>
 endobj
 1 0 obj
@@ -66,23 +66,23 @@
 endobj
 3 0 obj
 << 
-/Font << /F3 7 0 R /F5 8 0 R /F1 10 0 R /F6 9 0 R /F2 11 0 R >> 
+/Font << /F1 7 0 R /F5 8 0 R /F3 9 0 R /F2 10 0 R /F6 11 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 xref
 0 12
 0000000000 65535 f 
-0000001518 00000 n 
-0000001576 00000 n 
-0000001626 00000 n 
+0000001553 00000 n 
+0000001611 00000 n 
+0000001661 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000857 00000 n 
-0000000963 00000 n 
-0000001075 00000 n 
-0000001184 00000 n 
-0000001294 00000 n 
-0000001402 00000 n 
+0000000892 00000 n 
+0000000998 00000 n 
+0000001105 00000 n 
+0000001214 00000 n 
+0000001326 00000 n 
+0000001442 00000 n 
 trailer
 <<
 /Size 12
@@ -90,5 +90,5 @@
 /Info 4 0 R
 >>
 startxref
-1746
+1781
 %%EOF

Modified: hadoop/hbase/branches/0.20/docs/metrics.html
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/metrics.html?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/metrics.html (original)
+++ hadoop/hbase/branches/0.20/docs/metrics.html Sun Jan 17 00:24:35 2010
@@ -119,6 +119,9 @@
 <div class="menupagetitle">HBase Metrics</div>
 </div>
 <div class="menuitem">
+<a href="cygwin.html">HBase on Windows</a>
+</div>
+<div class="menuitem">
 <a href="http://wiki.apache.org/hadoop/Hbase">Wiki</a>
 </div>
 <div class="menuitem">
@@ -158,6 +161,20 @@
 <li>
 <a href="#HOWTO">HOWTO</a>
 </li>
+<li>
+<a href="#Using+with+JMX"> Using with JMX </a>
+<ul class="minitoc">
+<li>
+<a href="#Enable+HBase+stats+collection">Enable HBase stats collection</a>
+</li>
+<li>
+<a href="#Setup+JMX+remote+access">Setup JMX remote access</a>
+</li>
+<li>
+<a href="#Configure+JMX+in+HBase+startup">Configure JMX in HBase startup</a>
+</li>
+</ul>
+</li>
 </ul>
 </div>
     
@@ -185,7 +202,7 @@
       </p>
 <p>
       If you enable the <em>hbase</em> context, on regionservers you'll see total requests since last
-      metric emission, count of regions and storefiles as well as a count of memcache size.
+      metric emission, count of regions and storefiles as well as a count of memstore size.
       On the master, you'll see a count of the cluster's requests.
       </p>
 <p>
@@ -199,6 +216,110 @@
       in ganglia, the stats are aggregated rather than reported per instance.
       </p>
 </div>
+
+    
+<a name="N10051"></a><a name="Using+with+JMX"></a>
+<h2 class="h3"> Using with JMX </h2>
+<div class="section">
+<p>
+      In addition to the standard output contexts supported by the Hadoop 
+      metrics package, you can also export HBase metrics via Java Management 
+      Extensions (JMX).  This will allow viewing HBase stats in JConsole or 
+      any other JMX client.
+      </p>
+<a name="N1005A"></a><a name="Enable+HBase+stats+collection"></a>
+<h3 class="h4">Enable HBase stats collection</h3>
+<p>
+      To enable JMX support in HBase, first edit 
+      <span class="codefrag">$HBASE_HOME/conf/hadoop-metrics.properties</span> to support 
+      metrics refreshing. (If you've already configured 
+      <span class="codefrag">hadoop-metrics.properties</span> for another output context, 
+      you can skip this step).
+      </p>
+<pre class="code">
+# Configuration of the "hbase" context for null
+hbase.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
+hbase.period=60
+
+# Configuration of the "jvm" context for null
+jvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
+jvm.period=60
+
+# Configuration of the "rpc" context for null
+rpc.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
+rpc.period=60
+      </pre>
+<a name="N1006E"></a><a name="Setup+JMX+remote+access"></a>
+<h3 class="h4">Setup JMX remote access</h3>
+<p>
+      For remote access, you will need to configure JMX remote passwords 
+      and access profiles.  Create the files:
+      </p>
+<dl>
+        
+<dt>
+<span class="codefrag">$HBASE_HOME/conf/jmxremote.passwd</span> (set permissions 
+        to 600)</dt>
+        
+<dd>
+        
+<pre class="code">
+monitorRole monitorpass
+controlRole controlpass
+        </pre>
+        
+</dd>
+        
+        
+<dt>
+<span class="codefrag">$HBASE_HOME/conf/jmxremote.access</span>
+</dt>
+        
+<dd>
+        
+<pre class="code">
+monitorRole readonly
+controlRole readwrite
+        </pre>
+        
+</dd>
+      
+</dl>
+<a name="N10092"></a><a name="Configure+JMX+in+HBase+startup"></a>
+<h3 class="h4">Configure JMX in HBase startup</h3>
+<p>
+      Finally, edit the <span class="codefrag">$HBASE_HOME/conf/hbase-env.sh</span>
+      script to add JMX support: 
+      </p>
+<dl>
+        
+<dt>
+<span class="codefrag">$HBASE_HOME/conf/hbase-env.sh</span>
+</dt>
+        
+<dd>
+        
+<p>Add the lines:</p>
+        
+<pre class="code">
+HBASE_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false"
+HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.password.file=$HBASE_HOME/conf/jmxremote.passwd"
+HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.access.file=$HBASE_HOME/conf/jmxremote.access"
+
+export HBASE_MASTER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10101"
+export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10102"
+        </pre>
+        
+</dd>
+      
+</dl>
+<p>
+      After restarting the processes you want to monitor, you should now be 
+      able to run JConsole (included with the JDK since JDK 5.0) to view 
+      the statistics via JMX.  HBase MBeans are exported under the 
+      <strong><span class="codefrag">hadoop</span></strong> domain in JMX.
+      </p>
+</div>
   
 </div>
 <!--+
@@ -217,7 +338,7 @@
 </div>
 <div class="copyright">
         Copyright &copy;
-         2008 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+         2009 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
 </div>
 <!--+
     |end bottomstrip

Modified: hadoop/hbase/branches/0.20/docs/metrics.pdf
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/docs/metrics.pdf?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/docs/metrics.pdf (original)
+++ hadoop/hbase/branches/0.20/docs/metrics.pdf Sun Jan 17 00:24:35 2010
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 397 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 601 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gaua9]hZI!'SU`q`?!EYMgod-FJO_m+JB-NM#eG[lElgK;A'eagCpJbmBUi81H<Fh55&W]M.,"7"YrLVVIJ>)-0)4?!dO_O)#LQhjf#I)bU:%MZUrQt&R7nupJ]2/FmZd,7dpoMTm+s.%W3X0U^;atp(jP#fF/PVVimnas(,+j>J&f`+S_q.i6iR-^f9e$6sM>D<=d:5lMK;Cc!jbcF]4'TnM7425d!rZQ9c_@@k39(!$]a!8(FsAMj]XaP-@Geb4`n3+Q"(12'd*rMr5L25ruXf7nM'2W7VcQpr(>8j`&G?:+6OO+Mr+f0NL^Lo%RdRgTHkn(K1,W8H^>"c\"!R.,Ho;U5\bd;n8NpNCKeiY$Mf+9GfA9Ck<MtmNQL0gO@l\#4t,VcG&'~>
+Gau`Q9lHd\&A@ZcHqY$@o`mBoCf[[LQ)\S!<aBFo"%u=>6qu5l>OB14)\VL:C1n,phuEl>2h')%Sja]K\R^N9J5KWAfKI@_UK'\n[PpL?q^,b\9Va(d6GI,6MkZDVF@MJDrgMY6U[,4TUIUPU>I4Nq*SLMs:H/n4#)Kqeh=M96rL1-ZIkP#;UbX!P,D$Hr#c8)n'8VhQO+c3Y7<UmXbl4JuDO9,+e?/:qiA?ml5g"Vf9;!/nVTft)*>(>,435.I^!CW[k`fUJb$5@>l'j(7%X:Kq9iDP-Irr)%q'CKmc.Y\>2a:*IqR3]!DD/kk#0ph#-6V,[!(ZcFA\\iI0@Z]O7KX00B*r91Dnr644)]MB1p/#qhP#H_DT&KhdB,V]&EM_?Ze`:"nle5b-BOuN9A+H[iY,NQAtosjZigGkLR9)@/O>Ku[8g5?g1pG@%(/.)6$0<f#>*pfOHTQ;f[IFQUHa/SlIuQ[#pbg659gT$,:ub-I?,/HK@*OM$n4n[*],Rf3Fm`:bUPA_Z2(<`e_9dNp-:Y.&]Ha$;8*Ooh>*or_t^C:b]BJ10:2',/IQ26#_k3r&,P!c&Bdi6^N'XPqL>X/O]h~>
 endstream
 endobj
 6 0 obj
@@ -24,6 +24,10 @@
 [
 8 0 R
 10 0 R
+12 0 R
+14 0 R
+16 0 R
+18 0 R
 ]
 endobj
 8 0 obj
@@ -47,29 +51,69 @@
 >>
 endobj
 12 0 obj
-<< /Length 1720 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 102.0 523.266 190.004 511.266 ]
+/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 505.066 266.48 493.066 ]
+/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 486.866 247.808 474.866 ]
+/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 468.666 282.152 456.666 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 19 0 R
+/H /I
+>>
+endobj
+20 0 obj
+<< /Length 2350 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<>Ap;q'RlZ]iJ1%I8f7jQbiLQ^jjHcUCn$QeW`rJVnIW8?bhA.8rUi<YIE]J`Q)^*M0uLPMhmo0@c0FjX+O$Sjg$D`L8QUj1n;i^QJS2^[;WdgdZR<MY1\u[(\S.S,IpZ0Tgt#&^Q,O"!45'P9]%O1!JTR[GDUh=j*Y!OiGcf2Y1WkQ;jD";9lFJ]$#ihIagF0_u"eEp8lW?ei<pm:dS)\q0/^"7)hl.b`hiSY34;rnsW,j?taI[A&Te>ql#<?d;-j&s3*]o.'=d>/t+/?``[$R'#'&?d2O;S/_D;)a[@CDmFn:0ZkmVRt,^45oho<=%Q#WWVP+0cRL"BYA\@IuHV\hY%dN47qK+3`UOamT;%3t_,h#;ZC?^^Qn(2%YcYhLiC:Jp]]^qd9H<NDjt4rdHA5F,1RRXBK7*C6!"5Uj3__Qm^Fj>_q&B6gE]n4l:qrj8URj;$dThY&iUO@cX-LpP+dZC\BVADBIjP7@=Tgm$nW]os5C:[G9<CSJ60H$E?0)Uc,'3G`H-madEJoVk-ijZeRIRpE^J)j=o)M(bC/\Isq!7o>ggIVjkl*/9[B+D18X7eb#NWK2bhtor.So1u(Vucdj$OW"rnU5NQqN[lL(3j\#MPl*FNgS<1=7?>p+RPLjMLTOb`&h6#Jkm*!a/Y:?Rq>q[no>u;)E>osQQW\j--e!O9'>oq_VmBTug_TDI:`j95[UmB72^FNnId[/QW7XQ+CrWKhK/rfAs<U+:XNfZB2M0DXK#@npcPsMK;5hd#0r*@6f\Xd3D516*5n3^WfiaRkrT>;5]&^2*8Xk*<Uh=Kc:nf3G]c:%G!-?5$'/ub,!7?tW]k(frjQSBN`VUO5&L!4XqBtbU=T\ji;pD>Hp^_8=s9L=@iQ<2h:gr_2ms"d,iMUaH.Sej]ng^^,5gf"c>/eng[=:?K];XX8ZmOVmtBNeqL:GEn#5Lt,ZEU[H`kZ%R2$[f`<P^'/"on'K[!*0m3\`X-
 nq^i<&W@'#qjre;f9;B;3FlU?/".VG,cXEhV69S*\(]umr;HQ>p<%h-`bO`%[bq^lUk@GB4F7*6a2;Tro,=p2Y\Q'om"IR";k2P$u@,,H*Y$(Qu(J#/+npM>_8Y@RVGLE(%<P;!E/,giDQhA&I-ZO_O;eLSQ<,W;dK_J=VTTSMK((HY1@q.RAa8;C6lm@#6(d?Eh1sVu.)b$WWDjjA.QG.jjA`:'2a\niCab`]'!='3SM^6bDa!2o_9>l)KY15B3I0sH'ZRICUPcZX#H8ViN#oR\=6Uu)+ZPi4d^1hY]rRm(%GU\id]-e*7^2sc:-$kj8c<nOtAb"m"4JBJC/Ridi5/o#+74j?\?hUDMF'3kcZU@Qo2r1$K\2EG\Ofj6a1_b'I<sq-h\gT,\-<,N]892DPb.(DhQ;_"'8*[7&1LLQ-)HTE??HfJ2J(R\>7bb8LgQH.R>YENchFA\G[u4uRfoZXi2P7(<`Pk9TX+cJj!i&ee`b>bh5.9`uITJANXBFQQqpt/.RH?6J..`FLP7[.:PNBdR)$u[')36*d<J$m3cCCEZ=3UYqRs&-WQkRh3oH+uZ<>EbkL>D?eJP@^'YiLNkM*)[\]tr%n-$6N7OiP]1aq!j\4R`KbhQl9Ml3e5Ni&g7(I4PnI.SHC<eq1-n-<r6Gif4\@e#"@f4'We\n^a6Qb?aep;q*t@Krj1?c&*^MDIdmFf!\%\fkqhj8d3lG"5qjhrr~>
+Gatm=>Ar7S'Roe[&@qmVJXDRuqnjJD,&%r<9=MLrL1M2=M3bQlOt'(DZX:JB.h?cB]qHiNR'b3,4*Th-Zb!Yi28^WL[b7g*/Qs$\%fZs^fAY#[9OaBL[b5GG]JR\[D,'EoroLc!/@)JeauE%$Bn'legXXhdo`_:0%W>E#[:p6!EAX_i=]9rLXl.pnlBg%4/_JV_g'Ul7_@J6-Q$IGm"IETn4t_OOhQS]WE\+t:U]($i>8b.DI*Vn<3h`^bf;PY^dr>/A7+7!*]@oRJcmmPm(6LN=,C)hFp:Ms95]fmYA5[sU2<fRF@90J;iI=Y$mB7sjpu_S)k'dnHgS;\Fl%#ma,.P)A993E"Kd`e9K!S:FWa("USU;(6<;25Z;\7t%+2e0E<Xn#,E=1uo$.AJPm(EPoCE0?Yq>!%OjFJ$oZ76HaOZZ)aNKT["bF<Om(MkumO#Yd&b:t0Uk^Tm`@"O>^gF@3PBY!4aSKL=CLd/pXm@6Vdb.-W/`e81fH8aiLi7f_YK7_<F6$Bk'eL$Io48+=qc=F.AF\Y@Zo<A5.9,W4&L*==u?Lj.9Q`iVYrH312GBFL.l1ST<`94^A:%BLOGu;Rd$uDi@@JVme<5'nP\\M/;R..B;npCY)9E)=5B<t.n*\i#UTFCBd;FPS_K(V"$DV5dq?];]Z'QFH<HB'^uPHmE2.aPGq'Y+!uD)PX.;GYh\)^kP#:8S+MQ:fUK[4K=@g182K?$[OaLdQRI).D.4,nOCtF"ttf!KtJMn>>WX^tI2BdZ`2e#W6,gcRIW?E/aU=_P(A17tJ'Wl!UJHK.4/PkV7ruNUgkmk0:_QkrNhV&b.(V=G;qkW/?2)Ab(e;+3MHR1Y`1FV,Lgo$s=mrnMUD64H#Bk0j%o$:H1YF'5Fm/I1ZZda@#%dpDE!H<`>YCb6%jFC.O]$`ut(L@b:UqA16YnCqg3oB-D=Y=X(1eN,a@B\Or#D]cMfYNn'aQ`<V>gL7;A50.<8fnB+'
 \[k(T]^W!'1ejK_c*9;ii'&Rh2hDd7Q!2hmMF6I?G;<OiuMudfo&IbCc(Jh[TMWSOXl=GQWc*NQ^II9bI"eI>T+pcQa'.$6H%PWM[oYmM56+[d3<)_eQ8eE:QjZ>76Jj>RYgei@6=`rZT<r<Cg8c#%I)\Ep<IlPT[qfLonJJ+X7`VD&'cr5_:FOVD1.B1AtP,]:F-Dk[N%<9kkAI;epOfSt>hhYjuCc[`rUr\05O_hNA8>o,nN&)K`Qmg.>a5`@Qf,48t?o.4FEN5\5QoV.r30Q<0G*<t.J=FkS]]hG^bQ7I/@RL!V"g$Mnqn%X7_b5Pe`jkT+ln_EZ?HkR]Z"8dE*-\#`&D0DdMSGeWa1Q%'c17co*;/05G2D6,S7H?@##Cqi-q[Mmpn=Y7<:S\`'qdU^>d'DLcAH7'WDK"Fg,3dQ9Uj2AeN*sHk%4$&k#<>JC9MBMUtGt(\7lHA#tX`4;9f>,;W5^X';r1HQtX*8=:?!.WoPUe+t2qSaj^&g;&6KaLr[83[YMG`1[%]nHt+j=Lk]'.[D51Jr2=MHLU]aoIs^qEiq%d/F/K%3GPD#C^n@Hljs^fP'T0m!hXM'nb<f>0PVQ*Jb:'83%"p$8W\VWd<POS<RW]pm?p6b-nA"eMFITVp1G%**$C^NJN?&?.OOIDQ@,J7X+S5B[=uiC0\i!7tG`#A1]Oan&FN79UXW:"1];r+]:PCi64OajYl=tgT;3Nq>`ebt_%^Qp33jEu=T437G,&1Z/-p;O9\qLGmABD\nb>RE%9[/tP:?>"XKB5]pQuc+19:'Mf$%ZGAY=8W^E=7@L8bhgW:eE1A/\=dn\21g^&k.S]A,4UJQ15-_f\_DY4N<@4-tp*Tqqii@0*WtrI]q:GI!\`cil%H+1u5Y:(<2se`80d=@!IpG4m.UjAoi^aW`W0n`b4YpF;m_M_8@M-:_NuIP+r<Z5=en24_;!#dpNmeIGLAIg[QHRr2&dP)(1]d,X08IoVi
 9?L<Nn_@dQN2E@b2#24_73$!Wm*Rp`eolfR2not+q9V?++8fg.o<2*1eVI4c!]MqGc"ReHntkie"\D`WsP'5)OFbUD<1[a]MV(X64X6=._6YIeHgclLQ7/rDGu2ijXj>&[%5$`!JG.jDj'?0jOb6\=qR+nD"nc2SILhN)pfj1tpqBG]9"KB>=GOO,"8"%\87rQu]Z>drS".J*Z&6)8k7N]P[4Qaf3B3h^^+q6l(6(e_5%P3JC'D\:=_"MX=GQ3V[LC#$<o-Q]D')kehjo%^K-cN;q7!rOCgT8P\_2+d4^9lm&;+\u(hI<jPRXh$[.DQoDh&)"BRFCSC!Et+=LfRs>mA8Q7#%ukCVcFeEo#Z7,l$PB(OYl~>
 endstream
 endobj
-13 0 obj
+21 0 obj
 << /Type /Page
 /Parent 1 0 R
 /MediaBox [ 0 0 612 792 ]
 /Resources 3 0 R
-/Contents 12 0 R
-/Annots 14 0 R
+/Contents 20 0 R
+/Annots 22 0 R
 >>
 endobj
-14 0 obj
+22 0 obj
 [
-15 0 R
-16 0 R
-17 0 R
+23 0 R
+24 0 R
+25 0 R
 ]
 endobj
-15 0 obj
+23 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 194.988 629.666 230.316 617.666 ]
@@ -80,7 +124,7 @@
 /H /I
 >>
 endobj
-16 0 obj
+24 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 209.652 577.332 244.98 565.332 ]
@@ -91,7 +135,7 @@
 /H /I
 >>
 endobj
-17 0 obj
+25 0 obj
 << /Type /Annot
 /Subtype /Link
 /Rect [ 388.62 577.332 463.272 565.332 ]
@@ -102,63 +146,133 @@
 /H /I
 >>
 endobj
-19 0 obj
+26 0 obj
+<< /Length 1638 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0DD,]IQ&H88.iM#uHB$+RSQ<u\:&&@^53ZM3l?Y2pn`l(L/)okQfLVU[natJmIfHGIG_Z4#^>4"N-I<IP^UVXo_nBZVe;uF<I"?+nulallCiTg6+1E1;Lb(TFEpiUQLk(^[,Xg_/]j4W4n_'@1!lG&*)QBb1HrX\J$XLIkp>Qts@+,hNK]/7[M+(A4h\W9@bdG4TaE:t".!Yuu<AMeMr,O98`FL1Kuo-"C>f7,ccNa5kk*hLPs&l4is=MuuFbAs>LMj_r/_:RlGJJQ9]/]:;U(FCod6FojR:0VB3KN5IR4r>YUSe#BjKl@WaB*)[R,io*iU<)>6%f%<':T3Tl3pi!<R/OIL_Es2nR0]S5,=hgadmrcCL'I`urdJ[h`VA9AE'F?3^*hG)Ipg1-!.:Z)fYlq5d^'4[_QLT"iP5`$Fu#_@ma*_0%j+3E>\NZip.m8N@P/%^j`!<tH!VT$ST10F^bA:DS03h$e8Jn%[g;@VO"pucSJ%88fK1\[;(oT)V&!+:\sc)\Ko!*88GtZRj$W1tpB#8R-*o!Y$q[42>h8@VEY9`DLX&O\@dk:Kcge$[PH(jgKi5relanHR$U%trMLttb=]oP<E.)p+E:N&dme5X.q0DORr_iOoV&Rfc+59]6*2FM8[M:tIk!J/2p&*5sOj2oKa2H-n@KgZBN+qj-AB)^bo5*e8-C1FDMCEV-R?Dm+ForPA!Y&lsREIE>A9KU>,Ot(g"jFtdeJ_["%]_H8>0(7&eke"<)KoC#AcrFs^8UE]HT-]'"`Af#L.K@Dn%qn`Pt[CnD?+N9.G+fsg:k^=Pm"]ZN-Pm9?I3X.1H=b!NI6abrHs$J'j$<=&S<<ip2Cpk4g9dlE#N9jgq>\,E<\&cCJKf:0M,R[h@`[jCnuLHI]shT/p8%UY:Z#DiD[/ta!,qdI(!(aD&i.aE&O!Cj"+LNh..Bm;%Kc(Ej:^/Ym3WN`j(;EVrb<9JfN=nI;7Keim&fE20]$
 I.DuJmU*?:'+[UT"ra%TQO\Q#1WD'Ib7i];!I3(N[%url7jW*i&$M,q\Vd_:,!nL>tR8h[[JCq9Dh>8AAPMmc\EcKI.$Bp?.4f3X@06A^`*FSkq[PVP0<+-`[=f?WtjplA,*fD$DB8?F:Y))jIH`PbEm%m6W%Dq*n-&a1c9',I)_s$+Z>?i9jm!V1?",Fh7T-!lG%[?Cgn,D>3kIXM#(\b[oPEdE/VK5P+f2g=P*=PaW.rhiWB+4l8$INT)90SEcBb)e'B;Vh((sQ6rK+-3M)Q[^]?gF-+j>&I2.$Z;74II5V;^/eKaHf;`]"si$Q\BIlK-]4UefaI<eSUg-,I?!-i@N@Y^s0o,%&7fXhe*d7Wf?="oJm\f*q]eg&a'>C2s0F7X+2%@H_VG8Sr#-YS*[62In-oE^)=5RpWGBKA&>=L>m8BKfN,M!V:DNQ,8-soKK"*DEZU[OLA>*M?0e8O&'e3`A*!_XK8/&oA3<YU7hM8+DJYRplr5H&C_(09\k0`;MlXEGC$H>q4>(TgDq_2:R$"MgQso=WM[]*[>]A`h%)T9N]A-<WLc,p+>eF\=FCpI?O-C;0;;2Sf1od:J&l-V9=j%=r;QRaZ=LjZ@]B*-*`jTXIX+^%[@l-JD&D=CG5Qga68)o"G~>
+endstream
+endobj
+27 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 26 0 R
+>>
+endobj
+28 0 obj
+<< /Length 296 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+GaqcqYti1j&;GBn`Js,t@68XKNs&<',U<rXTS(cUBr'/k-\-Ggm*NmE2gm(0s8BO[P3Xt1N<3od..i/nNPe$F)JR)SYo4K=@,KqN\o6Ec=)c-D6DGG/eYAbSYanh!!W,.M/GWCG%)j&M'e0MV-D8F+":lMu->g&oMtLPDd8]EMN'OMj_C*t8pPH4*[:UjHeOIfKO@=FA-(7;T(9osuMn0p)5@NdMo9-$3C%]IlbJYheRI&dC\2h*:aY.-_J%JNnf&Pq5kN628@W?QNA6@Vc_1(t6bO7.bmMD(=>06~>
+endstream
+endobj
+29 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 28 0 R
+>>
+endobj
+31 0 obj
 <<
  /Title (\376\377\0\61\0\40\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156)
- /Parent 18 0 R
- /Next 20 0 R
+ /Parent 30 0 R
+ /Next 32 0 R
  /A 9 0 R
 >> endobj
-20 0 obj
+32 0 obj
 <<
  /Title (\376\377\0\62\0\40\0\110\0\117\0\127\0\124\0\117)
- /Parent 18 0 R
- /Prev 19 0 R
+ /Parent 30 0 R
+ /Prev 31 0 R
+ /Next 33 0 R
  /A 11 0 R
 >> endobj
-21 0 obj
+33 0 obj
+<<
+ /Title (\376\377\0\63\0\40\0\125\0\163\0\151\0\156\0\147\0\40\0\167\0\151\0\164\0\150\0\40\0\112\0\115\0\130)
+ /Parent 30 0 R
+ /First 34 0 R
+ /Last 36 0 R
+ /Prev 32 0 R
+ /Count -3
+ /A 13 0 R
+>> endobj
+34 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\61\0\40\0\105\0\156\0\141\0\142\0\154\0\145\0\40\0\110\0\102\0\141\0\163\0\145\0\40\0\163\0\164\0\141\0\164\0\163\0\40\0\143\0\157\0\154\0\154\0\145\0\143\0\164\0\151\0\157\0\156)
+ /Parent 33 0 R
+ /Next 35 0 R
+ /A 15 0 R
+>> endobj
+35 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\62\0\40\0\123\0\145\0\164\0\165\0\160\0\40\0\112\0\115\0\130\0\40\0\162\0\145\0\155\0\157\0\164\0\145\0\40\0\141\0\143\0\143\0\145\0\163\0\163)
+ /Parent 33 0 R
+ /Prev 34 0 R
+ /Next 36 0 R
+ /A 17 0 R
+>> endobj
+36 0 obj
+<<
+ /Title (\376\377\0\63\0\56\0\63\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\145\0\40\0\112\0\115\0\130\0\40\0\151\0\156\0\40\0\110\0\102\0\141\0\163\0\145\0\40\0\163\0\164\0\141\0\162\0\164\0\165\0\160)
+ /Parent 33 0 R
+ /Prev 35 0 R
+ /A 19 0 R
+>> endobj
+37 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F3
-/BaseFont /Helvetica-Bold
+/Name /F11
+/BaseFont /Courier-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
-22 0 obj
+38 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+39 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F5
 /BaseFont /Times-Roman
 /Encoding /WinAnsiEncoding >>
 endobj
-23 0 obj
+40 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F6
-/BaseFont /Times-Italic
+/Name /F3
+/BaseFont /Helvetica-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
-24 0 obj
+41 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F1
-/BaseFont /Helvetica
+/Name /F2
+/BaseFont /Helvetica-Oblique
 /Encoding /WinAnsiEncoding >>
 endobj
-25 0 obj
+42 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F9
 /BaseFont /Courier
 /Encoding /WinAnsiEncoding >>
 endobj
-26 0 obj
+43 0 obj
 << /Type /Font
 /Subtype /Type1
-/Name /F2
-/BaseFont /Helvetica-Oblique
+/Name /F6
+/BaseFont /Times-Italic
 /Encoding /WinAnsiEncoding >>
 endobj
-27 0 obj
+44 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F7
@@ -167,74 +281,115 @@
 endobj
 1 0 obj
 << /Type /Pages
-/Count 2
-/Kids [6 0 R 13 0 R ] >>
+/Count 4
+/Kids [6 0 R 21 0 R 27 0 R 29 0 R ] >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 1 0 R
- /Outlines 18 0 R
+ /Outlines 30 0 R
  /PageMode /UseOutlines
  >>
 endobj
 3 0 obj
 << 
-/Font << /F3 21 0 R /F5 22 0 R /F1 24 0 R /F6 23 0 R /F9 25 0 R /F2 26 0 R /F7 27 0 R >> 
+/Font << /F1 38 0 R /F11 37 0 R /F5 39 0 R /F3 40 0 R /F2 41 0 R /F9 42 0 R /F6 43 0 R /F7 44 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 9 0 obj
 <<
 /S /GoTo
-/D [13 0 R /XYZ 85.0 659.0 null]
+/D [21 0 R /XYZ 85.0 659.0 null]
 >>
 endobj
 11 0 obj
 <<
 /S /GoTo
-/D [13 0 R /XYZ 85.0 606.666 null]
+/D [21 0 R /XYZ 85.0 606.666 null]
 >>
 endobj
-18 0 obj
+13 0 obj
+<<
+/S /GoTo
+/D [21 0 R /XYZ 85.0 324.332 null]
+>>
+endobj
+15 0 obj
+<<
+/S /GoTo
+/D [21 0 R /XYZ 85.0 245.598 null]
+>>
+endobj
+17 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 560.4 null]
+>>
+endobj
+19 0 obj
+<<
+/S /GoTo
+/D [27 0 R /XYZ 85.0 390.067 null]
+>>
+endobj
+30 0 obj
 <<
- /First 19 0 R
- /Last 20 0 R
+ /First 31 0 R
+ /Last 33 0 R
 >> endobj
 xref
-0 28
+0 45
 0000000000 65535 f 
-0000004708 00000 n 
-0000004773 00000 n 
-0000004865 00000 n 
+0000009594 00000 n 
+0000009673 00000 n 
+0000009765 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000559 00000 n 
-0000000679 00000 n 
-0000000711 00000 n 
-0000005010 00000 n 
-0000000846 00000 n 
-0000005073 00000 n 
-0000000983 00000 n 
-0000002796 00000 n 
-0000002919 00000 n 
-0000002960 00000 n 
-0000003207 00000 n 
-0000003453 00000 n 
-0000005139 00000 n 
-0000003650 00000 n 
-0000003813 00000 n 
-0000003935 00000 n 
-0000004048 00000 n 
-0000004158 00000 n 
-0000004269 00000 n 
-0000004377 00000 n 
-0000004483 00000 n 
-0000004599 00000 n 
+0000000763 00000 n 
+0000000883 00000 n 
+0000000943 00000 n 
+0000009922 00000 n 
+0000001078 00000 n 
+0000009985 00000 n 
+0000001215 00000 n 
+0000010051 00000 n 
+0000001352 00000 n 
+0000010117 00000 n 
+0000001488 00000 n 
+0000010183 00000 n 
+0000001625 00000 n 
+0000010247 00000 n 
+0000001762 00000 n 
+0000004205 00000 n 
+0000004328 00000 n 
+0000004369 00000 n 
+0000004616 00000 n 
+0000004862 00000 n 
+0000005059 00000 n 
+0000006790 00000 n 
+0000006898 00000 n 
+0000007286 00000 n 
+0000010313 00000 n 
+0000007394 00000 n 
+0000007557 00000 n 
+0000007693 00000 n 
+0000007907 00000 n 
+0000008180 00000 n 
+0000008431 00000 n 
+0000008709 00000 n 
+0000008821 00000 n 
+0000008929 00000 n 
+0000009039 00000 n 
+0000009152 00000 n 
+0000009268 00000 n 
+0000009374 00000 n 
+0000009485 00000 n 
 trailer
 <<
-/Size 28
+/Size 45
 /Root 2 0 R
 /Info 4 0 R
 >>
 startxref
-5190
+10364
 %%EOF

Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/metrics/MetricsMBeanBase.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/metrics/MetricsMBeanBase.java?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/metrics/MetricsMBeanBase.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/metrics/MetricsMBeanBase.java Sun Jan 17 00:24:35 2010
@@ -20,7 +20,6 @@
 package org.apache.hadoop.hbase.metrics;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -59,12 +58,27 @@
   protected MBeanInfo extendedInfo;
   
   protected MetricsMBeanBase( MetricsRegistry mr, String description ) {
-    super(mr, description);
+    super(copyMinusHBaseMetrics(mr), description);
     this.registry = mr;
     this.description = description;
     this.init();
   }
 
+  /*
+   * @param mr MetricsRegistry.
+   * @return A copy of the passed MetricsRegistry minus the hbase metrics
+   */
+  private static MetricsRegistry copyMinusHBaseMetrics(final MetricsRegistry mr) {
+    MetricsRegistry copy = new MetricsRegistry();
+    for (MetricsBase metric : mr.getMetricsList()) {
+      if (metric instanceof org.apache.hadoop.hbase.metrics.MetricsRate) {
+        continue;
+      }
+      copy.add(metric.getName(), metric);
+    }
+    return copy;
+  }
+
   protected void init() {
     List<MBeanAttributeInfo> attributes = new ArrayList<MBeanAttributeInfo>();
     MBeanInfo parentInfo = super.getMBeanInfo();
@@ -81,13 +95,12 @@
         continue;
       
       // add on custom HBase metric types
-      if (metric instanceof MetricsRate) {
+      if (metric instanceof org.apache.hadoop.hbase.metrics.MetricsRate) {
         attributes.add( new MBeanAttributeInfo(metric.getName(), 
             "java.lang.Float", metric.getDescription(), true, false, false) );
         extendedAttributes.put(metric.getName(), metric);
-      }  else {
-        LOG.error("unknown metrics instance: "+metric.getClass().getName());
-      }      
+      }
+      // else, its probably a hadoop metric already registered. Skip it.
     }
 
     this.extendedInfo = new MBeanInfo( this.getClass().getName(), 

Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java?rev=900036&r1=900035&r2=900036&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java Sun Jan 17 00:24:35 2010
@@ -169,13 +169,26 @@
       this.blockCacheFree.pushMetric(this.metricsRecord);
       this.blockCacheCount.pushMetric(this.metricsRecord);
       this.blockCacheHitRatio.pushMetric(this.metricsRecord);
-
-      // mix in HFile metrics
-      this.fsReadLatency.inc((int)HFile.getReadOps(), HFile.getReadTime());
-      this.fsWriteLatency.inc((int)HFile.getWriteOps(), HFile.getWriteTime());
+      
+      // Mix in HFile and HLog metrics
+      // Be careful. Here is code for MTVR from up in hadoop:
+      // public synchronized void inc(final int numOps, final long time) {
+      //   currentData.numOperations += numOps;
+      //   currentData.time += time;
+      //   long timePerOps = time/numOps;
+      //    minMax.update(timePerOps);
+      // }
+      // Means you can't pass a numOps of zero or get a ArithmeticException / by zero.
+      int ops = (int)HFile.getReadOps();
+      if (ops != 0) this.fsReadLatency.inc(ops, HFile.getReadTime());
+      ops = (int)HFile.getWriteOps();
+      if (ops != 0) this.fsWriteLatency.inc(ops, HFile.getWriteTime());
       // mix in HLog metrics
-      this.fsWriteLatency.inc((int)HLog.getWriteOps(), HLog.getWriteTime());
-      this.fsSyncLatency.inc((int)HLog.getSyncOps(), HLog.getSyncTime());
+      ops = (int)HLog.getWriteOps();
+      if (ops != 0) this.fsWriteLatency.inc(ops, HLog.getWriteTime());
+      ops = (int)HLog.getSyncOps();
+      if (ops != 0) this.fsSyncLatency.inc(ops, HLog.getSyncTime());
+
       // push the result
       this.fsReadLatency.pushMetric(this.metricsRecord);
       this.fsWriteLatency.pushMetric(this.metricsRecord);
@@ -250,4 +263,4 @@
         Long.valueOf(this.fsSyncLatency.getPreviousIntervalAverageTime()));
     return sb.toString();
   }
-}
\ No newline at end of file
+}