2016-09-27 62 views
1

我有一個簡單的火花應用程序,它運行良好在我的筆記本電腦上使用​​。 然而,我當我運行Amazon EC2的集羣上使用​​它得到這個運行時錯誤:運行火花應用程序失敗EC2與hadoop IncompatibleClassChangeError

$ /root/spark/bin/spark-submit --class application.Example --master spark://ec2-54-227-170-20.compute-1.amazonaws.com:7077 /root/example-assembly-0.1-SNAPSHOT.jar 

java.lang.IncompatibleClassChangeError: Found class org.apache.hadoop.mapreduce.TaskAttemptContext, but interface was expected 
    at org.warcbase.mapreduce.WacGenericInputFormat$GenericArchiveRecordReader.initialize(WacGenericInputFormat.java:71) 

我確信,/root/example-assembly-0.1-SNAPSHOT.jar不含org/apache/spark也不org/apache/hadoop

我正在使用spark 1.6.1和hadoop 2.6.0。我看到warcbase依賴於hadoop 2.6.0-cdh5.7.1。

可能是什麼問題?

回答

1

的問題是,我的spark本地安裝,也是warcbase庫的使用hadoop 2.6.0,並在Amazon EC2上的火花安裝使用hadoop 1.2.1

所以,在我的筆記本電腦上我有spark-1.6.1-bin-hadoop2.6。我運行了spark-1.6.1-bin-hadoop2.6/ec2/spark-ec2,它在amazon ec2上部署了一個spark集羣。我期望它部署相同的版本,但它實際上部署了spark-assembly-1.6.1-hadoop1.2.1.jar。漂亮的轉儲。


因此,在執行火花EC2創建在Amazon EC2上的火花羣集時,您需要指定火花和Hadoop版本(它不會使用本地安裝的)。由於某些原因,hadoop版本2.6.0不可用。

$ spark-ec2 --help 
Usage: spark-ec2 [options] <action> <cluster_name> 

<action> can be: launch, destroy, login, stop, start, get-master, reboot-slaves 

Options: 
... 
    -v SPARK_VERSION, --spark-version=SPARK_VERSION 
         Version of Spark to use: 'X.Y.Z' or a specific git 
         hash (default: 1.6.1) 
... 
    --hadoop-major-version=HADOOP_MAJOR_VERSION 
         Major version of Hadoop. Valid options are 1 (Hadoop 
         1.0.4), 2 (CDH 4.2.0), yarn (Hadoop 2.4.0) (default: 
         1) 
... 


$ spark-ec2 --key-pair=test-us-east-1 --identity-file=~/.ssh/test-us-east-1.pem --instance-type=m3.xlarge --slaves=10 -v 1.6.1 --region=us-east-1 launch my-spark-cluster --spark-version=1.6.1 --hadoop-major-version=2.4.0 
相關問題