Spark のスタンドアロン モードで ec2-script を使用して 10 ノードのクラスターを起動しました。PySpark シェル内から s3 バケットのデータにアクセスしていますが、RDD で変換を実行すると、1 つのノードしか使用されません。たとえば、以下は CommonCorpus からデータを読み込みます。
bucket = ("s3n://@aws-publicdatasets/common-crawl/crawl-data/CC-MAIN-2014-23/"
"/segments/1404776400583.60/warc/CC-MAIN-20140707234000-00000-ip-10"
"-180-212-248.ec2.internal.warc.gz")
data = sc.textFile(bucket)
data.count()
これを実行すると、10 個のスレーブのうち 1 つだけがデータを処理します。これは、1 つのスレーブ (213) だけが、Spark Web コンソールから表示したときにアクティビティのログを持っているためです。Ganglia でアクティビティを表示すると、この同じノード (213) が、アクティビティの実行時にメモリ使用量が急増した唯一のスレーブです。
さらに、スレーブが 1 つだけの ec2 クラスターで同じスクリプトを実行すると、まったく同じパフォーマンスが得られます。私は Spark 1.1.0 を使用しています。ヘルプやアドバイスをいただければ幸いです。