Storm精华问答 | 如何理解spout/bolt的生命周期?
戳藍(lán)字“CSDN云計算”關(guān)注我們哦!
Storm是Twitter開源的分布式實時大數(shù)據(jù)處理框架,被業(yè)界稱為實時版Hadoop。隨著越來越多的場景對Hadoop的MapReduce高延遲無法容忍,比如網(wǎng)站統(tǒng)計、推薦系統(tǒng)、預(yù)警系統(tǒng)、金融系統(tǒng)等, 大數(shù)據(jù)實時處理解決方案的應(yīng)用日趨廣泛,目前已是分布式技術(shù)領(lǐng)域最新爆發(fā)點,而Storm更是流計算技術(shù)中的佼佼者和主流。
Q:在使用了storm一段時間后,需要重新部署storm的集群,主要是想將storm部署在其它機(jī)器上。做了以下錯誤操作:
????????1) 沒有kill 正在運行的topology,kill nimbus和supervisor的storm進(jìn)程
????????2) 刪除了配置中"storm.local.dir"的文件夾內(nèi)的內(nèi)容
????????3) 啟動storm nimbus
系統(tǒng)報錯,如何解決?
?
A:因為沒有先killtopology,所以在啟動nimbus時,zookeeper中依然保留了上次運行著的topology的信息,解決辦法如下:
用zookeeper的zkCli.sh清理一下,直接重裝了zookeeper。但是據(jù)說在storm0.6.1中已經(jīng)解決了該bug。
Q:在配置文件storm.yaml中,有:
那么,如何配置JVM參數(shù)呢?
A:如果worker在運行時,需要用指定的JVM參數(shù),那么可以像這樣配置:
worker.childopts: "-Dworker=worker -Xmx768m -Xdebug –Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,address=8111,suspend=y,server=y"?
3Q:如何理解spout/bolt的生命周期?
?
A:一般來說spout/bolt的生命周期如下:
1?、在提交了一個topology之后(在nimbus所在的機(jī)器),創(chuàng)建spout/bolt實例(spout/bolt在storm中統(tǒng)稱為component)并進(jìn)行序列化;
2、將序列化的component發(fā)送給所有的任務(wù)所在的機(jī)器;
3、在每一個任務(wù)上反序列化component;
4、在開始執(zhí)行任務(wù)之前, 先執(zhí)行component的初始化方法(bolt是prepare, spout是open);
因此component的初始化操作應(yīng)該在prepare/open方法中進(jìn)行,而不是在實例化component的時候進(jìn)行。
Q:如何將Storm與Spring框架集成?
?
?A:在進(jìn)行Storm與Spring集成時,需要對Storm的spout和bolt的生命周期按照上個問題那樣理解清楚。這樣的話就會知道,component的初始化操作應(yīng)該在prepare/open方法中進(jìn)行,而不是在實例化component的時候進(jìn)行.按照這種說法進(jìn)行改造,結(jié)構(gòu)該問題消失了。但接下來可能會有新的問題:
Caused by: org.xml.sax.SAXParseException: Content is not allowedin prolog.這個異常是由于*.xml文件編碼的問題。原因是在從其他項目里或者編輯工具編輯時,在文件編碼中加入了BOM頭的原因,于是用notePad++打開xml文件選擇去掉BOM頭信息,重新進(jìn)行保存即可。
Q“java.lang.NoClassDefFoundError: clojure.core.protocols$”故障如何解決?
?
A:故障的原因是因為JDK版本不匹配,安裝虛擬機(jī)時系統(tǒng)會自帶一個jdk.1.5.0。解決辦法是檢查JDK版本,卸載系統(tǒng)自帶的JDK,使用自己安裝的JDK版本。
#rpm –qa | grep java# rpm –e –nodeps java-*
配置環(huán)境變量
vi /etc/profile重新執(zhí)行一遍即可。
小伙伴們沖鴨,后臺留言區(qū)等著你!
關(guān)于Storm,今天你學(xué)到了什么?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~
福利
1、掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
IEEE 回應(yīng)禁止華為系審稿人;WiFi聯(lián)盟、藍(lán)牙聯(lián)盟已恢復(fù)華為成員資格;中國計算機(jī)學(xué)會:暫時中止與IEEE通信學(xué)會合作……
ARM 發(fā)布新一代 CPU 和 GPU,實現(xiàn) 20% 性能提升!
前端開發(fā) 20 年變遷史
北漂杭漂的程序員,是如何買到第一套房子?
“愛裝X”開源組織:“教科書級”AI知識樹究竟長什么樣?
500行Python代碼打造刷臉考勤系統(tǒng)
權(quán)游播完了, 你在罵爛尾, 有人卻悄悄解鎖了新操作……
真香,朕在看了!
總結(jié)
以上是生活随笔為你收集整理的Storm精华问答 | 如何理解spout/bolt的生命周期?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬盘不见了怎么办 硬盘丢失怎么处理
- 下一篇: 电脑怎么打开触摸板设置在哪里设置 如何开