標籤:blog http java 使用 os io 資料 art
由於項目需要,最近對storm進行了預研,安裝與使用方式網上有很多樣本,在此記錄一下,備忘。
一、storm簡介
Storm的術語包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被處理的資料。Sprout是資料來源。Bolt處理資料。Task是運行於Spout或Bolt中的 線程。Worker是運行這些線程的進程。Stream Grouping規定了Bolt接收什麼東西作為輸入資料。資料可以隨機分配(術語為Shuffle),或者根據欄位值分配(術語為Fields),或者 廣播(術語為All),或者總是發給一個Task(術語為Global),也可以不關心該資料(術語為None),或者由自訂邏輯來決定(術語為 Direct)。Topology是由Stream Grouping串連起來的Spout和Bolt節點網路。在Storm Concepts頁面裡對這些術語有更詳細的描述。
運行Storm叢集,你需要Apache Zookeeper、ØMQ、JZMQ、Java 6和Python 2.6.6。ZooKeeper用於管理叢集中的不同組件,ØMQ是內部訊息系統,JZMQ是ØMQ的Java。
安裝詳細:http://blog.csdn.net/qiyating0808/article/details/36041299
啟動storm叢集:
storm nimbus >/dev/null 2>&1 &storm supervisor >/dev/null 2>&1 &storm ui >/dev/null 2>&1 &
topology任務調度:
在storm(0.9.2)目錄下,有測試jar包(apache-storm-0.9.2-incubating/examples/storm-starter)可以進行叢集環境驗證。
任務調度方式:
#LocalCluster方式storm jar storm-starter-topologies-0.9.2-incubating.jar storm.starter.WordCountTopology#叢集方式storm jar storm-starter-topologies-0.9.2-incubating.jar storm.starter.WordCountTopology args
LocalCluster屬於單機方式,白話就是可以不依賴叢集進行結果測實驗證,開發階段該方式很有用,只要將storm依賴的jar引入project,使用單機方式在本地進行測試,通過後再投放到叢集中。
範例程式碼片段(截取自WordCountTopology):
public static void main(String[] args) throws Exception { TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("spout", new RandomSentenceSpout(), 5); builder.setBolt("split", new SplitSentence(), 8).shuffleGrouping("spout"); builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word")); Config conf = new Config(); conf.setDebug(true); if (args != null && args.length > 0) { conf.setNumWorkers(3); StormSubmitter.submitTopologyWithProgressBar("wordCount", conf, builder.createTopology()); } else { conf.setMaxTaskParallelism(3); LocalCluster cluster = new LocalCluster(); cluster.submitTopology("word-count", conf, builder.createTopology()); Thread.sleep(10000); cluster.shutdown(); }} Spout來源資料預研使用LinkedIn Kafka,將Spout根據topic來擷取對應的生產資訊,在storm叢集中消費掉。
二、Kafka簡介
安裝過程幾乎沒有,解壓後即可直接使用。
使用方式:
啟動kafka./kafka-server-start.sh ../config/server.properties建立topic./kafka-topics.sh --topic kafkaToptic --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partition 1 查看consumer./kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic kafkaToptic --from-beginning查看topic./kafka-topics.sh --list --zookeeper localhost:2181生產訊息./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic kafkaToptic
kafka 與storm整合開源項目也有很多,不需要二次開發,例如storm-kafka-0.8-plus。
Kafka生產者,在大資料架構中也有使用flume進行資料生產。