0

スタンドアロン クラスターで 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 分間トレーニングされました... ローカル モードでは、この操作にかかる時間ははるかに短くなりました。

何に注意すればよいですか?

アドバイスをいただければ幸いです。

ありがとう!

4

1 に答える 1

1

トレーニング データの RDD をキャッシュしましたか? ベイズ分類器のトレーニングのような反復アルゴリズムは、RDD がキャッシュされていない限りパフォーマンスが低下します。

于 2014-12-11T17:03:41.013 に答える