嵐スパウトが言及した上記の嵐基本的な概念は、中断することなく、データの安定した流れを取られるべきです。だから、明らかに、そのデータソースとしてメッセージキューイングシステム、分散メモリ・システムまたはメモリデータベースは良い選択です。そのため、嵐のリリースパッケージには、カフカからのサポートが嵐のアプリケーションのデータを読んで、統合されたjarファイルが含まれています。プロセスの使用について以下のレコード。
エッセイのBenpian ストームケースプログラミングの改善に基づきます
1、追加のjarパッケージ
Javaプロジェクトで嵐 - カフカ-0.9.2-incubating.jar追加しました、jarファイルは、Apache-嵐-0.9.2-インキュベート/外部/ストーム・カフカから入手することができます
図2に示すように、アセンブリのクラスを変更します
1つの パッケージのデモ。 2 3 インポートjava.util.UUID。 4 5 インポートbacktype.storm.Config。 6 インポートbacktype.storm.StormSubmitter。 7 インポートbacktype.storm.generated.StormTopology。 8 インポートbacktype.storm.spout.SchemeAsMultiScheme。 9 インポートbacktype.storm.topology.TopologyBuilder。 10 インポートstorm.kafka.BrokerHosts。 11 インポートstorm.kafka.KafkaSpout。 12 インポートstorm.kafka.SpoutConfig。 13 インポートstorm.kafka.StringScheme。 14 インポートstorm.kafka.ZkHosts; 15 16 // アセンブリの種々の構成要素、嵐の、クラスタにタスクを提出する 。17 パブリック クラス{SubmitClientが 18である 19。 パブリック 静的 ボイドメイン(文字列[]引数)をスロー例外{ 20は // トポロジ構造を得ますデバイス 21は、 TopologyBuilderビルダー= 新しい新TopologyBuilder(); 22がある // 私たちのスパウト指定 23がある builder.setSpout( "データソース-スパウト" 、createKafkaSpout()); 24 // 指定されたボルトアセンブリ、また、データソースを指定する必要があります 25 builder.setBoltを( "boltA"、新しい新しい MyBoltA())shuffleGrouping。( "データソース-スパウト" ;) 26は、 builder.setBolt( "boltB"、新新)shuffleGrouping( "Bolta" MyBoltB()); 27 //は、特定のタスク生成 28 StormTopology phoneTopo = ビルダーを.createTopology(); 29 // パラメータの数指定されたタスク 30 コンフィグ設定= 新しい新設定(); 31である // 分布がタスク実行する6嵐ワーカークラスタ所望 32 config.setNumWorkers(6 ;) 33である // タスクを提出 34である StormSubmitterを.submitTopology( "mystormdemo" 、設定、phoneTopo); 35 } 36 37 // Kakfaは、データメッセージシステムから読み出さサポート 38は プライベート 静的KafkaSpout createKafkaSpout(){ 39 BrokerHostsのbrokerHosts = 新しい新 ZkHosts( "192.168.7.151:2181,192.168.7.152:2181,192.168.7.153:2181" )。 40 SpoutConfig spoutConfig = 新しい新しい SpoutConfig(brokerHosts、 "mydemo1"、 "/ mydemo1" 、UUID.randomUUID()のtoString()); 41である spoutConfig.scheme = 新しい新しい SchemeAsMultiScheme(新しい新しいStringScheme()); 42である // KafkaSpoutリターン 43 IS 返す 新しい新しいKafkaSpout(spoutConfig)。 44 } 45 }
23行目は口カフカ、および新しいメソッドを指定されているcreateKafkaSpout
3、ファイルのパッケージ化、送信サーバー
stormDemo.jarにこれらの4つのファイルは、サーバの嵐にアップロードし、一時的には/ usr / local /テスト/嵐に保存されています
4、サーバは、余分なjarファイルのパッケージを追加します
嵐、位置kafka_2.9.2-0.8.1.1へのサービスに関連したカフカのjarパケットを追加/ apacheのストーム0.9.2-インキュベート/ libのに追加LIBS
[ルート@ localhostの嵐-カフカ]#cpは嵐・カフカ-0.9.2-incubating.jar /usr/local/apache-storm-0.9.2-incubating/lib/
[ルート@ localhostのLIBS]#cpはkafka_2.9.2- 0.8.1.1.jar /usr/local/apache-storm-0.9.2-incubating/lib/ [ルート@ localhostのLIBS]#cpはScalaの -library-2.9.2.jar /usr/local/apache-storm-0.9。 2-インキュベーション/ LIB / #CPメトリック[ローカルホストLIBS @ルート] -core-2.2.0.jar /usr/local/apache-storm-0.9.2-incubating/lib/ #のcpてきぱき[ローカルホストLIBS @ルート] - java-1.0.5.jar /usr/local/apache-storm-0.9.2-incubating/lib/ [ルート@ localhostのLIBS]#cpはzkclient -0.3.jar /usr/local/apache-storm-0.9.2-インキュベーション/ libに/ [ルート@ localhostのLIBS]#cpはlog4jの -1.2.15.jar /usr/local/apache-storm-0.9.2-incubating/lib/ [ルート@ localhostのLIBS]#CP SLF4J -api-1.7.2.jar /usr/local/apache-storm-0.9.2-incubating/lib/ [ルート@ localhostのLIBS]#CP jopt -simple-3.2.jar / USR /ローカル/ apacheのストーム0.9.2-インキュベート/ libに/
5、関連するプログラムを開始
まず飼育係、カフカ、嵐のサービスを開始した後、以前のエッセイを参照して、それぞれのプロデューサークライアントカフカを開始
その後、タスクを提出するには、次のコマンドを実行します。
[ルート@ localhostのApacheのストーム0.9.2-インキュベート]#ビン/嵐ジャー/usr/local/test/storm/stormDemo.jar demo.SubmitClient