2016-07-27 4 views
0

私はスパークアプリケーションを持っています。 Oracleからのデータをデータフレームに読み込んでいます。私はそれをjavaRDDに変換し、savingAsTExtをhdfsに変換しています。 私はこれを8ノードのクラスタ上で実行しています。私はspark-webUIで仕事を見るとき。私はそれがわずか2コンテナと2 CPUを得ていることがわかります。スパークジョブが得られませんクラスターに十分なコンテナ

私はoracleから5つのテーブルを読んでいます。各テーブルには約500万行があります。データサイズは約80GBです。

spark-submit --class "oracle.table.join.JoinRdbmsTables" --master yarn --deploy-mode cluster oracleData.jar 

はまた、私は使用:

糸--deployモードクラスタ--num-キュータ40 oracleDataWrite --master --class "oracle.table.join.JoinRdbmsTablesを" スパーク提出します.jar

私は40のコンテナが仕事に割り当てられるのを見ることができました。しかし、私はアクティブな仕事 on web-uiしか見ることができませんでした。

私は別のスパークアプリケーションを持っています。どの20GBのテキストファイルを読み込んで、次に私はいくつかのデータの処理とhdfsに保存しています。私は約64のコンテナとcpusで割り当てられているのがわかります。

spark-submit --class "practice.FilterSave" --master yarn --deploy-mode cluster batch-spark-0.0.1-SNAPSHOT-jar-with-dependencies.jar mergedData.json 

両者の差がある:: - >>最初のために、私は、データフレームを使用しSQLContextを使用していながら、私はsparkJavaContextを使用しています第二のアプリケーションのために。

注:私は両方ともエラーを表示していません。ここ

iが5テーブル

Map<String, String> options = new HashMap(); 
options.put("driver", "oracle.jdbc.driver.OracleDriver"); 
options.put("url", "XXXXXXX"); 
options.put("dbtable", "QLRCR2.table1"); 
DataFrame df=sqlcontext.load("jdbc", options); 
//df.show(); 
JavaRDD<Row> rdd=df.javaRDD(); 
rdd.saveAsTextFile("hdfs://path"); 

Map<String, String> options2 = new HashMap(); 
options2.put("driver", "oracle.jdbc.driver.OracleDriver"); 
options2.put("url", "XXXXXXX"); 
options2.put("dbtable", "QLRCR2.table2"); 
DataFrame df2=sqlcontext.load("jdbc", options); 
//df2.show(); 
JavaRDD<Row> rdd2=df2.javaRDD(); 
rdd2.saveAsTextFile("hdfs://path"); 

をロードするために使用しているコードの一部である任意のヘルプが理解されるであろう:)

答えて

0

糸上で実行さを設定することによって設定されているエグゼキュータの数 - これはN executorを得ることを意味するものではなく、NがYarnから要求されることに注意してください。実際に取得できる金額は、エグゼキュータごとに要求するリソースの量によって異なります。たとえば、各ノードがYarn(yarn-site.xml yarn.nodemanager.resource.memory-mb)専用の25GBを持ち、8ノードがあり、他のアプリケーションがYarn上で実行されていない場合、8人のエグゼキュータを〜20GB。あなたが--executor-memoryで要求するものの上にSparkが10%(デフォルト)のオーバーヘッドを追加するので、25GB全体を要求することはできません。多かれ少なかれ類似した--execturo-cores(yarn-site.xml yarn.nodemanager.resource.cpu-vcores)です。

タスクの量に関する2つ目の質問は はあなたと合意このgood explanation on how stages are split into tasks

+0

をチェックアウトし、別のものです。答えるためのThanx。しかし、私はこのことを認識しています。あなたが私の2番目のアプリケーションを検討しているなら、指揮命令にnum-executersは言及していません。それは入力のサイズに基づいて割り当てられます。しかし、最初のアプリケーションでは十分ではなく、2になってしまったので、私は実行者の乱数を与えました。ジョブは順番に実行されています。どうしてか分かりません :( –

関連する問題