真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用Storm

這篇文章主要介紹“怎么使用Storm”,在日常操作中,相信很多人在怎么使用Storm問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Storm”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習吧!

為和平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及和平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都做網(wǎng)站、和平網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

項目Pom(Storm jar沒有提交到Maven中央倉庫,需要在項目中加入下面的倉庫地址):


    
        central
        Maven Repository Switchboard
        default
        http://maven.oschina.net/content/groups/public/
        
            false
        
    
    
        clojars
        https://clojars.org/repo/
        
            false
        
        
            true
        
    



    
        org.yaml
        snakeyaml
        1.13
    

    
        org.apache.zookeeper
        zookeeper
        3.3.3
    

    
        org.clojure
        clojure
        1.5.1
    

    
        storm
        storm
        0.9.0.1
    

    
        storm
        libthrift7
        0.7.0
    

下面是一個Storm的HelloWord的例子,代碼有刪減,熟悉Storm的讀者自然能把代碼組織成一個完整的例子。

public static void main(String[] args) {
	Config conf = new Config();
	conf.put(Config.STORM_LOCAL_DIR, "/Volumes/Study/data/storm");
	conf.put(Config.STORM_CLUSTER_MODE, "local");
	//conf.put("storm.local.mode.zmq", "false");
	conf.put("storm.zookeeper.root", "/storm");
	conf.put("storm.zookeeper.session.timeout", 50000);
	conf.put("storm.zookeeper.servers", "nowledgedata-n15");
	conf.put("storm.zookeeper.port", 2181);
	//conf.setDebug(true);
	//conf.setNumWorkers(2);
	
	TopologyBuilder builder = new TopologyBuilder();
	builder.setSpout("words", new TestWordSpout(), 2); 
	
	builder.setBolt("exclaim2", new DefaultStringBolt(), 5)
	       .shuffleGrouping("words");
	LocalCluster cluster = new LocalCluster();
	cluster.submitTopology("test", conf, builder.createTopology());
}
  • Config.STORM_LOCAL_DIR是配置一個本地路徑,Storm會在這個路徑寫入一些配置信息和臨時數(shù)據(jù)。

  • Config.STORM_CLUSTER_MODE是運行模式,local和distributed兩個選項,即本地模式和分布式模式。本地模式在運行時時多線程模擬的,開發(fā)測試用;分布式模式在分布式集群下是多進程的,真正的分布式。

  • Storm的Spout和Blot高可用是通過ZooKeeper協(xié)調(diào)的,storm.zookeeper.root是一個ZooKeeper地址,并且有對應(yīng)的端口號

  • Debug是測試模式,有更詳細的日志信息。

TestWordSpout是一個Storm自帶的例子,用來隨機的產(chǎn)生new String[] {"nathan", "mike", "jackson", "golda", "bertels"};列表中的字符串,用來提供數(shù)據(jù)源。

其中DefaultStringBolt的源碼:

OutputCollector collector;

public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
    this.collector = collector;
}

public void execute(Tuple tuple) {
	log.info("rev a message: " + tuple.getString(0));
	collector.emit(tuple, new Values(tuple.getString(0) + "!!!"));
    collector.ack(tuple);
}

運行日志:

10658 [Thread-29-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10658 [Thread-31-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10758 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: mike 10758 [Thread-33-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 10859 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 10859 [Thread-29-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels 10961 [Thread-31-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10961 [Thread-33-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 11061 [Thread-35-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 11062 [Thread-35-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 11162 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels 11163 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson

數(shù)據(jù)由一個Storm叫做噴嘴(Spout,也相當一個水龍頭,能產(chǎn)生數(shù)據(jù)的來源端)產(chǎn)生,然后傳遞給后端一連串的的Blot,最終被轉(zhuǎn)換和消費。而Spout和Blot都是并行的,并行度都可以自己設(shè)置(本地運行是靠多線程模擬的)。如:

builder.setSpout("words", new TestWordSpout(), 2); 
builder.setBolt("exclaim2", new DefaultStringBolt(), 5)

噴嘴TestWordSpout的并行度是2,DefaultStringBolt的并行度是5.

從日志可以看出,數(shù)據(jù)經(jīng)過噴嘴到達預(yù)先定于的一個Blot,打印了日志。我測試代碼設(shè)置的并行度是5,日志中統(tǒng)計,確實是5個線程:

  1. Thread-29-exclaim2

  2. Thread-31-exclaim2

  3. Thread-26-exclaim2

  4. Thread-33-exclaim2

  5. Thread-35-exclaim2

借用OSC網(wǎng)友的話說,Hadoop就是商場里自動升降式的電梯,用戶需要排隊等待,選按樓層,然后到達;而Storm就像是自動扶梯,扶梯預(yù)先設(shè)置好運行后,來人就立即運走,目的地是明確的。

Storm按我的理解,Storm和Hadoop是完全不同的,設(shè)計上也沒有半點擬合的部分。Storm更像是我之前介紹過的Spring Integration,是一個數(shù)據(jù)流系統(tǒng)。它能把數(shù)據(jù)按照預(yù)設(shè)定的流程,把數(shù)據(jù)做各種轉(zhuǎn)換,傳遞,分解,合并,最后數(shù)據(jù)到達后端存儲。只不過Storm是可以分布式,而且分布式的能力也是可以自己設(shè)置。

Storm的這種特性很適合大數(shù)據(jù)類的ETL系統(tǒng)開發(fā)。

到此,關(guān)于“怎么使用Storm”的學(xué)習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習,快去試試吧!若想繼續(xù)學(xué)習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:怎么使用Storm
鏈接分享:http://weahome.cn/article/jhdeos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部