Storm は、リアルタイム データ ストリームを処理するための分散フレームワークです。そのアーキテクチャはパブリッシュ/サブスクライブ モデルに基づいており、データを読み取ってトポロジにパブリッシュするスパウトと、データを処理するボルトが含まれます。実際には、Storm を使用してリアルタイムの Web サイト トラフィックを計算できます。 // スパウトとボルトを作成して Web サイトのトラフィックを処理し、平均リクエスト数を計算します。 // StormSubmitter を使用してトポロジを送信します。 Storm は、処理に非常に適した強力なフレームワークです。リアルタイムのデータフロー。
Java ビッグ データ処理における Storm の役割
はじめに
Apache Storm は、アプリケーション、センサー、またはその他のソースによって生成されたリアルタイム データの大規模なストリームを処理するための分散型リアルタイム ストリーム処理フレームワーク。高スループット、低遅延、耐障害性で知られています。
アーキテクチャ
Storm はパブリッシュ/サブスクライブ モデルに基づいており、データ パブリッシャーはスパウトと呼ばれ、サブスクライバーはボルトと呼ばれます。スパウトはデータ ソースからデータを読み取り、それを Storm トポロジにパブリッシュします。一方、ボルトは受信したデータを処理し、必要に応じて出力を生成します。
実践的なケース
Web サイトのトラフィックをリアルタイムで計算する必要がある例を考えてみましょう。この目標を達成するには、Storm を使用してトポロジを作成します:
// Spout类 class WebsiteTrafficSpout extends SpoutBase { private final AtomicInteger count = new AtomicInteger(); @Override public void nextTuple() { emit(new Values("website", count.incrementAndGet())); } } // Bolt类 class WebsiteTrafficBolt extends BaseBasicBolt { private final Histogram histogram = new Histogram(); @Override public void execute(Tuple input, BasicOutputCollector collector) { String website = input.getStringByField("website"); int count = input.getIntegerByField("count"); histogram.update(count); collector.emit(new Values("website", website, histogram.getMean())); } }
トポロジ構成
StormSubmitter クラスを使用してトポロジを作成して送信します:
StormSubmitter.submitTopology("website-traffic-topology", new Config(), new TopologyBuilder() .setSpout("traffic-spout", new WebsiteTrafficSpout(), 1) .setBolt("traffic-bolt", new WebsiteTrafficBolt(), 1) .shuffleGrouping("traffic-spout", "traffic-bolt") .createTopology());
Afterトポロジを開始すると、Web サイトのトラフィック データが継続的に処理され、Bolt を介して 1 秒あたりの平均リクエスト数がリアルタイムで生成されます。
結論
Storm は、リアルタイム データ ストリームの処理に最適な強力なフレームワークです。分散アーキテクチャ、低遅延、耐障害性により、ビッグデータの処理と分析に最適です。
以上がJavaビッグデータ処理におけるStormの役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。