Kafka在Storm中的角色是什麼?

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

Storm是Twitter開源的分佈式實時大數據處理框架,被業界稱為實時版Hadoop。隨著越來越多的場景對Hadoop的MapReduce高延遲無法容忍,比如網站統計、推薦系統、預警系統、金融系統等, 大數據實時處理解決方案的應用日趨廣泛,目前已是分佈式技術領域最新爆發點,而Storm更是流計算技術中的佼佼者和主流。

1

Q:Storm是什麼?

A:在Storm之前,進行實時處理是非常痛苦的事情: 需要維護一堆消息隊列和消費者,他們構成了非常複雜的圖結構。消費者進程從隊列裡取消息,處理完成後,去更新數據庫,或者給其他隊列發新消息。

這樣進行實時處理是非常痛苦的。我們主要的時間都花在關注往哪裡發消息,從哪裡接收消息,消息如何序列化,真正的業務邏輯只佔了源代碼的一小部分。一個應用程序的邏輯運行在很多worker上,但這些worker需要各自單獨部署,還需要部署消息隊列。最大問題是系統很脆弱,而且不是容錯的:需要自己保證消息隊列和worker進程工作正常。

Storm完整地解決了這些問題。它是為分佈式場景而生的,抽象了消息傳遞,會自動地在集群機器上併發地處理流式計算,讓你專注於實時處理的業務邏輯。

2

Q:Storm有哪些特點?

A:

編程簡單:開發人員只需要關注應用邏輯,而且跟Hadoop類似,Storm提供的編程原語也很簡單

高性能,低延遲:可以應用於廣告搜索引擎這種要求對廣告主的操作進行實時響應的場景。

分佈式:可以輕鬆應對數據量大,單機搞不定的場景

可擴展:隨著業務發展,數據量和計算量越來越大,系統可水平擴展

容錯:單個節點掛了不影響應用

消息不丟失:保證消息處理

3

Q:對於傳統使用數據庫的報表,數據有上億條。用戶針對這些數據查詢,查詢條件包含時間段、區域等等十幾個,總之查詢條件是多維度的,使用存儲過程實現,需要多次group by,耗時近十分鐘。請問這種場景下想要實時查詢,秒級返回結果,Storm可適用?

A:不是很合適,要麼放HDFS中通過Impla,Spark SQL,Kylin等交互式查詢,要麼通過傳統的數據倉庫來做,流式計算主要處理實時產生的增量數據。

4

Q:Storm的應用有哪些?

A:跟Hadoop不一樣,Storm是沒有包括任何存儲概念的計算系統。這就讓Storm可以用在多種不同的場景下:非傳統場景下數據動態到達或者數據存儲在數據庫這樣的存儲系統裡(或數據是被實時操控其他設備的控制器(如交易系統)所消費)

例如Nathan Marz提供的例子,產生Twitter的趨勢信息。Twitter從海量推文中抽取趨勢信息,並在本地區域和國家層級進行維護。這意味者一旦一個案例開始出現,Twitter的話題趨勢算法就能實時的鑑別出這個話題。這個實時的算法就是通過在Storm上連續分析Twitter數據來實現的。

5

Q:Kafka在Storm中的角色是什麼呢?是作為分流的解決方案,還是作為通信的工具?Kafka的前置機是什麼?數據量大的時候Kafka會不會崩掉?

A:Kafka在Storm之前扮演一個緩衝的消息隊列;Kafka最開始的前置一般有Flume等,其他消息也可以直接往Kafka寫,Storm的中間過程也可以存到Kafka中,當做一個消息隊列來用;雙十一的時候,分區設置小,Kafka滿了,來不及處理崩過,寫Kafka的時候;如果客戶端直接寫Kafka,也要注意,併發量大會把Kafka搞掛。採用異步寫+本地緩存寫Kafka,比如log4j寫Kafka,基本的異步和本地緩存等已經做了,數據量再大的時候,加一層Flume等。

小夥伴們衝鴨,後臺留言區等著你!

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

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

福利

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

  • Elastic Jeff Yoshimura:開源正在開啟新一輪的創新 | 人物誌

  • 深入淺出Docker 鏡像 | 技術頭條

  • 19歲當老闆, 20歲ICO失敗, 21歲將項目掛到了eBay, 為何初創公司如此艱難?

  • 碼二代的出路是什麼?

  • 機器學習萌新必備的三種優化算法 | 選型指南

  • @996 程序員,ICU 你真的去不起!

真香,朕在看了!


分享到:


相關文章: