日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)

發布時間:2024/9/27 windows 31 豆豆

1、背景-流式計算與storm

2011年在海量數據處理領域,Hadoop是人們津津樂道的技術,Hadoop不僅可以用來存儲海量數據,還以用來計算海量數據。因為其高吞吐、高可靠等特點,很多互聯網公司都已經使用Hadoop來構建數據倉庫,高頻使用并促進了Hadoop生態圈的各項技術的發展。一般來講,根據業務需求,數據的處理可以分為離線處理和實時處理,在離線處理方面Hadoop提供了很好的解決方案,但是針對海量數據的實時處理卻一直沒有比較好的解決方案。
就在人們翹首以待的時間節點,storm橫空出世,與生俱來的分布式、高可靠、高吞吐的特性,橫掃市面上的一些流式計算框架,漸漸的成為了流式計算的首選框架。
如果龐麥郎在的話,他一定會說,這就是我要的滑板鞋!

在2013年,阿里巴巴開源了基于storm的設計思路使用java重現編寫的流式計算框架jstorm。那jstorm是什么呢?
在jstorm早期的介紹中,一般會出現下面的語句:JStorm 比Storm更穩定,更強大,更快,Storm上跑的程序,一行代碼不變可以運行在JStorm上。
在最新的介紹中,jstorm的團隊是這樣介紹的:JStorm 是一個類似Hadoop MapReduce的系統, 用戶按照指定的接口實現一個任務,然后將這個任務遞交給JStorm系統,Jstorm將這個任務跑起來,并且按7 * 24小時運行起來,一旦中間一個Worker 發生意外故障, 調度器立即分配一個新的Worker替換這個失效的Worker。
因此,從應用的角度,JStorm 應用是一種遵守某種編程規范的分布式應用。
從系統角度, JStorm一套類似MapReduce的調度系統。 從數據的角度, 是一套基于流水線的消息處理機制。實時計算現在是大數據領域中最火爆的一個方向,因為人們對數據的要求越來越高,實時性要求也越來越快,傳統的Hadoop MapReduce,逐漸滿足不了需求,因此在這個領域需求不斷。現在,Jstom在淘寶海量的數據和大量的業務場景的錘煉下,從開始的追隨者,使用者慢慢的演變成了流式計算技術的領導者。當下,還有很多企業并不知道jstorm,他們的生產環境依然是storm,并且storm也在不斷更新,在筆者成文的時間點上,storm發布了1.0的beta版。

鑒于大多數企業的生產環境還在使用storm,我們學習的目標還是切換到Apache基金會的storm上來。

2、背景-Storm是為了解決什么樣的問題

伴隨著信息科技日新月異的發展,信息呈現出爆發式的膨脹,人們獲取信息的途徑也更加多樣、更加便捷,同時對于信息的時效性要求也越來越高。
舉個搜索場景中的例子,當一個賣家發布了一條寶貝信息時,他希望的當然是這個寶貝馬上就可以被賣家搜索出來、點擊、購買啦,相反,如果這個寶貝要等到第二天或者更久才可以被搜出來,估計這個大哥就要罵娘了。
再舉一個推薦的例子,如果用戶昨天在淘寶上買了一雙襪子,今天想買一副泳鏡去游泳,但是卻發現系統在不遺余力地給他推薦襪子、鞋子,根本對他今天尋找泳鏡的行為視而不見,估計這哥們心里就會想推薦你妹呀。其實稍微了解點背景知識的碼農們都知道,這是因為后臺系統做的是每天一次的全量處理,而且大多是在夜深人靜之時做的,那么你今天白天做的事情當然要明天才能反映出來啦。

3、背景-實現實時計算系統需要解決那些問題

如果讓我們自己設計一個實時計算系統,我們要解決哪些問題。
(1)低延遲:都說了是實時計算系統了,延遲是一定要低的。
(2)高性能:性能不高就是浪費機器,浪費機器是要受批評的哦。
(3)分布式:系統都是為應用場景而生的,如果你的應用場景、你的數據和計算單機就能搞定,那么不用考慮這些復雜的問題了。我們所說的是單機搞不定的情況。
(4)可擴展:伴隨著業務的發展,我們的數據量、計算量可能會越來越大,所以希望這個系統是可擴展的。
(5)容錯:這是分布式系統中通用問題。一個節點掛了不能影響我的應用。
(6)通信:設計的系統需要應用程序開發人員考慮各個處理組件的分布、消息的傳遞嗎?如果是,發人員可能會用不好,也不會想去用。
(7)消息不丟失:用戶發布的一個寶貝消息不能在實時處理的時候給丟了,對吧?

4、離線計算是什么?

離線計算:批量獲取數據、批量傳輸數據、周期性批量計算數據、數據展示 代表技術:Sqoop批量導入數據、HDFS批量存儲數據、MapReduce批量計算數據、Hive批量計算數據、***任務調度

日常業務:
1,hivesql
2、調度平臺
3、Hadoop集群運維
4、數據清洗(腳本語言)
5、元數據管理
6、數據稽查
7、數據倉庫模型架構

5、流式計算是什么

流式計算:數據實時產生、數據實時傳輸、數據實時計算、實時展示 代表技術:Flume實時獲取數據、Kafka/metaq實時數據存儲、Storm/JStorm實時數據計算、Redis實時結果緩存、持久化存儲(mysql)。 一句話總結:將源源不斷產生的數據實時收集并實時計算,盡可能快的得到計算結果,用來支持決策。

6、離線計算與實時計算的區別

最大的區別:實時收集、實時計算、實時展示

離線計算,一次計算很多條數據
實時計算,數據被一條一條的計算

7、Storm是什么?

Storm用來實時處理數據,特點:低延遲、高可用、分布式、可擴展、數據不丟失。提供簡單容易理解的接口,便于開發。

Spout Bolt
數據輸入 數據計算 數據輸出 數據計算 數據輸出
Spout Bolt 1…. Bolt N BoltN+1. BoltN….

8、Storm的應用場景

Storm處理數據的方式是基于消息的流水線處理, 因此特別適合無狀態計算,也就是計算單元的依賴的數據全部在接受的消息中可以找到, 并且最好一個數據流不依賴另外一個數據流。
因此,常常用于
- 日志分析,從海量日志中分析出特定的數據,并將分析的結果存入外部存儲器用來輔佐決策。
- 管道系統, 將一個數據從一個系統傳輸到另外一個系統, 比如將數據庫同步到Hadoop
- 消息轉化器, 將接受到的消息按照某種格式進行轉化,存儲到另外一個系統如消息中間件
- 統計分析器, 從日志或消息中,提煉出某個字段,然后做count或sum計算,最后將統計值存入外部存儲器。中間處理過程可能更復雜。

8.1、案列:一淘-實時分析系統

一淘-實時分析系統:實時分析用戶的屬性,并反饋給搜索引擎。最初,用戶屬性分析是通過每天在云梯上定時運行的MR job來完成的。為了滿足實時性的要求,希望能夠實時分析用戶的行為日志,將最新的用戶屬性反饋給搜索引擎,能夠為用戶展現最貼近其當前需求的結果。

8.2、案列:攜程-網站性能監控

攜程-網站性能監控:實時分析系統監控攜程網的網站性能。利用HTML5獲得可用的指標,并記錄日志。Storm集群實時分析日志和入庫。使用DRPC聚合成報表,通過歷史數據對比等判斷規則,觸發預警事件。

8.3、案列:游戲實時運營

一個游戲新版本上線,有一個實時分析系統,收集游戲中的數據,運營或者開發者可以在上線后幾秒鐘得到持續不斷更新的游戲監控報告和分析結果,然后馬上針對游戲的參數 和平衡性進行調整。這樣就能夠大大縮短游戲迭代周期,加強游戲的生命力。

8.4、案列:實時計算在騰訊的運用

實時計算在騰訊的運用:精準推薦(廣點通廣告推薦、新聞推薦、視頻推薦、游戲道具推薦);實時分析(微信運營數據門戶、效果統計、訂單畫像分析);實時監控(實時監控平臺、游戲內接口調用)

8.5、案列:實時計算在阿里的運用

為了更加精準投放廣告,阿里媽媽后臺計算引擎需要維護每個用戶的興趣點(理想狀態是,你對什么感興趣,就向你投放哪類廣告)。用戶興趣主要基于用戶的歷史行為、用戶的實時查詢、用戶的實時點擊、用戶的地理信息而得,其中實時查詢、實時點擊等用戶行為都是實時數據。考慮到系統的實時性,阿里媽媽使用Storm維護用戶興趣數據,并在此基礎上進行受眾定向的廣告投放。

9、Storm在互聯網公司

本節內容來自《Storm技術內幕與大數據實踐》,并得到作者授權使用。


11.Strom框架如何獲取數據

Hadoop MapReduce(TextInputFormat\Map\Reduce\TextOutputFormat),由TextInputFormat獲取數據。

Strom中如何獲取?
答:Spout去獲取數據。

Spout去哪里拿數據?數據在哪里?
答:數據在數據庫中,在文件中,在redis中,在任何存儲數據的地方。假設存儲文件中,1G,Spout一行一行的讀取文件中的數據,是在實時讀取數據。
注意:只有數據實時產生,并實時獲取才能讓storm實時計算框架產生最大的效益。

12 Storm框架如何實時處理數據

Hadoop MapReduce(TextInputFormat\Map\Reduce\TextOutputFormat),其中Map\Reduce是計算數據。

storm中如何計算數據?
答:在Bolt中進行相關業務邏輯的計算。

strorm中如果有多個階段的業務邏輯需要計算,怎么計算?
答:Bolt1(Map1)—>Bolt2(Reduce1)—>Bolt3(Map1)—>Bolt4(Reduce)

5、Storm的編程模型是什么?
答:Spout—>Bolt1—>Bolt2—>Bolt3

SpoutBolt1Bolt2Bolt3
獲取數據計算計算計算

13 Storm架構圖

Nimbus:負責資源分配和任務調度。
Supervisor:負責接受nimbus分配的任務,啟動和停止屬于自己管理的worker進程。
Worker:運行具體處理組件邏輯的進程。
Task: worker中每一個spout/bolt的線程稱為一個task. 在storm0.8之后,task不再與物理線程對應,同一個spout/bolt的task可能會共享一個物理線程,該線程稱為executor。

14.Storm編程模型

Topology: Storm中運行的一個實時應用程序,因為各個組件間的消息流動形成邏輯上的一個拓撲結構。
Spout:在一個topology中產生源數據流的組件。通常情況下spout會從外部數據源中讀取數據,然后轉換為topology內部的源數據。Spout是一個主動的角色,其接口中有個nextTuple()函數,storm框架會不停地調用此函數,用戶只要在其中生成源數據即可。
Bolt:在一個topology中接受數據然后執行處理的組件。Bolt可以執行過濾、函數操作、合并、寫數據庫等任何操作。Bolt是一個被動的角色,其接口中有個execute(Tuple input)函數,在接受到消息后會調用此函數,用戶可以在其中執行自己想要的操作。
Tuple:一次消息傳遞的基本單元。本來應該是一個key-value的map,但是由于各個組件間傳遞的tuple的字段名稱已經事先定義好,所以tuple中只要按序填入各個value就行了,所以就是一個value list.
Stream: 源源不斷傳遞的tuple就組成了stream。

總結

以上是生活随笔為你收集整理的流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。