hadoop 之 storm (程式設計模型、併發度、架構模型)
阿新 • • 發佈:2018-12-31
目錄
- 1、程式設計模型
- 2、併發度
- 3、架構模型
1、程式設計模型
- DataSource:外部資料來源;
- Spout:接受外部資料來源的元件,將外部資料來源轉化成Storm內部的資料,以Tuple為基本的傳輸單元下發給Bolt;
- Bolt: 接受Spout傳送的資料,或上游的bolt的傳送的資料。根據業務邏輯進行處理,傳送給下一個Bolt或者是儲存到某種介質上,介質可以是Redis可以是mysql,或者其他;
- Tuple:Storm內部中資料傳輸的基本單元,裡面封裝了一個List物件,用來儲存資料;
- StreamGrouping: 資料分組策略:shuffleGrouping(Random函式), Non Grouping(Random函式), FieldGrouping(Hash取模)、Local or ShuffleGrouping 本地或隨機,優先本地。
2、併發度
- 使用者指定的一個任務,可以被多個執行緒執行,併發度的數量等於執行緒的數量。一個任務的多個執行緒,會被執行在多個Worker(JVM)上,有一種類似於平均演算法的負載均衡策略。儘可能減少網路IO,和Hadoop中的MapReduce中的本地計算的道理一樣。
3、架構模型
- Nimbus:任務分配;
- Supervisor:接受任務,並啟動worker,worker的數量根據埠號來的。
- Worker:執行任務的具體元件(其實就是一個JVM),可以執行兩種型別的任務,Spout任務或者bolt任務。
- Task:Task=執行緒=executor。 一個Task屬於一個Spout或者Bolt併發任務。
- Zookeeper:儲存任務分配的資訊、心跳資訊、元資料資訊。