Return-Path: Delivered-To: apmail-hadoop-core-commits-archive@www.apache.org Received: (qmail 99230 invoked from network); 11 Mar 2008 18:17:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 11 Mar 2008 18:17:12 -0000 Received: (qmail 38257 invoked by uid 500); 11 Mar 2008 18:17:09 -0000 Delivered-To: apmail-hadoop-core-commits-archive@hadoop.apache.org Received: (qmail 38233 invoked by uid 500); 11 Mar 2008 18:17:09 -0000 Mailing-List: contact core-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: core-dev@hadoop.apache.org Delivered-To: mailing list core-commits@hadoop.apache.org Received: (qmail 38194 invoked by uid 99); 11 Mar 2008 18:17:09 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Mar 2008 11:17:09 -0700 X-ASF-Spam-Status: No, hits=-1998.0 required=10.0 tests=ALL_TRUSTED,OBSCURED_EMAIL,URIBL_BLACK X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Mar 2008 18:16:16 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A2D761A9832; Tue, 11 Mar 2008 11:16:34 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r636044 - in /hadoop/core/trunk: ./ conf/ docs/ src/contrib/ src/contrib/streaming/src/java/org/apache/hadoop/streaming/ src/contrib/streaming/src/test/org/apache/hadoop/streaming/ src/docs/src/documentation/content/xdocs/ src/java/org/apac... Date: Tue, 11 Mar 2008 18:16:27 -0000 To: core-commits@hadoop.apache.org From: ddas@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080311181634.A2D761A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ddas Date: Tue Mar 11 11:16:18 2008 New Revision: 636044 URL: http://svn.apache.org/viewvc?rev=636044&view=rev Log: HADOOP-2765. Enables specifying ulimits for streaming/pipes tasks. Contributed by Amareshwari Sri Ramadasu and Devaraj Das. Added: hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/CatApp.java hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/TestUlimit.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/src/contrib/build-contrib.xml hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/Environment.java hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskLog.java hadoop/core/trunk/src/java/org/apache/hadoop/mapred/pipes/Application.java Modified: hadoop/core/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/CHANGES.txt (original) +++ hadoop/core/trunk/CHANGES.txt Tue Mar 11 11:16:18 2008 @@ -77,6 +77,8 @@ HADOOP-2057. Streaming should optionally treat a non-zero exit status of a child process as a failed task. (Rick Cox via tomwhite) + HADOOP-2765. Enables specifying ulimits for streaming/pipes tasks (ddas) + OPTIMIZATIONS HADOOP-2790. Fixed inefficient method hasSpeculativeTask by removing Modified: hadoop/core/trunk/conf/hadoop-default.xml URL: http://svn.apache.org/viewvc/hadoop/core/trunk/conf/hadoop-default.xml?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/conf/hadoop-default.xml (original) +++ hadoop/core/trunk/conf/hadoop-default.xml Tue Mar 11 11:16:18 2008 @@ -704,6 +704,8 @@ For example, to enable verbose gc logging to a file named for the taskid in /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of: -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc + The value of -Xmx will also directly influence the amount of virtual memory + that a streaming/pipes task gets during execution. Modified: hadoop/core/trunk/docs/cluster_setup.html URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/cluster_setup.html?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/docs/cluster_setup.html (original) +++ hadoop/core/trunk/docs/cluster_setup.html Tue Mar 11 11:16:18 2008 @@ -505,7 +505,8 @@ mapred.child.java.opts -Xmx512M - Larger heap-size for child jvms of maps/reduces. + Larger heap-size for child jvms of maps/reduces. Also controls the amount + of virtual memory that a streaming/pipes task gets. Modified: hadoop/core/trunk/docs/cluster_setup.pdf URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/cluster_setup.pdf?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/docs/cluster_setup.pdf (original) +++ hadoop/core/trunk/docs/cluster_setup.pdf Tue Mar 11 11:16:18 2008 @@ -5,10 +5,10 @@ /Producer (FOP 0.20.5) >> endobj 5 0 obj -<< /Length 662 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 663 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -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)[,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+,Ii$sVW"i#oM^5*`V;+'n=G-?NQiK]?GPK[O6C#8rK4A%@TdNN.r\OYF(AICo)>"%KIO9ecM!?"D,RlJHUe"8Z@D;'*m~> +Gaua=9lnc;&;KZQ'fq(:Kt_CGgC>+ZIWK1Y.BK<\?XVSg/=P!>aqRAsM,kE)e;HDN"C?0tp[]\cUP(dt$q&nJcN#m/-M"(XS4jE=3N"KBI-nI'a!Hn5e6GCBd78=GsWc$_D?=t2b@PBnqSha-ecGY\@3]O/20.>O:Jd:H2SBV]ddmF8#6r9o'cC>%m$n](Z"Qi8Z_efi(qV5$6pWl^O[]cO0q#'K?[ZbBWTY59&Vc69TV!#lQkVA,1"KZ(+ton/Dd8j3],?Ye>u8oKbP)kkrcTJ;48_Oto45lI\LFkJUJY.JlM"*Z3c+4r+\0Uk=0'K]:OGAU>%#IQV%6,l6MbVI$le*7i#ju3^6H+u+&sCYg36kaKO\p4KMl_'-g?WFF1DhK>uta0,CX1X%ILtH%2cb/1u<1epOOoCWIE"mo]Uc**DR["~> endstream endobj 6 0 obj @@ -219,10 +219,10 @@ >> endobj 36 0 obj -<< /Length 2931 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 2938 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gau`VgQL;L&q-CUi+$",EFNN@UeQ_]YUJ7Ai"YU:a+SRhL7^*C*W[r]Q#u^*W?jXR#n`sjjD-"_qFnR)eM=gDleFj%tEW!_P,@G"+kC1(Cb7X;4Qggm5ZXg(>i/rj7>8lSK-3/a2XdUIU(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#PIQItoQE+cH"7Ur:gFZE)M6&P6qdQ8gIrC?t8lk%>`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&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;!gFMDRZ7@kN`a/0P`T]jaR+2g#peBf^'d`T&D!]\YF]'cmY]).\QY,(i:G&b8u8V`Z6TV)cdgYhZ=ZVcF7SW$:u!s]EQY&a3X_Cle!L'43oP-=o+-RC>&J)c(G8W956^M5$8.&0,_NoaPsGKTV_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=6JRuPj%/mL0>+^Dt=aCu;ie1#L9S(&-AD&/6oMsg-KADAQXVtRJ:>TC'?Gpq)nqJh.-fr\';L=X4j5ZB9aJ]3blq5=oJJ[>%4dgqi[[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(!1Z:#KY.7FfJh66"F']HZH5r&L3Sc;bP9237Pjq4$Qkf5RniQEMu.X'9Xb@D.3&T0VD3Gar52r'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;~> +Gau`VgQL@#&UiQ?i1j<6i=[9K9AV5AZCLKc*:6diWlP^@+_HL9%a"4GX*'ST%nM4]F*I`D.@6loC,j\Po]ag0%=i@=DSCV1q=b?(*r3PmDF2Be/C3q_s+IhQGEfVG99<./CObrbS%!l:"3MQZr]_T8gV@[@\Zg8D^u9cfS!cG!s1%`Ad5hP;CR7RR(Q5G_NNm8./LD[#f-\p-M2@pmo*1\%Ra'VF6\T>O3d"QE(Vld/`JW,ElYe7<&qO\)AbD+"%V'BWb/iFFZ0nH]Rc>u$6qWo:^P"lBmtk94&3pE;!*%s5Xgr/=*a)"Th+g+OXUTuH'b/LdB6qI<(8_IKM%F8cm_2>T8TX3<>*-+Nd:V%RAbBh[\ut1FPI(/Hor`)'1+C%pMs^h>9&3KiP9s"Ur^`XHlX0_7E+[NMjjec095=2HqK];:4lr9R$TS-CR/fdNBTp5l$ZRaW>VNhZcAW5cWuac8Wg:r#PuIS98i>>ilMr:.`G!PFFh"C"7RVIc.B?1:0L/get$'q.dWR:Q):sVLbMkD(%qJtXfA/]W@js`'.`JMnF-?\G.df]pHrMaUT_eM3NigY!G!\Q\-`Gl$t>rdR`nq8gB5rm!M04JX?#`P3RtG^)5,hO8<3L_H(cN)p>8318e.ch0j7L-63l$j)^((ST4M1r)9\L!"Zck,'8Y7Mo#rk#`C4"9O\S%.#sS\2D3\8F\S)4q9X6X':?!Tme(5%'1uOiqLot1u2.NOrQFaCZIF!ocNu\eJ3ZgTHn`(G\^e"]59I`$7.$9URJrS6K0?"2B7"ZPgja4ESkrDLB]!HtSU@<9+f@M$KF"nJ>X\p2!ULA;2-)(qlpn61Z,HR-_I\$A=+h0oN/tj$lYH+LTcu:Nma-(11I>i\Wk50;B;8]nWo$X'@o8a\0(l:IJHq5s4)q]gDj&%0o"]#NimZa5LhtA$6=n5`ALUL`2L[>SsgL8,-3E>mu5(+We?h/KT-(mYc3@Jh(&lO4K-1cjOg^Qt5S=:,a^d-?a\%0*VErU,3XLAQdPKBBiDp:N->r*MP+._6:(8\WmjCJ\XnLe[Y>&6.Z(O:0t*h-%9\[%=eTf>8b-gYbT0X(EqW#D_dF$3jF,IcP:-\+/k41'X#?aP(ZJ'ZF`(g3Ht@^36?;1Q"1VWk<.(6>@!np8Vi<-TYgA<7sTM[U4e7`\g(T(8!8hH+u*De(?W1%ouWD6mm.iRB4)3%T091C>faNQOcLe3V"kn-H/?P&INq-qF2e1#8:p'?Cqt5KEZY*N/'KD-1?XHjaKK38^lM.O80ln.n95*'a1QY@Eo@,NX3:lgXmn.+%t(cY4,7U)5\=DQ/Ub4_]G#CQ(/KTf8R*nX^;__Y* X][8]u5^Op)jD)<_/"4*r$[S!:e:_D$Y6S_*q;dQfZ5^k[6+mmbVn75VBD]:bs,E1-b^=$fK'NLlZC"REN1Ph,c0_0W3XDbS,cr!a;8oL[XRS"2%\MYb]a7g\D_1?Pu-,HCR]aqurh:mif=8(m4[bn"K0a@ru6cCj!e99ioG2lD2lAX#bh3Rqr.IHm4]K-jQqY"AZ^%k,SA3+c>!n00iCM6q&fV^-U;c_V-]ZKGue2G-8SOln/n!]tDFQ&C^%H/MV7S]GgU/%C4h5$o%C9r`?=`g!s+QGY*5..o6*bAM`CYMrV9W<><'kKcB-]6l\,G)q^nNK[c7,P_Jc=!dh',8lW#4cS3>l<:BL-&+4b2oEiQE.!]>h%49ICr5SE(p?[\qgYUR376noY^kJFo#G/-8gKSRn.'bUlWXX$0L>ISrW:5#b!>W/df[u/j0aBQBQM3p>@E(hHXuhm`OC7%"sAcnE#P?WJ^u;[nh]K*7?D2ad7ZHCGb)Z?Ic50dPMFp4-m"i/LhCQ_q%Loa.dK*VUM$8'oATO+rsEM)V`"rc]Ob7onF.uiM=cs.m8)NOX7S88L]6fmJ_D18eJdA(F15EeG4TjZd][_D'"g"O+(gW&\_MeU1-(;[S6B;*T<=US&7-4d]_![C-A-LqcoCLIf3PUjhjA8[K;r6F'(bWg\!nV7sqAiO7BK%M7r5lkA',;aasK]h*%g.@X9^!.$"*8?W;D&:\gRGThB`7G;4sJG2Ebap)5p[LN>L*A,U'D3&/(ZD[4oBFE6G4mEhUD(NG+*rs!H4>4UbU>aBfS'S.'a*60.n-L]W9=%!;gI%MMHQO&n[+8F,/mLH$?TS#nLDJZh=YcbKqJbK'b\I'>k~> endstream endobj 37 0 obj @@ -251,10 +251,10 @@ >> endobj 40 0 obj -<< /Length 2896 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 2667 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gatm>>Ee*S&q6H[iA[&PU:"mI_]-4CjW"W9(+/2Ya65)Oa`7gb4YYl#k=+"'QK>;b./PtG:cegR.3:8lolD+la5_O@qUY_Nr#]AnNNHgJqjniKO0+K(#.DjPf8^H%T.^#Va;MHIZ_?Zb'm?$QashYr6%hQF.?pK*G-W/qgX;*g#V/V=4Gp]e8-LJ3;5%L4YLM:PnrNr/X,2=uZd]RZAdOKp+UAQaU`ft2(>UVo:5FNt*GtBusX,nEmt,SeZ?:,9C@V0D:l'ifK@`)1:=$HQ1j_@V+<-+HQ?A?abje6@a2T1HKdXY-GSFN=b&`PZXamS!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_;%JSI2'HGFn('+47mL.mWak&(7pBR*oMO*H33u>2.QdlWGa3-&aJl\m$5,HT_G'pQQbMO6,(>9f@7(`"PMu"--cq&W%mE;j7ptD*Yq!.[47a[;XF@R-QATc;(,a5;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,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^TQcJSmrGh"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)qrp9q?mHacpn@".j94GmZUEoZ#AbF%:\6l;+?pogkiH9-[[P^XbqpJ8a%_u@dA"LKW7^$[#'eOp>J)BZobEi@kN5X8#0kN9Gc2)dMbbDN>]$3tNDrsQe_XEO~> +Gatm>gQL=$&Ug:Tcs+._.h$FX-#^%%-e[3r3>j-.Wb`_9&i=&k$!NK1n)Wd:'"g%mO8uAiCM!^KdHEdX4q0FBIeW?0h8:lVGk7YYrqqi\.+j2]W.$O/^YWuDUG*m]6>W58rq>j\\"CHTN0<'nS1AT^IUe[WE>7rBG_"d=rDSnl'`-97WT^b'>s7(hP;GZ?f;6nlG2ue?9Q^=_6H269.9;5P5GZUHS0M'O\G,^5$4FXd8cXuph<$NV9LpY1RXJg#N50Q$FZRjtk!\)K`RMA`^D/3T`'d>eRQ^>a.FqrBP[/;\B:37qMf&8j2$X@^EfL6'>$-Nt4d^i)g\k4o9[)2Ni`O+gD/n*@,$QaiN1?:&8W?6Z7%?i\Q!@FiP"V3;')02'jg^cHd!+E26q+LF%JnG3lYd\n$cDk$iRF3o7IBB#NiZYGPj[=da\g6:@HcAG^WCQ&lQ.C\'@;@'mR)$jIo+HA`*KQq.Npt40l%+dF%IWeQqB"oJq[jUhVWg?Bdraf<2Ea"=.10R^Q2XG_mjIVX"<>A)%#/`JcM5F[Z%@GmDq]C%_-Xl/j]N"e]t>>kQWoSQRCirH^S^gD8O7@.5]&rD=j?Zr46bi\r`I^&i-V,sD.`!/"r>$kpO3tD/^^b;P+.!Z\ukNHl.iEX'4>hDd+H?r4@&@)-Bhin$L$3lC:26KeUA$-D[>:hn@RmXicc'0r)q0[KqJ-r?f9`R+rP^l3fART[of)Yu68N#c<+&.;FKkH:QM5L'tOR]?G[H[09T,`h?iC2F?VkCe/O0BEWHq3Rq5??`Of%nn$h=TeOb#cK,dbQ?JYe-+\:Y\S1n&p-&'[-:q@_oqHF%'e&O'm^U2k"ZoUZ)3gK%Hgl4E_@t`Z2[^3KP78$i,ZR?3Z'V`4Jkc1Y*Sr6k$a#,[%XWd`"$FMrnT"\-!A=4B;RQhoqI"aet!3rEfI3*E)r%,Zo8/!-3FI?f>5"QA"&JTRs-G%AZ`cU564<])[35ltfNNK32l7$X+76Ei@`T3S-;dWXp,>N*9!1[)2_ugULT_rsD\M&Q;Oi(dn1G5t?AMG[=ZcY;C*AgbSbkap<.bjEBSiTE?FW?g7"`u/Vn2f!n!]3<\@cLM2ZhaT`,c%?dp6O'Q?oX$YIkn'\K-&Y2U7Nj\ifL"@[fc%PQco;?+.^RPb0CqDN&OO;Y%?Hm>hd,^*p:Q87FX\(3%jh";jOKIL%I5knli/WQPVth]"$ (#l3Sn\"%dPM"DRb:o<1+rm&+D%o>8I=)YZ874^k]#cf<'egqP+lbb@)J(b+$*'FjH6V`]B5HnMU>;?TbSmMgpiN+.=(W<9/u"Umh*F*IA%c1^F)qDPGO-?#RCH'5HIY]g]D_Hm8`a^%TVcXd]/g4of?gHOh?:Fht@Vl@ZWt6R2)Kp9o]@oSM3]R!fWtY8=`Gpm=.QFfArJtZX>5#=;NfIa041Yi=<#)Moo*FLk@_lTO&s@jg4rT2+Xs[mV:F@&lV&smo5A"l\'d\A7I_Fer4NXn?W&t1:.m[qMoeTEc32fq/Td\t-75`%fL(gsd;)l"j^5%!@K##mH$W!\OGFm\FV"kb2;m)j@\9]?g(pR5"7^rq\UqO95%oV]a>Z@1d2X`g%])"d.VFiV)U0Ds10h?8]:Df;F-kM6b\DFnc`f/+6<*saBhX"`r0PenLu.Q&.PD^WV-j(71!B",`gL-'V<]:b1l%)gn>lF/I11tD:Sohu(1~> endstream endobj 41 0 obj @@ -263,19 +263,35 @@ /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 40 0 R -/Annots 42 0 R >> endobj 42 0 obj +<< /Length 2722 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatm=D3*F0')oV[63moD!P5X+;/cEA9sWG(g2&CR_0rg5!j,/N9Op_[AGc(Xrq?oq3g<1;HT2."9M:m7c91\,rU[qG]8)=%0-"a8J)=U$2R+jkpYfKAaj6i48pdM+5%>[`r?8[]D_BMKIm1$'q[F?M:93\e_nN,!S;=1(:e[VW'*#m63Ys,k1/t@G)OPs-B)ZJVue.,(2LVl'M"i9d3lX\h\p2leIXYlJ%#XJZ#'ld^43`Q5r*G8OB9Z1HDLi@e%1UDbkg2SJq2pJhu>A#NO@-U4`;"X0Q`92f>#&IbB$^uLas')`KV48L[W>;J"/aJsc?rIZO$YDLCgi4\spJ&BZk?2B%-4s&=oCE7=<`q1$V9i)ZYK&u'P1V?Z51(kKZl`8L(%I0,%MorNi^=BccMl\o=aoPT,?67V?jPh\NKMNZV]j0i;r:Bm"j:8b.&442K&O="^FB5pMl1s/^Dr-U-](IfpC<$n/q/Sd=A1YLEqg,`bl$TpPf0NbGXsjh")QG\\S:/BpJ]X/l0*l6JL(='-C+O@)k5iT]`%QEnkf+Jl`B[iK'J/[s*$<^]&QRrp/=n:OfO%__Jai3>t13h0tK!Xf2fqOC/@h1^,@8*dO`r18[;[\48jtER9oP. K\<,fP_%X'cpuSn3H(lS*4O[K_U#drXQdg+POh&i:QmurNAR/;8HB4;saU`N6W&b8n?XHY[B$C(]1]BG=``V!iE(H4sD49/(pbl,J79[.G?U,SNC%q<1YPtl4D@1S'5MuYu#Qeb;6koJh6I!SaL4ed5*'K!9sG(8tZp]\0D\="S*u98I8q(:U9*9*q@#cl:mkIq+5k'!(Uq*bVOgTmBN+0JF1),T!HF<]:ORrhmN.3/M9QGlb7*)mLi3C/q@j'Ns5Hc_[*GH5gsUIE@Xg=:Q*[KD[*#rFcA_SRjpHj"n390pIk)pX_'!]XX[XXW1n0FP8A"3'l!SVYbB.7Mt>YG"*[H/duKbAU:f!Z&#bZOg=2(Z'$N%_jXF\rCQG+^,!4;e18<#G2Dg4W[=f?5;ulg96E]Y6Vpu-A=e3CYoFhS.G!KIGTrJ6s>qOZ3e)J]k:US0Zk]@MS/.7D+_%fQ\YLb'3*,R_j`'6:60[Ff86u8?lS%Aa3HpYf;=nYN=mS`s_qHKWsAU"[Q/:1V"(:=i9q879INbB"n`\9=eh1!C:iGJCigF!X2f1eCN2_58E@BpWO#7RKd]i3mQNQig';pJ4&ma48]HBNd=VgO/@Q[oBg'p1(;DV"QUa?4+[=gOY*Uhl+F5XubYMIZ'--:OIT+\Lhk7qFakYLo-[u/n=.2G'8t6IS@"]TlOS9o@4j'!8B]ulQoj_DbTD+gY>;o`/JEqK,m,P;)7GC\;6Ld*A/cdr7ESp5I*0]!&^-8@J6oLJV%#*.K2bb%KXBoZ=+U&KrpI;prJ8/:dJT:?odZ8<2cJ%ZPfD;'NWs+M]ArW>Xk:Wp8^+[hP/S01fb7W9Es*7/*-mE(A&lX^jq0iX!6AIr@0-9P6QV'tWZ0KPbE,g2Fh!=mFf@;OI*a]:s%XCc\dAn(8NJc.H!f?pWM7nHqTqFSa3]>A/6R*#HJ(nFG;"6Ol;h_:am2<^iSZ5]8":`ofLrmZ6S+0\\nZ0uO%+;Z2)uoGrhW%ge,uOGe@L4%=7+4a6:S/YfhQ:AJi]e-ZL\0[bS&c&\q+>+.gRkn!8L5bc&leuL_S+W8#+LY=.U;R('fZss=dn2^b*l(-n]S";i+;^4DMW>3!F`(1_e2LLIm>g_[Y-QK`m/taN+eigr%*7#jlmo^e9GF\X[gZ#1HgKbK(+De?6HHs$pOHAM&/'N1as#Su>n+08%lM,T#c#nKVekM,:[&k@Tg-qdK6>PF_HE>4*]>"=Z#l_U~> +endstream +endobj +43 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 42 0 R +/Annots 44 0 R +>> +endobj +44 0 obj [ -43 0 R -44 0 R +45 0 R +46 0 R +47 0 R ] endobj -43 0 obj +45 0 obj << /Type /Annot /Subtype /Link -/Rect [ 172.32 157.906 236.64 145.906 ] +/Rect [ 172.32 631.828 236.64 619.828 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://logging.apache.org/log4j/) @@ -283,10 +299,10 @@ /H /I >> endobj -44 0 obj +46 0 obj << /Type /Annot /Subtype /Link -/Rect [ 274.968 157.906 407.628 145.906 ] +/Rect [ 274.968 631.828 407.628 619.828 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://commons.apache.org/logging/) @@ -294,31 +310,10 @@ /H /I >> endobj -45 0 obj -<< /Length 2498 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -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;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>^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.X*ctaCgh6Z56n2o;/U[(3Y\rKCj67Jk#>ZS;\Jqpl,5PW]YF@2kKO?EJX'C>W;G3A'<--'%Tq\j<%RH\KeF74MEWOS+h!kETm=SNckopJd(/2/B`ooNBTKW\A^t]I!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"SlBS"lU7Ous7K;_S^hQsLh*%4"?Q,F@MXJ=:/e.DhcQcOF\UaRRcQ.lG?2fFhC&CLU@XZ5rH),WL"m)_'2&0fS'bU25*"(ZX`ON%:<_'L`+NHA3"F<1@WV;,A0#Ht\\-i=_6F[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#& -endstream -endobj -46 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 45 0 R -/Annots 47 0 R ->> -endobj 47 0 obj -[ -48 0 R -] -endobj -48 0 obj << /Type /Annot /Subtype /Link -/Rect [ 172.332 293.775 206.988 281.775 ] +/Rect [ 172.332 234.403 206.988 222.403 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (api/org/apache/hadoop/net/DNSToSwitchMapping.html#resolve(java.util.List)) @@ -326,186 +321,186 @@ /H /I >> endobj -49 0 obj -<< /Length 1305 /Filter [ /ASCII85Decode /FlateDecode ] +48 0 obj +<< /Length 1470 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -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=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$@:-#kq,'_)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#$Ar(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[#kd-:3$MmiM0X4>-jkU30,[sLU5DP65iIc1'et/h!A'"7aTR/oIUbrI?$Vq`TQK!X,lLl9lR=="kkf)nMWEUKCBiN17&S].o4rpS+'/-R,6~> +Gb!#\gMZ%0&:O:Sk[>R=5g>*D;fZFuph%1O*`'Et<.a=,)]&Pq=\r7RE7`!kbO2`2CrZbYW^WC.PQ$^\ALU,1!g]j,B9D0J?[^*E;K"Eri`:L%P1>Q5k7BmOe>)aUeJ-H4pJ$;3iXq40S@9KNDYr$)_SM.VT*X0Ao%`B*KN3O?Y'O(N%>)%E$ei?"`T=]YSq,ZZ]a-/39:"C<1k2F5Ui7:T%G$Z\0laa+(QmFISa)A)?Nl[1eKos"INN] (TuHe-hMqt"k.B.b:$#JMn"W%U.*ijUlm)a3js%CMH]Ng/Wi,Q`:uurfVAB89(B(!?cq80@=&pCWqOP)^4GSMJ8B[X!p;_*3QVC"]oX8ZhiI'BZ%i:-Zp-+*HQILpud.>b2M!kso'L'AeL,Gs6B#q\*'f5d.L$H_bM&OuWgBO#':EnNs06P<:CSZN:cZ8s6P$]J=uPj#,et&C5fQ+b].+GiA7Pjf;Hg&FAd%^47MWJj<&`meZ/bl7jE=QKd-p)<1FImH$WAMD,A%^fnDWJHFdBkMf+KKA+S0Aa=bIq\9&D`YuAe!UU:T_u~> endstream endobj -50 0 obj +49 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R -/Contents 49 0 R +/Contents 48 0 R >> endobj -52 0 obj +51 0 obj << /Title (\376\377\0\61\0\40\0\120\0\165\0\162\0\160\0\157\0\163\0\145) - /Parent 51 0 R - /Next 53 0 R + /Parent 50 0 R + /Next 52 0 R /A 9 0 R >> endobj -53 0 obj +52 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 51 0 R - /Prev 52 0 R - /Next 54 0 R + /Parent 50 0 R + /Prev 51 0 R + /Next 53 0 R /A 11 0 R >> endobj -54 0 obj +53 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 51 0 R - /Prev 53 0 R - /Next 55 0 R + /Parent 50 0 R + /Prev 52 0 R + /Next 54 0 R /A 13 0 R >> endobj -55 0 obj +54 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 51 0 R - /First 56 0 R - /Last 57 0 R - /Prev 54 0 R - /Next 70 0 R + /Parent 50 0 R + /First 55 0 R + /Last 56 0 R + /Prev 53 0 R + /Next 69 0 R /Count -8 /A 15 0 R >> endobj -56 0 obj +55 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 55 0 R - /Next 57 0 R + /Parent 54 0 R + /Next 56 0 R /A 17 0 R >> endobj -57 0 obj +56 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 55 0 R - /First 59 0 R - /Last 67 0 R - /Prev 56 0 R + /Parent 54 0 R + /First 58 0 R + /Last 66 0 R + /Prev 55 0 R /Count -6 /A 19 0 R >> endobj -59 0 obj +58 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 57 0 R - /Next 61 0 R - /A 58 0 R + /Parent 56 0 R + /Next 60 0 R + /A 57 0 R >> endobj -61 0 obj +60 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 57 0 R - /First 63 0 R - /Last 63 0 R - /Prev 59 0 R - /Next 65 0 R + /Parent 56 0 R + /First 62 0 R + /Last 62 0 R + /Prev 58 0 R + /Next 64 0 R /Count -1 - /A 60 0 R + /A 59 0 R >> endobj -63 0 obj +62 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 61 0 R - /A 62 0 R + /Parent 60 0 R + /A 61 0 R >> endobj -65 0 obj +64 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 57 0 R - /Prev 61 0 R - /Next 67 0 R - /A 64 0 R + /Parent 56 0 R + /Prev 60 0 R + /Next 66 0 R + /A 63 0 R >> endobj -67 0 obj +66 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 57 0 R - /First 69 0 R - /Last 69 0 R - /Prev 65 0 R + /Parent 56 0 R + /First 68 0 R + /Last 68 0 R + /Prev 64 0 R /Count -1 - /A 66 0 R + /A 65 0 R >> endobj -69 0 obj +68 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 67 0 R - /A 68 0 R + /Parent 66 0 R + /A 67 0 R >> endobj -70 0 obj +69 0 obj << /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 + /Parent 50 0 R + /Prev 54 0 R + /Next 70 0 R /A 21 0 R >> endobj -71 0 obj +70 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\164\0\141\0\162\0\164\0\165\0\160) - /Parent 51 0 R - /Prev 70 0 R - /Next 72 0 R + /Parent 50 0 R + /Prev 69 0 R + /Next 71 0 R /A 23 0 R >> endobj -72 0 obj +71 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 + /Parent 50 0 R + /Prev 70 0 R /A 25 0 R >> endobj -73 0 obj +72 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj -74 0 obj +73 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj -75 0 obj +74 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj -76 0 obj +75 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj -77 0 obj +76 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj -78 0 obj +77 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding >> endobj -79 0 obj +78 0 obj << /Type /Font /Subtype /Type1 /Name /F7 @@ -515,18 +510,18 @@ 1 0 obj << /Type /Pages /Count 7 -/Kids [6 0 R 27 0 R 35 0 R 37 0 R 41 0 R 46 0 R 50 0 R ] >> +/Kids [6 0 R 27 0 R 35 0 R 37 0 R 41 0 R 43 0 R 49 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R - /Outlines 51 0 R + /Outlines 50 0 R /PageMode /UseOutlines >> endobj 3 0 obj << -/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 >> +/Font << /F3 72 0 R /F5 73 0 R /F1 75 0 R /F6 74 0 R /F9 76 0 R /F2 77 0 R /F7 78 0 R >> /ProcSet [ /PDF /ImageC /Text ] >> endobj 9 0 obj @@ -568,150 +563,149 @@ 21 0 obj << /S /GoTo -/D [46 0 R /XYZ 85.0 357.509 null] +/D [43 0 R /XYZ 85.0 298.137 null] >> endobj 23 0 obj << /S /GoTo -/D [46 0 R /XYZ 85.0 151.975 null] +/D [49 0 R /XYZ 85.0 628.6 null] >> endobj 25 0 obj << /S /GoTo -/D [50 0 R /XYZ 85.0 452.6 null] +/D [49 0 R /XYZ 85.0 391.066 null] >> endobj -51 0 obj +50 0 obj << - /First 52 0 R - /Last 72 0 R + /First 51 0 R + /Last 71 0 R >> endobj -58 0 obj +57 0 obj << /S /GoTo /D [35 0 R /XYZ 85.0 573.347 null] >> endobj -60 0 obj +59 0 obj << /S /GoTo /D [35 0 R /XYZ 85.0 408.775 null] >> endobj -62 0 obj +61 0 obj << /S /GoTo /D [37 0 R /XYZ 85.0 399.6 null] >> endobj -64 0 obj +63 0 obj << /S /GoTo -/D [41 0 R /XYZ 85.0 282.85 null] +/D [41 0 R /XYZ 85.0 240.1 null] >> endobj -66 0 obj +65 0 obj << /S /GoTo -/D [41 0 R /XYZ 85.0 185.078 null] +/D [43 0 R /XYZ 85.0 659.0 null] >> endobj -68 0 obj +67 0 obj << /S /GoTo -/D [46 0 R /XYZ 85.0 641.8 null] +/D [43 0 R /XYZ 85.0 582.428 null] >> endobj xref -0 80 +0 79 0000000000 65535 f -0000024200 00000 n -0000024300 00000 n -0000024392 00000 n +0000024333 00000 n +0000024433 00000 n +0000024525 00000 n 0000000015 00000 n 0000000071 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 +0000000825 00000 n +0000000945 00000 n +0000001026 00000 n +0000024670 00000 n +0000001161 00000 n +0000024733 00000 n +0000001298 00000 n +0000024799 00000 n +0000001433 00000 n +0000024865 00000 n +0000001570 00000 n +0000024931 00000 n +0000001707 00000 n +0000024997 00000 n +0000001844 00000 n +0000025061 00000 n +0000001981 00000 n +0000025127 00000 n +0000002117 00000 n +0000025191 00000 n +0000002254 00000 n +0000004485 00000 n +0000004608 00000 n +0000004663 00000 n +0000004832 00000 n +0000005009 00000 n +0000005185 00000 n +0000005398 00000 n +0000005597 00000 n +0000008560 00000 n +0000008668 00000 n +0000011699 00000 n +0000011822 00000 n +0000011849 00000 n +0000012056 00000 n +0000014816 00000 n +0000014924 00000 n +0000017739 00000 n +0000017862 00000 n +0000017903 00000 n +0000018087 00000 n +0000018275 00000 n +0000018502 00000 n +0000020065 00000 n +0000025257 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 +0000020306 00000 n +0000020495 00000 n +0000020673 00000 n +0000020897 00000 n +0000021112 00000 n +0000025308 00000 n +0000021361 00000 n +0000025374 00000 n +0000021761 00000 n +0000025440 00000 n +0000022104 00000 n +0000025504 00000 n +0000022407 00000 n +0000025568 00000 n +0000022569 00000 n +0000025632 00000 n +0000022763 00000 n +0000022960 00000 n +0000023190 00000 n +0000023379 00000 n +0000023560 00000 n +0000023673 00000 n +0000023783 00000 n +0000023894 00000 n +0000024002 00000 n +0000024108 00000 n +0000024224 00000 n trailer << -/Size 80 +/Size 79 /Root 2 0 R /Info 4 0 R >> startxref -25566 +25698 %%EOF Modified: hadoop/core/trunk/docs/hadoop-default.html URL: http://svn.apache.org/viewvc/hadoop/core/trunk/docs/hadoop-default.html?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/docs/hadoop-default.html (original) +++ hadoop/core/trunk/docs/hadoop-default.html Tue Mar 11 11:16:18 2008 @@ -68,6 +68,10 @@ for compression/decompression. +io.serializationsorg.apache.hadoop.io.serializer.WritableSerializationA list of serialization classes that can be used for + obtaining serializers and deserializers. + + fs.default.namefile:///The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming @@ -429,6 +433,8 @@ For example, to enable verbose gc logging to a file named for the taskid in /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of: -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc + The value of -Xmx will also directly influence the amount of virtual memory + that a streaming/pipes task gets during execution. @@ -535,10 +541,6 @@ io.seqfile.sorter.recordlimit1000000The limit on number of records to be kept in memory in a spill in SequenceFiles.Sorter - - - -io.seqfile.compression.typeRECORDThe default compression type for SequenceFile.Writer. Modified: hadoop/core/trunk/src/contrib/build-contrib.xml URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/build-contrib.xml?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/contrib/build-contrib.xml (original) +++ hadoop/core/trunk/src/contrib/build-contrib.xml Tue Mar 11 11:16:18 2008 @@ -193,7 +193,7 @@ Modified: hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/Environment.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/Environment.java?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/Environment.java (original) +++ hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/Environment.java Tue Mar 11 11:16:18 2008 @@ -89,6 +89,17 @@ return arr; } + public Map toMap() { + Map map = new HashMap(); + Enumeration it = super.keys(); + while (it.hasMoreElements()) { + String key = (String) it.nextElement(); + String val = (String) get(key); + map.put(key, val); + } + return map; + } + public String getHost() { String host = getProperty("HOST"); if (host == null) { Modified: hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java (original) +++ hadoop/core/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java Tue Mar 11 11:16:18 2008 @@ -22,6 +22,7 @@ import java.nio.charset.CharacterCodingException; import java.io.IOException; import java.util.Date; +import java.util.List; import java.util.Map; import java.util.Iterator; import java.util.Arrays; @@ -34,6 +35,7 @@ import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.Reporter; import org.apache.hadoop.mapred.OutputCollector; +import org.apache.hadoop.mapred.TaskLog; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.io.Text; @@ -164,14 +166,23 @@ addEnvironment(childEnv, job_.get("stream.addenvironment")); // add TMPDIR environment variable with the value of java.io.tmpdir envPut(childEnv, "TMPDIR", System.getProperty("java.io.tmpdir")); - sim = Runtime.getRuntime().exec(argvSplit, childEnv.toArray()); - - /* // This way required jdk1.5 - Builder processBuilder = new ProcessBuilder(argvSplit); - Map env = processBuilder.environment(); - addEnvironment(env, job_.get("stream.addenvironment")); - sim = processBuilder.start(); - */ + if (StreamUtil.isCygwin()) { + sim = Runtime.getRuntime().exec(argvSplit, childEnv.toArray()); + } else { + List cmd = new ArrayList(); + for (String arg : argvSplit) { + cmd.add(arg); + } + // set memory limit using ulimit. + ProcessBuilder builder; + List setup = new ArrayList(); + setup.add("ulimit"); + setup.add("-v"); + setup.add(String.valueOf(Runtime.getRuntime().maxMemory() / 1024)); + builder = new ProcessBuilder(wrapCommand(setup, cmd)); + builder.environment().putAll(childEnv.toMap()); + sim = builder.start(); + } clientOut_ = new DataOutputStream(new BufferedOutputStream(sim.getOutputStream())); clientIn_ = new DataInputStream(new BufferedInputStream(sim.getInputStream())); @@ -185,6 +196,29 @@ } } + /** + * Wrap command with bash -c with setup commands. + * Setup commands such as setting memory limit can be passed which + * will be executed before exec. + * @param setup The setup commands for the execed process. + * @param cmd The command and the arguments that should be run + * @return the modified command that should be run + */ + private List wrapCommand( List setup, + List cmd + ) throws IOException { + List result = new ArrayList(); + result.add("bash"); + result.add("-c"); + StringBuffer mergedCmd = new StringBuffer(); + mergedCmd.append(TaskLog.addCommand(setup, false)); + mergedCmd.append(";"); + mergedCmd.append("exec "); + mergedCmd.append(TaskLog.addCommand(cmd, true)); + result.add(mergedCmd.toString()); + return result; + } + void setStreamJobDetails(JobConf job) { jobLog_ = job.get("stream.jobLog_"); String s = job.get("stream.minRecWrittenToEnableSkip_"); Added: hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/CatApp.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/CatApp.java?rev=636044&view=auto ============================================================================== --- hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/CatApp.java (added) +++ hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/CatApp.java Tue Mar 11 11:16:18 2008 @@ -0,0 +1,44 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.streaming; + +import java.io.*; + +/** A minimal Java implementation of /bin/cat + * The class also tries to allocate a huge array( 10MB) to test ulimits. + * Look at {@link TestUlimit} + */ +public class CatApp { + public static void main(String args[]) throws IOException{ + char s[] = null; + try { + s = new char[10*1024*1024]; + BufferedReader in = new BufferedReader( + new InputStreamReader(System.in)); + String line; + while ((line = in.readLine()) != null) { + System.out.println(line); + } + } finally { + if (s == null) { + System.exit(-1); + } + } + } +} Added: hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/TestUlimit.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/TestUlimit.java?rev=636044&view=auto ============================================================================== --- hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/TestUlimit.java (added) +++ hadoop/core/trunk/src/contrib/streaming/src/test/org/apache/hadoop/streaming/TestUlimit.java Tue Mar 11 11:16:18 2008 @@ -0,0 +1,142 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.streaming; + +import java.io.*; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.dfs.MiniDFSCluster; +import org.apache.hadoop.fs.FileUtil; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.mapred.MiniMRCluster; +import org.apache.hadoop.mapred.TestMiniMRWithDFS; +import org.apache.hadoop.util.*; + +import junit.framework.TestCase; + +/** + * This tests the setting of memory limit for streaming processes. + * This will launch a streaming app which will allocate 10MB memory. + * First, program is launched with sufficient memory. And test expects + * it to succeed. Then program is launched with insufficient memory and + * is expected to be a failure. + */ +public class TestUlimit extends TestCase { + private static final Log LOG = + LogFactory.getLog(TestUlimit.class.getName()); + enum RESULT { FAILURE, SUCCESS }; + String input = "the dummy input"; + Path inputPath = new Path("/testing/in"); + Path outputPath = new Path("/testing/out"); + String map = null; + MiniDFSCluster dfs = null; + MiniMRCluster mr = null; + FileSystem fs = null; + + String[] genArgs(String memLimit) { + return new String[] { + "-input", inputPath.toString(), + "-output", outputPath.toString(), + "-mapper", map, + "-reducer", "org.apache.hadoop.mapred.lib.IdentityReducer", + "-numReduceTasks", "0", + "-jobconf", "mapred.child.java.opts=" + memLimit, + "-jobconf", "mapred.job.tracker=" + "localhost:" + + mr.getJobTrackerPort(), + "-jobconf", "fs.default.name=" + "localhost:" + dfs.getNameNodePort(), + "-jobconf", "stream.tmpdir=" + + System.getProperty("test.build.data","/tmp") + }; + } + + /** + * This tests the setting of memory limit for streaming processes. + * This will launch a streaming app which will allocate 10MB memory. + * First, program is launched with sufficient memory. And test expects + * it to succeed. Then program is launched with insufficient memory and + * is expected to be a failure. + */ + public void testCommandLine() { + if (StreamUtil.isCygwin()) { + return; + } + try { + final int numSlaves = 2; + Configuration conf = new Configuration(); + dfs = new MiniDFSCluster(conf, numSlaves, true, null); + fs = dfs.getFileSystem(); + + mr = new MiniMRCluster(numSlaves, fs.getUri().toString(), 1); + writeInputFile(fs, inputPath); + map = StreamUtil.makeJavaCommand(CatApp.class, new String[]{}); + runProgram("-Xmx2048m", RESULT.SUCCESS); + FileUtil.fullyDelete(fs, outputPath); + assertFalse("output not cleaned up", fs.exists(outputPath)); + // 100MB is not sufficient for launching jvm. This launch should fail. + runProgram("-Xmx0.5m", RESULT.FAILURE); + mr.waitUntilIdle(); + } catch(IOException e) { + fail(e.toString()); + } finally { + mr.shutdown(); + dfs.shutdown(); + } + } + + private void writeInputFile(FileSystem fs, Path dir) throws IOException { + DataOutputStream out = fs.create(new Path(dir, "part0")); + out.writeBytes(input); + out.close(); + } + + /** + * Runs the streaming program. and asserts the result of the program. + * @param memLimit memory limit to set for mapred child. + * @param result Expected result + * @throws IOException + */ + private void runProgram(String memLimit, RESULT result + ) throws IOException { + boolean mayExit = false; + int ret = 1; + try { + StreamJob job = new StreamJob(genArgs(memLimit), mayExit); + ret = job.go(); + } catch (IOException ioe) { + LOG.warn("Job Failed! " + StringUtils.stringifyException(ioe)); + ioe.printStackTrace(); + } + String output = TestMiniMRWithDFS.readOutput(outputPath, + mr.createJobConf()); + if (RESULT.SUCCESS.name().equals(result.name())){ + assertEquals("output is wrong", input, output.trim()); + } else { + assertTrue("output is correct", !input.equals(output.trim())); + } + } + + public static void main(String[]args) throws Exception + { + new TestUlimit().testCommandLine(); + } + +} Modified: hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml (original) +++ hadoop/core/trunk/src/docs/src/documentation/content/xdocs/cluster_setup.xml Tue Mar 11 11:16:18 2008 @@ -272,7 +272,8 @@ mapred.child.java.opts -Xmx512M - Larger heap-size for child jvms of maps/reduces. + Larger heap-size for child jvms of maps/reduces. Also controls the amount + of virtual memory that a streaming/pipes task gets. Modified: hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskLog.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskLog.java?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskLog.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/mapred/TaskLog.java Tue Mar 11 11:16:18 2008 @@ -205,31 +205,44 @@ File stderrFilename, long tailLength ) throws IOException { + return captureOutAndError(null, cmd, stdoutFilename, + stderrFilename, tailLength ); + } + + /** + * Wrap a command in a shell to capture stdout and stderr to files. + * Setup commands such as setting memory limit can be passed which + * will be executed before exec. + * If the tailLength is 0, the entire output will be saved. + * @param setup The setup commands for the execed process. + * @param cmd The command and the arguments that should be run + * @param stdoutFilename The filename that stdout should be saved to + * @param stderrFilename The filename that stderr should be saved to + * @param tailLength The length of the tail to be saved. + * @return the modified command that should be run + */ + public static List captureOutAndError(List setup, + List cmd, + File stdoutFilename, + File stderrFilename, + long tailLength + ) throws IOException { String stdout = FileUtil.makeShellPath(stdoutFilename); String stderr = FileUtil.makeShellPath(stderrFilename); List result = new ArrayList(3); result.add(bashCommand); result.add("-c"); StringBuffer mergedCmd = new StringBuffer(); + if (setup != null && setup.size() > 0) { + mergedCmd.append(addCommand(setup, false)); + mergedCmd.append(";"); + } if (tailLength > 0) { mergedCmd.append("("); } else { mergedCmd.append("exec "); } - boolean isExecutable = true; - for(String s: cmd) { - mergedCmd.append('\''); - if (isExecutable) { - // the executable name needs to be expressed as a shell path for the - // shell to find it. - mergedCmd.append(FileUtil.makeShellPath(new File(s))); - isExecutable = false; - } else { - mergedCmd.append(s); - } - mergedCmd.append('\''); - mergedCmd.append(" "); - } + mergedCmd.append(addCommand(cmd, true)); mergedCmd.append(" < /dev/null "); if (tailLength > 0) { mergedCmd.append(" | "); @@ -253,6 +266,34 @@ } result.add(mergedCmd.toString()); return result; + } + + /** + * Add quotes to each of the command strings and + * return as a single string + * @param cmd The command to be quoted + * @param isExecutable makes shell path if the first + * argument is executable + * @return returns The quoted string. + * @throws IOException + */ + public static String addCommand(List cmd, boolean isExecutable) + throws IOException { + StringBuffer command = new StringBuffer(); + for(String s: cmd) { + command.append('\''); + if (isExecutable) { + // the executable name needs to be expressed as a shell path for the + // shell to find it. + command.append(FileUtil.makeShellPath(new File(s))); + isExecutable = false; + } else { + command.append(s); + } + command.append('\''); + command.append(" "); + } + return command.toString(); } /** Modified: hadoop/core/trunk/src/java/org/apache/hadoop/mapred/pipes/Application.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/mapred/pipes/Application.java?rev=636044&r1=636043&r2=636044&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/mapred/pipes/Application.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/mapred/pipes/Application.java Tue Mar 11 11:16:18 2008 @@ -52,6 +52,8 @@ private Socket clientSocket; private OutputHandler handler; private DownwardProtocol downlink; + static final boolean WINDOWS + = System.getProperty("os.name").startsWith("Windows"); /** * Start the child process to handle the task for us. @@ -82,7 +84,16 @@ File stdout = TaskLog.getTaskLogFile(taskid, TaskLog.LogName.STDOUT); File stderr = TaskLog.getTaskLogFile(taskid, TaskLog.LogName.STDERR); long logLength = TaskLog.getTaskLogLength(conf); - cmd = TaskLog.captureOutAndError(cmd, stdout, stderr, logLength); + // set memory limit using ulimit. + if (!WINDOWS) { + List setup = new ArrayList(); + setup.add("ulimit"); + setup.add("-v"); + setup.add(String.valueOf(Runtime.getRuntime().maxMemory() / 1024)); + cmd = TaskLog.captureOutAndError(setup, cmd, stdout, stderr, logLength); + } else { + cmd = TaskLog.captureOutAndError(cmd, stdout, stderr, logLength); + } process = runClient(cmd, env); clientSocket = serverSocket.accept(); handler = new OutputHandler(output, reporter);