精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Apache Spark源碼走讀:如何進(jìn)行代碼跟讀

云計(jì)算 Spark
今天不談Spark中什么復(fù)雜的技術(shù)實(shí)現(xiàn),只稍為聊聊如何進(jìn)行代碼跟讀。眾所周知,Spark使用scala進(jìn)行開(kāi)發(fā),由于scala有眾多的語(yǔ)法糖,很多時(shí)候代碼跟著跟著就覺(jué)著線索跟丟掉了,另外Spark基于Akka來(lái)進(jìn)行消息交互,那如何知道誰(shuí)是接收方呢?

概要

今天不談Spark中什么復(fù)雜的技術(shù)實(shí)現(xiàn),只稍為聊聊如何進(jìn)行代碼跟讀。眾所周知,Spark使用scala進(jìn)行開(kāi)發(fā),由于scala有眾多的語(yǔ)法糖,很多時(shí)候代碼跟著跟著就覺(jué)著線索跟丟掉了,另外Spark基于Akka來(lái)進(jìn)行消息交互,那如何知道誰(shuí)是接收方呢?

new Throwable().printStackTrace

代碼跟讀的時(shí)候,經(jīng)常會(huì)借助于日志,針對(duì)日志中輸出的每一句,我們都很想知道它們的調(diào)用者是誰(shuí)。但有時(shí)苦于對(duì)spark系統(tǒng)的了解程度不深,或者對(duì)scala認(rèn)識(shí)不夠,一時(shí)半會(huì)之內(nèi)無(wú)法找到答案,那么有沒(méi)有什么簡(jiǎn)便的辦法呢?

我的辦法就是在日志出現(xiàn)的地方加入下面一句話

  1. new Throwable().printStackTrace() 

現(xiàn)在舉一個(gè)實(shí)際的例子來(lái)說(shuō)明問(wèn)題。

比如我們?cè)趩?dòng)spark-shell之后,輸入一句非常簡(jiǎn)單的sc.textFile("README.md"),會(huì)輸出下述的log

  1. 14/07/05 19:53:27 INFO MemoryStore: ensureFreeSpace(32816) called with curMem=0, maxMem=308910489 
  2. 14/07/05 19:53:27 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 32.0 KB, free 294.6 MB)  
  3. 14/07/05 19:53:27 DEBUG BlockManager: Put block broadcast_0 locally took  78 ms  
  4. 14/07/05 19:53:27 DEBUG BlockManager: Putting block broadcast_0 without replication took  79 ms  
  5. res0: org.apache.spark.rdd.RDD[String] = README.md MappedRDD[1] at textFile at :13 

那我很想知道是第二句日志所在的tryToPut函數(shù)是被誰(shuí)調(diào)用的該怎么辦?

辦法就是打開(kāi)MemoryStore.scala,找到下述語(yǔ)句

  1. logInfo("Block %s stored as %s in memory (estimated size %s, free %s)".format(  
  2.           blockId, valuesOrBytes, Utils.bytesToString(size), Utils.bytesToString(freeMemory)))  

在這句話之上,添加如下語(yǔ)句

  1. new Throwable().printStackTrace() 

然后,重新進(jìn)行源碼編譯

  1. sbt/sbt assembly 

再次打開(kāi)spark-shell,執(zhí)行sc.textFile("README.md"),就可以得到如下輸出,從中可以清楚知道tryToPut的調(diào)用者是誰(shuí)

  1. 14/07/05 19:53:27 INFO MemoryStore: ensureFreeSpace(32816) called with curMem=0, maxMem=308910489 
  2. 14/07/05 19:53:27 WARN MemoryStore: just show the calltrace by entering some modified code  
  3. java.lang.Throwable  
  4.   at org.apache.spark.storage.MemoryStore.tryToPut(MemoryStore.scala:182)  
  5.   at org.apache.spark.storage.MemoryStore.putValues(MemoryStore.scala:76)  
  6.   at org.apache.spark.storage.MemoryStore.putValues(MemoryStore.scala:92)  
  7.   at org.apache.spark.storage.BlockManager.doPut(BlockManager.scala:699)  
  8.   at org.apache.spark.storage.BlockManager.put(BlockManager.scala:570)  
  9.   at org.apache.spark.storage.BlockManager.putSingle(BlockManager.scala:821)  
  10.   at org.apache.spark.broadcast.HttpBroadcast.(HttpBroadcast.scala:52)  
  11.   at org.apache.spark.broadcast.HttpBroadcastFactory.newBroadcast(HttpBroadcastFactory.scala:35)  
  12.   at org.apache.spark.broadcast.HttpBroadcastFactory.newBroadcast(HttpBroadcastFactory.scala:29)  
  13.   at org.apache.spark.broadcast.BroadcastManager.newBroadcast(BroadcastManager.scala:62)  
  14.   at org.apache.spark.SparkContext.broadcast(SparkContext.scala:787)  
  15.   at org.apache.spark.SparkContext.hadoopFile(SparkContext.scala:556)  
  16.   at org.apache.spark.SparkContext.textFile(SparkContext.scala:468)  
  17.   at $line5.$read$$iwC$$iwC$$iwC$$iwC.(:13)  
  18.   at $line5.$read$$iwC$$iwC$$iwC.(:18)  
  19.   at $line5.$read$$iwC$$iwC.(:20)  
  20.   at $line5.$read$$iwC.(:22)  
  21.   at $line5.$read.(:24)  
  22.   at $line5.$read$.(:28)  
  23.   at $line5.$read$.()  
  24.   at $line5.$eval$.(:7)  
  25.   at $line5.$eval$.()  
  26.   at $line5.$eval.$print()  
  27.   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  28.   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
  29.   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  30.   at java.lang.reflect.Method.invoke(Method.java:483)  
  31.   at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:788)  
  32.   at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1056)  
  33.   at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:614)  
  34.   at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:645)  
  35.   at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:609)  
  36.   at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:796)  
  37.   at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:841)  
  38.   at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:753)  
  39.   at org.apache.spark.repl.SparkILoop.processLine$1(SparkILoop.scala:601)  
  40.   at org.apache.spark.repl.SparkILoop.innerLoop$1(SparkILoop.scala:608)  
  41.   at org.apache.spark.repl.SparkILoop.loop(SparkILoop.scala:611)  
  42.   at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply$mcZ$sp(SparkILoop.scala:936)  
  43.   at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply(SparkILoop.scala:884)  
  44.   at org.apache.spark.repl.SparkILoop$$anonfun$process$1.apply(SparkILoop.scala:884)  
  45.   at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)  
  46.   at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:884)  
  47.   at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:982)  
  48.   at org.apache.spark.repl.Main$.main(Main.scala:31)  
  49.   at org.apache.spark.repl.Main.main(Main.scala)  
  50.   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  51.   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
  52.   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  53.   at java.lang.reflect.Method.invoke(Method.java:483)  
  54.   at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:303)  
  55.   at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:55)  
  56.   at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)  
  57. 14/07/05 19:53:27 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 32.0 KB, free 294.6 MB)  
  58. 14/07/05 19:53:27 DEBUG BlockManager: Put block broadcast_0 locally took  78 ms  
  59. 14/07/05 19:53:27 DEBUG BlockManager: Putting block broadcast_0 without replication took  79 ms  
  60. res0: org.apache.spark.rdd.RDD[String] = README.md MappedRDD[1] at textFile at :13 

git同步

對(duì)代碼作了修改之后,如果并不想提交代碼,那該如何將***的內(nèi)容同步到本地呢?

  1. git reset --hard  
  2. git pull origin master 

Akka消息跟蹤

追蹤消息的接收者是誰(shuí),相對(duì)來(lái)說(shuō)比較容易,只要使用好grep就可以了,當(dāng)然前提是要對(duì)actor model有一點(diǎn)點(diǎn)了解。

還是舉個(gè)實(shí)例吧,我們知道CoarseGrainedSchedulerBackend會(huì)發(fā)送LaunchTask消息出來(lái),那么誰(shuí)是接收方呢?只需要執(zhí)行以下腳本即可。

  1. grep LaunchTask -r core/src/main 

 從如下的輸出中,可以清楚看出CoarseGrainedExecutorBackend是LaunchTask的接收方,接收到該函數(shù)之后的業(yè)務(wù)處理,只需要去看看接收方的receive函數(shù)即可。

  1. core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala:    case LaunchTask(data) =>  
  2. core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala:        logError("Received LaunchTask command but executor was null")  
  3. core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedClusterMessage.scala:  case class LaunchTask(data: SerializableBuffer) extends CoarseGrainedClusterMessage  
  4. core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala:          executorActor(task.executorId) ! LaunchTask(new SerializableBuffer(serializedTask)) 

小結(jié)

今天的內(nèi)容相對(duì)簡(jiǎn)單,沒(méi)有技術(shù)含量,自己做個(gè)記述,免得時(shí)間久了,不記得。

責(zé)任編輯:林師授 來(lái)源: 徽滬一郎
相關(guān)推薦

2014-07-03 15:40:09

Apache Spar

2014-07-04 10:58:47

Apache Spar

2014-07-23 10:02:11

Spark源碼

2009-08-06 15:03:11

行虛擬機(jī)Apache設(shè)

2010-02-03 13:55:51

Python 代碼

2010-05-27 16:18:58

SVN設(shè)置

2010-06-02 10:10:26

SVN源碼管理

2010-05-28 12:55:23

2010-03-16 14:41:06

Java Runnab

2024-02-22 10:27:00

Python開(kāi)發(fā)

2010-05-25 18:32:22

apache+svn+

2010-06-01 17:07:01

MySQL源碼

2010-03-12 17:35:00

Python字符串

2012-10-15 09:30:04

CSSDIVWeb

2010-03-16 10:32:36

Java線程撥號(hào)器

2010-05-19 15:00:18

Apache+SVN部

2023-03-24 16:18:08

微服務(wù)架構(gòu)

2010-09-13 10:45:04

2010-06-02 14:16:18

SVN版本控制

2023-09-03 23:49:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美一级免费视频| 欧美综合影院| 精品国产精品久久一区免费式| 国产精品国产三级国产aⅴ中文 | 国产成人av片| 国产精品第5页| 国产激情一区| 成人免费在线视频| 国产精品久久久久久久久久久新郎| 色悠悠在线视频| 麻豆传媒视频在线观看免费| 国产福利资源一区| 亚洲精品国产无天堂网2021| 国产又爽又黄的激情精品视频 | 97在线播放视频| 国产孕妇孕交大片孕| 五月综合色婷婷| av在线亚洲天堂| 日韩精品一区二区久久| 色综合一个色综合| 久久伦理网站| 久久夜色精品国产噜噜亚洲av| 99久久久国产精品美女| 欧美日韩精品是欧美日韩精品| 日韩久久不卡| 中文字幕777| 久久电影院7| 亚洲国产精品悠悠久久琪琪| 免费国产黄色网址| 亚洲区小说区图片区| 性色一区二区| 伊人av综合网| 亚洲18在线看污www麻豆| 91福利在线视频| 美女一区二区三区| 久久艳片www.17c.com| 色黄视频免费看| 91黄色在线| 国产99精品国产| 亚洲91精品在线观看| 亚洲国产欧美视频| 全球最大av网站久久| 中文字幕av资源一区| 91精品视频播放| 久久免费视频99| 久久动漫网址| 在线观看中文字幕不卡| 美国av在线播放| 亚洲第九十九页| 国产亚洲高清视频| 在线播放国产一区中文字幕剧情欧美 | 色呦呦网站在线观看| 国产精品白丝jk黑袜喷水| 色综合视频一区中文字幕| 国产性生活毛片| 日本综合字幕| 亚洲欧美日韩系列| 九九九九精品九九九九| 午夜精品久久久久久久蜜桃| 亚洲v在线看| 精品国产一二三区| 一区二区在线播放视频| 国产素人视频在线观看| 99麻豆久久久国产精品免费优播| 国产成人综合精品| 欧美成人免费看| 国产伦一区二区三区| 91精品国产综合久久久久久漫画| 性一交一乱一伧国产女士spa| 九一在线视频| 国产成人亚洲综合a∨婷婷| 日韩免费在线播放| 九九热只有精品| 成人免费电影网址| 亚洲第一色在线| 色91精品久久久久久久久 | 成人精品一区二区三区| 成人免费区一区二区三区| 成人在线免费视频观看| 日日噜噜噜夜夜爽亚洲精品| 96sao精品视频在线观看| 91国模大尺度私拍在线视频| 国产在线不卡精品| 一区不卡在线观看| 亚洲欧美日韩精品一区二区| 青青草一区二区| 免看一级a毛片一片成人不卡| 欧美日韩福利| 久久精品中文字幕一区| 日韩网站在线播放| 成人羞羞网站入口| 欧美日韩999| 亚洲综合图片一区| 免费久久精品| 亚洲精品mp4| 免费观看a级片| 亚洲免费福利一区| 亚洲第一福利在线观看| www.av欧美| 精品国产午夜肉伦伦影院| 亚洲人成电影在线播放| jizz日本免费| 欧美独立站高清久久| 国产亚洲日本欧美韩国| 亚洲av无码国产精品久久| av动漫精品一区二区| 欧美一区二区三区影视| 岛国av免费在线| 日本妇女一区| 日韩av在线精品| 国产精品无码专区| 美女av一区| 在线亚洲国产精品网| 精品亚洲aⅴ无码一区二区三区| 免费av一区| 欧美日韩成人精品| 中文 欧美 日韩| 99精品久久久久久| 久久精品日产第一区二区三区乱码 | 美女任你摸久久| 久久精品国产精品国产精品污| 在线欧美三级| 欧美日韩精品一区视频| 9.1成人看片免费版| 欧美视频不卡| 91在线免费观看网站| 成人高清网站| 中文字幕一区二区视频| 无码人妻精品一区二区三区在线| 国产在线美女| 亚洲综合丝袜美腿| 精品无码国产一区二区三区av| 久久精品超碰| 日韩一区二区三区视频在线 | 懂色av一区二区三区蜜臀| 成人女人免费毛片| 婷婷五月综合久久中文字幕| 久久夜色精品国产噜噜av| 色综合久久久久久久久五月| 麻豆传媒在线免费| 欧美性大战久久久久久久蜜臀| 亚洲图色中文字幕| 成人毛片免费看| 国产精品人成电影在线观看| 精品国产99久久久久久宅男i| 狠狠色丁香久久婷婷综| 高清不卡日本v二区在线| 浪潮av一区| 在线电影院国产精品| 国产人妻黑人一区二区三区| 女同性一区二区三区人了人一 | 91精品产国品一二三产区| 欧美在线制服丝袜| 成年人网站免费看| 亚洲男人影院| 欧美一区少妇| 中文在线字幕免费观看| 91精品国产色综合久久不卡电影| 激情五月激情综合| 国产一区日韩二区欧美三区| 久久riav| 波多野结衣亚洲一二三| 亚洲深夜福利视频| 少妇无套内谢久久久久| 成人性生交大合| 欧美乱大交xxxxx潮喷l头像| 国产a亚洲精品| 亚洲精品xxxx| av黄色在线播放| 国产福利精品一区| 日韩极品视频在线观看| 久久久精品一区二区毛片免费看| 中文字幕日韩精品在线观看| 国产又粗又猛又黄又爽无遮挡| 亚洲免费毛片网站| 成人免费视频久久| av成人综合| 琪琪亚洲精品午夜在线| 成人不用播放器| 91精品欧美福利在线观看| 加勒比av在线播放| 91在线看国产| 99热一区二区| 久久av免费看| 国产综合视频在线观看| 国产精品电影| 最近2019中文免费高清视频观看www99 | 91黄视频在线| 手机av在线看| 99在线精品一区二区三区| 天天操天天摸天天爽| 欧美日韩理论| 日韩久久精品一区二区三区| 日韩免费一级| 日韩一区二区欧美| 成人小说亚洲一区二区三区| 亚洲色图.com| 亚洲天堂网一区二区| 激情成人综合网| 黄色国产精品视频| 在线中文字幕第一区| 成人综合国产精品| 牛牛精品一区二区| 精品88久久久久88久久久| 一级特黄免费视频| 亚洲国产精品一区二区www| 国产伦精品一区二区三区妓女下载| 精品国产一区二区三区噜噜噜| 97超碰人人看人人| 羞羞视频在线观看不卡| 亚洲视频777| 色婷婷激情五月| 欧美一区二区三区四区五区| 中文字幕高清在线免费播放| 亚洲国产一二三| 中文在线观看免费视频| 亚洲高清毛片| 精品视频一区二区| 国产精品麻豆| 国产精品久久久久久久久男| 天堂网在线最新版www中文网| 日韩精品免费视频| 99riav国产| 亚洲欧美日韩电影| 夜夜春很很躁夜夜躁| www.日韩精品| 欧美精品乱码久久久久久| 欧美私人情侣网站| 在线日韩一区| 成人影片在线播放| 国产美女视频一区二区| 国产日本欧美一区| jizz欧美| 国产精品wwwwww| 欧美大电影免费观看| 欧美一区视频在线| 蜜桃视频m3u8在线观看| 91国产美女视频| 成人亚洲综合天堂| 亚洲护士老师的毛茸茸最新章节| 性做久久久久久久久久| 日韩视频一区二区三区在线播放| 97caocao| 91精品国产入口| 97超碰人人草| 91精品国产色综合久久不卡蜜臀 | 久久久99精品| 亚洲一区影音先锋| 免费三片在线播放| 亚洲一区二区在线免费观看视频| 久草网站在线观看| 一区二区免费视频| 国产一级中文字幕| 久久久.com| 黑人性生活视频| 国产精品一区二区在线看| 日本55丰满熟妇厨房伦| 国产凹凸在线观看一区二区| 午夜免费福利影院| 99久久99久久免费精品蜜臀| 国产精品探花一区二区在线观看| 久久综合久久综合九色| 婷婷色一区二区三区| 粉嫩av亚洲一区二区图片| 精品少妇人妻av一区二区三区| proumb性欧美在线观看| 蜜桃av免费看| 国产精品乱人伦中文| 51调教丨国产调教视频| 久久这里只精品最新地址| www.黄色在线| 亚洲欧美一区二区三区国产精品| 国产性一乱一性一伧一色| 天天av天天翘天天综合网色鬼国产 | 国产三级精品视频| 能看毛片的网站| 成人一区二区三区视频| 久久丫精品国产亚洲av不卡| 国产精品女同一区二区三区| 久草视频中文在线| 欧美性猛交xxxxx水多| 天天操天天操天天操天天操天天操| 久久毛片高清国产| 黄免费在线观看| 亚洲精品日产精品乱码不卡| 午夜精品久久久久久久久久久久久蜜桃 | 在线播放国产精品二区一二区四区| 国产福利资源在线| 国产午夜精品麻豆| 亚洲精品97久久中文字幕无码 | 97超碰人人看人人| 欧美禁忌电影网| 99久re热视频精品98| 日韩欧美午夜| 国产天堂视频在线观看| 日韩av在线免费观看不卡| 日韩一区二区高清视频| 国产精品试看| av在线免费观看不卡| 久久久久久久综合日本| 欧美黑吊大战白妞| 欧美中文字幕亚洲一区二区va在线 | 亚洲人成人77777线观看| 亚洲人成网站77777在线观看| 亚洲午夜久久久影院伊人| 亚洲久久成人| 国产老熟妇精品观看| 精品一区二区三区日韩| 精品亚洲视频在线| 91天堂素人约啪| 扒开jk护士狂揉免费| 一区二区三区四区激情 | 日本女人一区二区三区| 欧美熟妇精品一区二区蜜桃视频| 亚洲欧美综合在线精品| 欧美三级午夜理伦| 精品久久久久久无| 免费a级片在线观看| 亚洲丁香婷深爱综合| 麻豆tv在线| 国产精品 欧美在线| 欧美爱爱网站| 成人免费网站入口| 国产剧情一区二区三区| 女教师淫辱の教室蜜臀av软件| 日韩欧美国产成人| 日韩一区二区三区在线观看视频| 欧美精品情趣视频| 超级碰碰不卡在线视频| 2019av中文字幕| 99精品国产一区二区三区2021| 一道本在线观看视频| 麻豆一区二区三| 中文字幕第10页| 亚洲欧美日韩一区| 国产熟女一区二区丰满| 久久精品成人动漫| 四虎在线精品| 中文精品一区二区三区| 激情欧美日韩一区| 久久久国产精品久久久| 怡红院av一区二区三区| 国产黄色美女视频| 精品中文字幕视频| 亚洲国产高清在线观看| 轻点好疼好大好爽视频| 高清视频一区二区| 国产无遮挡又黄又爽又色| 亚洲国产精品大全| 嗯啊主人调教在线播放视频| 免费av在线一区二区| 婷婷六月综合| 国产永久免费网站| 亚洲欧美日韩一区二区| 高潮一区二区三区乱码| 韩国福利视频一区| 亚洲春色h网| www.欧美日本| 国产精品久久777777| 国产乱码一区二区| 欧美猛交ⅹxxx乱大交视频| 成人18夜夜网深夜福利网| 黄色一级视频在线播放| 91免费看`日韩一区二区| 无码一区二区三区在线观看| 日韩欧美高清在线| yourporn在线观看中文站| 国产精品激情av在线播放| 欧美国产小视频| 精产国品一区二区三区| 精品国产91久久久| 久久久久久久久亚洲精品| 欧美精品videosex牲欧美| 欧美videos粗暴| 成人免费看片视频在线观看| 丁香亚洲综合激情啪啪综合| 久久99国产综合精品免费| 曰本色欧美视频在线| 日韩激情精品| 日本a级片免费观看| 国产精品女主播av| 国产综合视频在线| 国产成人精品在线视频| 91精品高清| 免费看黄色的视频| 欧美一卡2卡三卡4卡5免费| 亚洲人体视频| 久久免费视频2| 91免费观看视频| 国产精品久久久久久免费播放| 97香蕉超级碰碰久久免费软件| 成人久久电影| 先锋资源av在线| 欧美精品第1页| 三级在线看中文字幕完整版| 欧美性视频在线播放| 97久久人人超碰| av中文字幕播放| 国产精品电影观看| 激情婷婷欧美|