問題タブ [bolt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hive - Storm トポロジの高速化
csv ファイルを HDFS から Hive に移動するアプリケーションがあります。そのプロセスには Storm Topology を使用しています。
8台のマシンが使用されています。それぞれに 22 個のコアと 512 GB の RAM があります。ただし、コードの実行は非常に遅くなります。600 万のデータ転送が完了するまでに 10 分かかります。
60 個のファイルのうち 10 MB が 1 秒間に HDFS に転送されます。コードを最適化しようとしていますが、非常に間違ったことをしていることは明らかです。
Hive テーブルには、64 個のバケットがあります。
このトポロジーには、1 つのスパウトと 2 つのボルトがあります。基本的に、Spout は CSV ファイルを取得し、データの解析を担当する最初の Bolt に行を送信し、次に、Bolt が HDFS プロセスを担当する 2 番目の Bolt に送信します。
HDFS スパウト;
マッパー;
ハイブ オプション;
構成;
トポロジビルダー;
次のパラメータについては不明です。
HDFS スパウトで。.setMaxOutstanding(50_000);
ハイブスパウトオプションで。.withTxnsPerBatch(2) .withBatchSize(50_000) .withTickTupleInterval(1);
設定で; .setNumWorkers(6); .setNumAckers(6);
スパウトとボルトの平行度; それぞれに8つ与えました。
これらのパラメーターの値は何にする必要がありますか? 前もって感謝します。
編集; これは、100 個の csv ファイルの 10 mb のテスト結果です。
hdfsSpout Executor: 8 完全遅延: 1834.209 ミリ秒
recordParserBolt Executor: 8 完全遅延: 0.019 ミリ秒
hiveBolt Executor: 8 完全遅延: 1092.624 ミリ秒
java - apache storm - 単一ノードでjarを正しく実行しますが、マルチノードでは実行しません
私は Apache ストームを初めて使用します。1 つのスパウトと 2 つのボルトを含むコードを書きました。この 3 つの部分を 1 つのワーカーで実行すると、コードは正しく出力を生成しますが、1 つのワーカーが実行する 3 つのワーカーでコードを実行すると、スパウト、別のランボルト 1、最後のランボルト 2 の場合、出力は生成されません。特定の状況: 1 つのワーカーにボルト 1 と 2 を配置すると、出力が生成されました!
エミットは正常に機能し、エミット変数に問題はないと言わざるを得ません。
詳細: ボルト 1 でハッシュマップ構造にツリーを作成しました。ボルト 2 でこのツリーをマイニングしたいと思います。ボルト 1 でツリーに挿入されるオブジェクトの ID は "MyTreeNode@e70014d5" のようになり、このタプルを受け取ったとき (ハッシュマップ) ボルト 2 では、ID が「MyTreeNode@z5542r12」のようなものに変更されました。
主な問題は何ですか?
問題はオブジェクト ID の変更によるものですか? はいの場合、どうすれば解決できるか教えてください。