スタンドアロン クラスターで spark アプリケーションを実行しようとしています。このアプリケーションでは、tf-idf ベクトルを使用して単純ベイズ分類器をトレーニングしています。
この投稿と同様の方法でアプリケーションを作成しました ( LogisticRegression の Spark MLLib TFIDF 実装)。主な違いは、各ドキュメントを取得し、トークン化して正規化することです。
JavaRDD<Document> termDocsRdd = sc.wholeTextFiles("D:/fileFolder").flatMap(new FlatMapFunction<Tuple2<String,String>, Document>() {
@Override
public Iterable<Document> call(Tuple2<String,String> tup)
{
return Arrays.asList(parsingFunction(tup));
}
});
parsingFunction には map や flatMap などの Spark 関数はありません。そのため、データ配布関数は含まれていません。
私のクラスタは - 1 台のマスター マシンと 2 台の別のマシン - ノードです。すべてのマシンに 8 コアの CPU と 16 GB の RAM が搭載されています。20 個のテキスト ファイル (それぞれ ~ 100 KB - 1.5 MB) で分類子をトレーニングしようとしています。私は分散ファイルシステムを使用せず、ファイルをノードに直接配置します。
問題は、クラスターが思ったほど速く動作しないことです - 分類子は約 5 分間トレーニングされました... ローカル モードでは、この操作にかかる時間ははるかに短くなりました。
何に注意すればよいですか?
アドバイスをいただければ幸いです。
ありがとう!