2016-10-21 4 views
0

私はhadoop 2.6.3とスパーク1.6がインストールされたクラスタを持っていました。糸のエグゼキュータがスパークのバージョンを間違って起動する

最近、sparkを2.0にアップグレードし、spark 2.0と互換性のある問題がいくつかある古い仕事を実行しようとするまで、すべてうまく動作しているようです。私が試した最初のものは、以下の通りであった

echo $SPARK_HOME 
/usr/local/spark-1.6.1-bin-hadoop2.6 
/usr/local/spark-1.6.1-bin-hadoop2.6/bin/spark-submit --master yarn--deploy-mode client /usr/local/spark-1.6.1-bin-hadoop2.6/examples/src/main/python/pi.py 100 

しかし、上記のジョブが失敗したと私は糸のログをチェックすると、私は以下のが見つかりました:

YARN executor launch context: 
env: 
CLASSPATH -> {{PWD}}<CPS>{{PWD}}/__spark__.jar<CPS>$HADOOP_CONF_DIR<CPS>$HADOOP_COMMON_HOME/share/hadoop/common/*<CPS>$HADOOP_COMMON_HOME/share/hadoop/common/lib/*<CPS>$HADOOP_HDFS_HOME/share/hadoop/hdfs/*<CPS>$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*<CPS>$HADOOP_YARN_HOME/share/hadoop/yarn/*<CPS>$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*<CPS>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*<CPS>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/* 
SPARK_LOG_URL_STDERR -> http://datanode01-bi-dev:8042/node/containerlogs/container_1476081972773_0194_01_000003/hadoop/stderr?start=-4096 
    SPARK_YARN_STAGING_DIR -> .sparkStaging/application_1476081972773_0194 
    SPARK_YARN_CACHE_FILES_FILE_SIZES -> 187698038,357051,44846 
    SPARK_USER -> hadoop 
    SPARK_YARN_CACHE_FILES_VISIBILITIES -> PRIVATE,PRIVATE,PRIVATE 
    SPARK_YARN_MODE -> true 
    SPARK_YARN_CACHE_FILES_TIME_STAMPS -> 1477040367079,1477040367425,1477040367454 
    SPARK_HOME -> /usr/local/spark-2.0.0-bin-hadoop2.6 
    PYTHONPATH -> /usr/local/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.zip:<CPS>{{PWD}}/pyspark.zip<CPS>{{PWD}}/py4j-0.9-src.zip 
    SPARK_LOG_URL_STDOUT -> http://datanode01-bi-dev:8042/node/containerlogs/container_1476081972773_0194_01_000003/hadoop/stdout?start=-4096 
    SPARK_YARN_CACHE_FILES -> hdfs://10.104.90.40:8020/user/hadoop/.sparkStaging/application_1476081972773_0194/spark-assembly-1.6.1-hadoop2.6.0.jar#__spark__.jar,hdfs://10.104.90.40:8020/user/hadoop/.sparkStaging/application_1476081972773_0194/pyspark.zip#pyspark.zip,hdfs://10.104.90.40:8020/user/hadoop/.sparkStaging/application_1476081972773_0194/py4j-0.9-src.zip#py4j-0.9-src.zip 
    command: 
    {{JAVA_HOME}}/bin/java -server -XX:OnOutOfMemoryError='kill %p' -Xms1024m -Xmx1024m -Djava.io.tmpdir={{PWD}}/tmp '-Dspark.driver.port=26087' '-Dspark.ui.port=0' -Dspark.yarn.app.container.log.dir=<LOG_DIR> -XX:MaxPermSize=256m org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark://[email protected]:26087 --executor-id 2 --hostname datanode01-bi-dev --cores 1 --app-id application_1476081972773_0194 --user-class-path file:$PWD/__app__.jar 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr 
....... 
....... 
Traceback (most recent call last): 
    File "pi.py", line 39, in <module> 
    count = sc.parallelize(range(1, n + 1), partitions).map(f).reduce(add) 
    File "/usr/local/spark-2.0.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/rdd.py", line 802, in reduce 
    File "/usr/local/spark-2.0.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/rdd.py", line 776, in collect 
    File "/usr/local/spark-2.0.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/rdd.py", line 2403, in _jrdd 
    File "/usr/local/spark-2.0.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/rdd.py", line 2338, in _wrap_function 
    TypeError: 'JavaPackage' object is not callable 

それは糸がlanuchedことは明らかですエグゼクティブはSpark 2.0を使用し、ジョブに失敗した問題を引き起こします。

私は、スパーク環境の設定に関連していると思うことができるすべてのコーナーをチェックしましたが、スパーク2.0は見つかりませんでした。 〜/ .bashrcの中

、私が持っている:私は同じ結果を得るために、名前ノードとデータノードの両方に上記のシナリオを試してみました

grep -rnw /usr/local/spark-1.6.1-bin-hadoop2.6 -e spark-2.0.0-bin-hadoop2.6 
grep -rnw /usr/local/hadoop-2.6.3 -e spark-2.0.0-bin-hadoop2.6 

export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH 
export SPARK_HOME=/usr/local/spark-2.0.0-bin-hadoop2.6 

はfolloingコマンドは、空の結果を与えました。

ただし、Java Piサンプルは正常に実行できます。

spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi /usr/local/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar 100 

糸が間違ったバージョンのスパークをロードする理由を誰でも共有できますか?

更新:

実際に私のPATHに起因する問題が台無しにされています。だから、私はパスをクリーンアップし、spark 2.0をspark submitのデフォルトバージョンに設定した後です。すべて今はうまくいく。

+0

「スパーク2.0を見つけられません」とはどういう意味ですか?それはあなたのbashrcにあります... – Derlin

+0

私はそれらの糸site.xml、core-site.xmlとspark-env.shファイルを意味します。スパーク2.0に関連する設定はありません。 –

+0

http://stackoverflow.com/questions/29691028/can-i-have-multiple-spark-versions-installed-in-cdh私の問題は、不要な日付ノードの./bashrcでスパーク関連の環境を設定することです。 –

答えて

0

まず、.bashrcのエクスポートをコメントアウトし、それらを環境から削除します。これらは互換性がありません。 PYTHONPATHは、スパーク1.6のライブラリを使用し、SPARK_HOMEのポイントは2.0のスパークを使用します。

次に、両方のバージョンで​​の絶対パスを使用して例を実行します。​​は、その場所に基づいてSPARK_HOMEを設定するため、両方のバージョンで動作するはずです。

+0

質問で分かりましたように、私はspark 1.6を実行しようとしていましたが、$ SPARK_HOMEをバージョン1.6の場所に設定しました。そこで指されたPYTHONPATHは訂正されました。しかし、私はあなたの考えを持っています。 ptoblemは私のPATHが台無しにされた結果です。 PATHをクリーニングした後、私はspark 2.0をデフォルトのspark submit versionに設定しました。 –

+0

$ SPARK_HOMEを1.6または2.0に設定する必要はありません:特定のバージョンで 'spark-submit'を使用するのであれば、絶対パスで' spark-sumit'を呼び出してください。このスクリプトの最初を見てください:もしSPARK_HOMEが設定されていなければ、適切に設定します。 – Mariusz

関連する問題