Storm精華問答 | storm與Hadoop有什麼區別?

2019-08-27     科技百分百

戳藍字「CSDN雲計算關注我們哦!

歸於Apache社區,Storm被業界稱為實時版Hadoop。隨著越來越多的場景對Hadoop的MapReduce高延遲無法容忍。而目前已是分布式技術領域最新爆發點,Storm更是流計算技術中的佼佼者和主流。今天我們就一起來看看Storm的精華問答!

1

Q:task與executor有什麼關係?

A:在我們安裝配置Storm的時候,不知大家是否主要到了一個問題,就是我們在配置的時候會加幾個worker的埠(supervisor.slots.ports:),比如眾多文檔中提到的6700/6701等等類似的東西。沒錯,這就是我們定義了該supervisor最多的worker數,worker中執行一個bolt或者spout線程,我們就稱之為task,而executor是物理上的線程概念,我們可以將其稱為執行線程;而task更多是邏輯概念上的,有時候bolt與spout的task會共用一個executor,特別是在系統負荷比較高的時候。

2

Q:storm與Hadoop區別?

A:storm用於實時計算,hadoop用於離線計算

storm處理的數據保存在內存中,源源不斷;hadoop處理的數據保存在文件系統中,一批一批

storm的數據通過網絡傳輸進來的;hadoop的數據保存在磁碟中

storm與hadoop的編程模型相似:

3

Q:Storm的Spout組件中的ack及fail是一個什麼樣的機制呢?

A:Storm保證每一個數據都得到有效處理,這是如何保證的呢?正是ack及fail機制確保數據都得到處理的保證,但是storm只是提供給我們一個接口,而具體的方法得由我們自己來實現。例如在spout下一個拓撲節點的bolt上,我們定義某種情況下為數據處理失敗,則調用fail,則我們可以在fail方法中進行數據重發,這樣就保證了數據都得到了處理。其實,通過讀storm的源碼,裡面有講到,有些類(BaseBasicBolt?)是會自動調用ack和fail的,不需要我們程式設計師去ack和fail,但是其他Bolt就沒有這種功能了。

4

Q:IRichBolt與IBasicBolt接口有什麼區別?

A:首先從類的組成上進行分析可以看到,IBasicBolt接口只有execute方法和declareOutputFields方法,而IRichBolt接口上除了以上幾個方法還有prepare方法和cleanup及map方法。而且其中execute方法是有些不一樣的,其參數列表不同。

總體來說Rich方法比較完善,我們可以使用prepare方法進行該Bolt類的初始化工作,例如我們連結資料庫時,需要進行一次資料庫連接操作,我們就可以把該操作放入prepare中,只需要執行一次就可以了。而cleanup方法能在該類調用結束時進行收尾工作,往往在處理數據的時候用到,例如在寫hdfs(hadoop的文件系統)數據的時候,在結束時需要進行數據clear,則需要進行數據收尾。當然,根據官網及實際的測驗,該方法往往是執行失敗的。

5

Q:發布topologies 到遠程集群時,出現Nimbus host is not set 異常,請問是什麼問題?

A:原因是Nimbus 沒有被正確啟動起來,可能是storm.yaml 文件沒有配置,或者配置有問題。解決方法是:打開storm.yaml 文件正確配置:nimbus.host: "xxx.xxx.xxx.xxx",重啟nimbus後台程序即可。

小夥伴們沖鴨,後台留言區等著你!

關於Hadoop,今天你學到了什麼?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區打卡啦!留言方式:打開第XX天,答:……

同時歡迎大家搜集更多問題,投稿給我們!風裡雨里留言區里等你~

福利

1、掃描添加小編微信,備註「姓名+公司職位」,加入【雲計算學習交流群】,和志同道合的朋友們共同打卡學習!

2、公眾號後台回覆:白皮書,獲取IDC最新數據白皮書整理資料!

文章來源: https://twgreatdaily.com/zh-tw/ttyt0mwBJleJMoPMTI-s.html