Storm 使用經驗與效能優化(一)

2021-07-23 04:37:24 字數 2123 閱讀 5382

提交任務:storm jar storm-starter-topologies-1.0.1.jar org.apache.storm.starter.wordcounttopology word-count
查詢任務:storm list
kill任務:storm kill word-count

1) 使用rebalance命令動態調整併發度

storm提供了rebalance命令,可以動態調整topology的worker數量和component的併發度,而不用修改topology的**。如果想動態增加某個component的併發度,需要設定component的numtask數量或者maxtaskparallelism的引數值,並且大於併發度引數值(parallelism_hint)的值。如果不設定numtask數量,預設值等同於併發度,重新平衡的時候就只能減少併發度,而不能再增加了。

sentencespout spout=new sentencespout();

splitsentencebolt splitbolt=new splitsentencebolt();

wordcountbolt countbolt=new wordcountbolt();

reportbolt reportbolt=new reportbolt();

topologybuilder builder=new topologybuilder();

// 設定併發為2個executor,每個task指派各自的executor執行緒

builder.setspout(sentence_spout_id,spout,5).setmaxtaskparallelism(10);

// 設定併發為2個executor,每個executor執行2個task

builder.setbolt(split_bolt_id,splitbolt,8).shufflegrouping(sentence_spout_id).setnumtasks(16);

// 有時候我們需要將特定資料的tuple路由到特殊的bolt例項中,在此我們使用fieldsgrouping

// 來保證所有"word"字段值相同的tuple會被路由到同乙個wordcountbolt例項中

builder.setbolt(count_bolt_id,countbolt,12).fieldsgrouping(split_bolt_id,new fields("words"));

builder.setbolt(report_bolt_id,reportbolt).globalgrouping(count_bolt_id);

/*map conf=new hashmap();

conf.put(config.topology_workers,4);

conf.put(config.topology_debug,true);*/

config conf = new config();

conf.setdebug(true);

conf.setnumworkers(3);

localcluster cluster=new localcluster();

cluster.submittopology(topology_name,conf,builder.createtopology());

// thread.sleep(1000);

// cluster.shutdown();

在構建topology的過程中,指定了spout的初始併發度為5,也就是會啟動5個executor執行緒來執行,然後設定最大併發度為10,上限為10個executor執行緒;同時也指定了split初始併發度為8,最大的task數量為16個。在執行過程中,我們發現spout或者split的效能是瓶頸,可以通過調整併發度來提供效能。spout併發度上限為10個,split的最大併發度為16個。

storm rebalance word-count -w 10 -n 4 -e spout=8 -e split=12

storm通過自己內部的重新部署和分配,來完成併發度的調整。等待10s後,topology進入重新分配狀態,等重新分配完成後,就可以在storm ui上看見新的結果了。

Storm效能優化

如何找到topology的效能瓶頸?效能優化的第一步就是找到瓶頸在 從瓶頸處入手,解決關鍵點問題,事半功倍。除了通過系統命令檢視cpu使用,jstack檢視堆疊的呼叫情況以外,還可以通過storm自身提供的資訊來對效能做出相應的判斷。在storm 的ui中,對沒過topology都提供了相應的統計資...

MySQL 效能優化 經驗

1.為查詢快取優化你的查詢 大多數的mysql伺服器都開啟了查詢快取。這是提高性最有效的方法之一,而且這是被mysql的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到乙個快取中,這樣,後續的相同的查詢就不用操作表而直接訪問快取結果了。這裡最主要的問題是,對於程式設計師來...

Oracle Proc程式設計效能優化經驗

proc 是oracle提供的一種資料庫操作的api。它是基於esql技術的,需要預編譯後才可以變成普通c 非常不直觀,使用起來不太方便,閱讀也存在困難。下面以乙個簡單需求進行舉例說明 要求把db1裡面一張資料表tbl hch test的資料匯出到db2的同名表。最快的方法當然是使用oracle的資...