2016-11-25 9 views
0

Sparkによって提供されるスクリプトを使用して2つのm1.large(2つのコアを持つべきですか? 複数の問題を解決した後、私は最終的にEC2で初めてのSparkアルゴリズムを実行することができました。EC2でスパークを実行すると、1つのエグゼキュータのみが使用されます(more)。

悲しいことに、私のアルゴリズムの実行時間は、私のスパーク送信スクリプトで設定したエグゼキュータの数に比例しないことをすぐに認識しました。 --master [1]を--master [2]に変更したとしても、ランタイムは変わりません。私のローカルマシンでこれを行うと、ランタイムが著しく変化するので、アルゴリズムに問題があってはならないと思います...

SparkのUIを見て、私の疑惑は正しいと証明されました。私がスクリプトにもっと使うように言っていたとしても、ずっと使っていました。

私はこのようなS3から外に自分のデータを読み込む:JavaRDD LOGDATA = sc.textFile( "S3N:// ID:[email protected]/testFolder/file.csv").cache();」

マイspark-submitスクリプトの呼び出しは次のようになります:sudo/root/spark/bin/spark-submit --class "SimpleApp" --verbose --master local [2] --num-executors 2 --executor-core 2/home

/ec2-user/simple-project-1.0.jar私は4つのパーティションに手動でRDDを分割します。

誰が悪かったのか、そして誰かが私を伝えることができ、[exacltly何--master地元何のアイデアを2]が設定され、差異がウィ​​ットである場合h --num-executor 2と--executor-cores 2?

挨拶、 ダニエル

答えて

1

--master local[2]は、あなたがそれ(PROCESS_LOCAL)内部のドライバ/エグゼで2つのスレッドを使用して1つのスパークプロセスを持っていることを意味します。また、すべてのエグゼキュータは別個のプロセスとして設計されているため、実行者が1人だけであることを意味します。これらのパラメータが使用されていない--master local[2]

: - セットアップスタンドアロンクラスタをスパークすることができます -

--num-executors 2 and --executor-cores 2;

あなたが複数のノードを持っている場合はcluster-launch-scripts

+0

は、私の使用している変数に関する情報をいただき、ありがとうございます。残念ながら、私はLinux、Apache、スクリプトに慣れていません。このため私はいくつかの疑問が残っています:1.このconf/slaveファイルはどのように見えるのでしょうか、どこに置くべきですか?私の奴隷のホスト名を記載する必要がありますが、どの形式ですか? 2.このスクリプトではどのコマンドを使用しますか? 3.後で.jarファイルをどのように実行するのですか? –

+0

私はもっと多くのものをオンラインで検索しました。 sparkによって提供されたec2スクリプトはすでに私のマスターノードと私のワーカーノードに接続されています(conf/slaveファイルは既に埋め込まれています)。さらに、それらはすでに開始されています。 sbin/start-all.shスクリプトを使用すると、彼は両方が実行されていると言い、最初にそれらを停止する必要があります)。つまり、あなたの答えにあるものがすでに設定されているということです。今すぐ正しく始めるにはどうすればいいですか? –

+0

@DanielTöwsあなたのspark-defaults.confに既にspark:/// host:portを持つspark.masterプロパティがある場合、あなたのスタンドアロンのクラスタはすでに設定されています。あなたは実行時に '--master local [2]'オプションを削除できますspark.masterがすでに設定されているため、spark-submitを実行します。 –

関連する問題