關於storm集群的安裝和相關概念詳解

2021-09-07 09:29:35 字數 2554 閱讀 4018

storm的基本介紹

storm是twitter公司開源捐獻給apache的乙個實時流式處理的框架

storm的基本架構

storm是乙個主從的架構

nimbus:storm的主節點,負責接收客戶端提交的任務,以及分配任務給 supervisor執行

supervisor:storm的從節點,主要就是用於執行各種任務

worker:supervisor的任務需要執行,都是在程序worker當中執行

execuotr:最後真正執行任務的,跑資料的,都是executor,說白了就是執行緒

topology:我們提交乙個strom的任務,就是提交了乙個topology

storm的集群的安裝

第一步:解壓strom安裝包

tar -zxvf apache-storm-1.1.1.tar.gz -c …/servers/

第二步:修改配置檔案(這裡的配置檔案是conf目錄下的storm.yaml檔案)

storm.zookeeper.servers:

scp -r apache-storm-1.1.1/ node02:$pwd

scp -r apache-storm-1.1.1/ node03:$pwd

第四步:storm集群的啟動

第一台機器啟動命令:

nohup bin/storm nimbus 2>&1 &

nohup bin/storm ui 2>&1 &

nohup bin/storm supervisor 2>&1 &

第二台啟動命令:

nohup bin/storm nimbus 2>&1 &

nohup bin/storm supervisor 2>&1 &

第三台機器啟動

nohup bin/storm nimbus 2>&1 &

nohup bin/storm supervisor 2>&1 &

4. storm任務的並行度

調整程序數量

config.setnumworkers(3);

調整執行緒數量

topologybuilder.setspout(「randomspout」,new randomspout(),3);

topologybuilder.setbolt(「splitbolt」,new splitbolt(),3).shufflegrouping(「randomspout」);

topologybuilder.setbolt(「countbolt」,new countbolt(),3).shufflegrouping(「splitbolt」);

storm當中資料的分發策略

storm當中的分組策略,一共有八種:

所謂的grouping策略就是在spout與bolt、bolt與bolt之間傳遞tuple的方式。總共有八種方式:

1)shufflegrouping(隨機分組)隨機分組;將tuple隨機分配到bolt中,能夠保證各task中處理的資料均衡;

2)fieldsgrouping(按照字段分組,在這裡即是同乙個單詞只能傳送給乙個bolt)

按欄位分組; 根據設定的字段相同值得tuple被分配到同乙個bolt進行處理;

舉例:builder.setbolt(「mybolt」, new mystorebolt(),5).fieldsgrouping(「checkbolt」,new fields(「uid」));

說明:該bolt由5個任務task執行,相同uid的元組tuple被分配到同乙個task進行處理;該task接收的元祖欄位是mybolt發射出的字段資訊,不受uid分組的影響。

該分組不僅方便統計而且還可以通過該方式保證相同uid的資料儲存不重複(uid資訊寫入資料庫中唯一);

3)allgrouping(廣播傳送,即每乙個tuple,每乙個bolt都會收到)廣播傳送:所有bolt都可以收到該tuple

4)globalgrouping(全域性分組,將tuple分配到task id值最低的task裡面)全域性分組:tuple被傳送給bolt的同乙個並且最小task_id的任務處理,實現事務性的topology

5)nonegrouping(隨機分派)不分組:效果等同於shuffle grouping.

6)directgrouping(直接分組,指定tuple與bolt的對應傳送關係)

直接分組:由tuple的發射單元直接決定tuple將發射給那個bolt,一般情況下是由接收tuple的bolt決定接收哪個bolt發射的tuple。這是一種比較特別的分組方法,用這種分組意味著訊息的傳送者指定由訊息接收者的哪個task處理這個訊息。 只有被宣告為direct stream的訊息流可以宣告這種分組方法。而且這種訊息tuple必須使用emitdirect方法來發射。訊息處理者可以通過topologycontext來獲取處理它的訊息的taskid (outputcollector.emit方法也會返回taskid)。

7)local or shuffle grouping本地或者隨機分組,優先將資料傳送到本機的處理器executor,如果本機沒有對應的處理器,那麼再傳送給其他機器的executor,避免了網路資源的拷貝,減輕網路傳輸的壓力

8)customgrouping (自定義的grouping)

Storm集群安裝

storm集群的安裝分為以下幾步 storm發行版本解壓目錄下有乙個conf storm.yaml檔案,用於配置storm。預設配置在這裡可以檢視。conf storm.yaml中的配置選項將覆蓋defaults.yaml中的預設配置。以下配置選項是必須在conf storm.yaml中進行配置的 ...

storm集群安裝

vim etc profile export storm home export servers storm export path path storm home bin 2.修改storm配置檔案 vim storm.yaml 指定storm使用的zk集群 storm.zookeeper.ser...

Storm 集群安裝

版本都在這 本人安裝的是 其他版本的自行安裝吧,估計都差不多 sudo mkdir export servers sudo chmod r 777 export mkdir export servers tar zxvf apache storm 1.0.0.tar.gz c export serv...