From d75ae44efcbe873fe7858e131f93926732b7b5dd Mon Sep 17 00:00:00 2001 From: Jacob Freck Date: Fri, 9 Feb 2018 10:52:47 -0800 Subject: [PATCH] Feature: spark shuffle service (#374) * start shuffle service by default * whitespace, delete misplaced file * crlf->lf * crlf->lf * move spark scratch space off os drive --- aztk/spark/helpers/create_cluster.py | 1 + config/AppRegistrations_2.png | Bin 69265 -> 0 bytes config/spark-defaults.conf | 5 +++++ node_scripts/install/install.py | 2 +- node_scripts/install/spark.py | 9 +++++++++ 5 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 config/AppRegistrations_2.png diff --git a/aztk/spark/helpers/create_cluster.py b/aztk/spark/helpers/create_cluster.py index 7bb3f137..aa2bd128 100644 --- a/aztk/spark/helpers/create_cluster.py +++ b/aztk/spark/helpers/create_cluster.py @@ -54,6 +54,7 @@ def __docker_run_cmd(docker_repo: str = None, gpu_enabled: bool = False, file_mo cmd.add_option('-e', 'SPARK_JOB_UI_PORT=$SPARK_JOB_UI_PORT') cmd.add_option('-p', '8080:8080') # Spark Master UI cmd.add_option('-p', '7077:7077') # Spark Master + cmd.add_option('-p', '7337:7337') # Spark Shuffle Service cmd.add_option('-p', '4040:4040') # Job UI cmd.add_option('-p', '8888:8888') # Jupyter UI cmd.add_option('-p', '8787:8787') # Rstudio Server diff --git a/config/AppRegistrations_2.png b/config/AppRegistrations_2.png deleted file mode 100644 index b9e61db0006c32a15187b4fbf1aae417cbd9f13b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69265 zcmce;d03Kb7d~pXZNSW3iI%1|5188EY>H`WWoo8Kj$~!dLpi1bO=@XrlbV|1kP`?v z;e~-RoZW;^`F&QwfkP zNJKb0Q+e@#1SP zV!-uQ{|j~jA|l)C*8gk(AG>s4L`0Z#@%%ZPQ0J*W@ptVozHpv)ms)!N$(E8WDhIN% z_Vph-{ASxJrCqOAT%!2mhg1_1AHToQZ+2#`e-Du{Ld0Wqa}L>buvPZa?4Eu8;Vi*Vl{pe0s_c zFRc$yB;!>?==6fSM6%8#rMyK}MC7Z@*w3`-z7Xc~a_mv=Tlu9OT59ws&Kv%GT0}(q zNwdsPOEvw<&rs=oC0zGjB~Y=C2Th(8B`Cp7 zlyfF#Yq8_uN5*dkH=AbM9jS14mDj=if`pZh496#Sy$W%z2*SaQm0h!2|E%SG&r1(x z-(P%vbra?8Ox0NTA`R+?cc_T77ZCwZKgrhVymJ)ulKug1PxA0<2+}>1&DzNo{bvoY znD>PaKM($Ks^PrDXjA|r*x5NfJngjWrLsJ&eG~zgh4<~Nwh|Y~$Wrs^Z?({w7H8DB z4ypEx2UG{+Qy4`kJ+JP{%n?nGU($F@&nwKyb^=&F`RyoQuh`8m1QYo8f1f0g7VuL$ z_}k&6^A4W{t2A^spTqPMayzJncBQv9+?)3~kb`~7I(p|3YeO>G$|45F%`bjBS!g$U z(h2gUH;GAZD(!lO_b5RsCyLrECvMbQOixPVL#89j+Yb8_M5^QBlSgLIVR6#Ri2pJ4l1!ZNJg3Ng1>Ho*=8^L0VZrM%-%1Z*%_zg z?dBA(*Db5*eO>+PU)1XOnLJ*u;kfwky?K$T6ExXrEaUVG)kQ%3fU?`IgK2u4YZ!fG z;q9hZh;b2-7jYJ8I$bOC!_%9gD-THSEp=i(Xg&*pzxet{%Z{h!@3dNAJc!8l$og}N zkactJ!4WB*75!m2Wyi{93a@Y0p0_;hq*X9?mpw@jX4Bz4LIDR#Uihw*T?$DWb+Fxs zA6XfWuSi0my1qQybF;%S;CX6%)wxHT2*TG#ErWTuhqKuN@8iAvr8djHcdejs@LKx% zfx;p9*h{=EHl&Aj1mE$ITb|QAj=|z>^TG@tr3&ZlFMhDUiCHX7Qwa=fQtY=-2zG2Ww;||EE}ub)E%DQMl3&yx62kMl>Vtdcq);&p{%{fKD4{yn7MC;7f( zCgK<~xW`9jims{+Y$CNM%Q)6su(rB9RZ8pTP&j%#;2(|&+rdH{3Ax*v{h`_7+oH*J8iwaqN~Dt!n2Q_93V9 zX8dyrW(21%gbbmt`!PxMict>*N%n#tX1&u6=nZpiIa9-5?s3AXJ+46YfAj9GY=K3f z$8?!@_OmQe3$NWRKVMa3yKaOja%TE^1j`lF!~E6<=|MsPzpu9yn@%Xy7o~rEDb{eU zZB#iM|4CM}(61>)Bc}YjE!Ek{tNVSX+)f>EADm-(#4B@l$5=#TWU_skb7F2o`W{`u zl?=DLzp9udA1`PbSXJ+qE(8B;`3(jgr8gViF-h`P{Aa~tvOw<+nM6%R-+ijC+_z7bl-PXo^SsT2Ri;qTk!y)bKRK81 zIabEhYb2yzLbDSpn2-0AU&G$81=nCN^%uE35|03{#TYt2|B(3twm&ET0IUJ>qx~Hz zED>a@^vXooEb~Qb1K01I_jsm=!$jaFiVr3Y0w&A7 zkv3%s*8ty)o5Lp!t_^}>SRJaoy?xNGUJCf?L=Uz@Gn@3Q`<;;QjxWo~Yv?S@H0@eA z&M{Wr99+L@c^7+c-Yfo0lS4c)Kr(F}e6C%l5a+!G3XSYl`9@ z?$)}%p6=-o%tb@bJ3K9D<-9aiC{{ℑr%6fu{i{-+S_#tgQB)+N0+68LJ-Z?}Mo* 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 diff --git a/config/spark-defaults.conf b/config/spark-defaults.conf index 415df8dc..683b41aa 100644 --- a/config/spark-defaults.conf +++ b/config/spark-defaults.conf @@ -25,9 +25,14 @@ # spark.driver.memory 5g # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" +# set "scratch" space for Spark +spark.local.dir /mnt/batch/ + # Note: Aztk pre-loads wasb jars, so loading is not necessary spark.jars /home/spark-current/jars/azure-storage-2.0.0.jar,/home/spark-current/jars/hadoop-azure-2.7.3.jar # Note: Default filesystem master HA spark.deploy.recoveryMode FILESYSTEM spark.deploy.recoveryDirectory /root/ + +spark.shuffle.service.enabled true diff --git a/node_scripts/install/install.py b/node_scripts/install/install.py index 3c0ef495..f011f1c4 100644 --- a/node_scripts/install/install.py +++ b/node_scripts/install/install.py @@ -29,7 +29,7 @@ def setup_node(): else: setup_as_worker() scripts.run_custom_scripts(is_master=False, is_worker=True) - + open("/tmp/setup_complete", 'a').close() diff --git a/node_scripts/install/spark.py b/node_scripts/install/spark.py index 71805d12..11ed2342 100644 --- a/node_scripts/install/spark.py +++ b/node_scripts/install/spark.py @@ -114,6 +114,15 @@ def start_spark_worker(): print("Connecting to master with '{0}'".format(" ".join(cmd))) call(cmd) + # enable the shuffle service on all slaves + start_shuffle_service() + + +def start_shuffle_service(): + exe = os.path.join(spark_home, "sbin", "start-shuffle-service.sh") + print("Starting the shuffle service with {}".format(exe)) + call([exe, " &"]) + def copyfile(src, dest): try: