Spark 2.0.0-preview流式處理環境部署
環境準備
Hadoop Yarn
Hadoop 2.5.0-cdh5.3.2
Intellij Idea
Intellij IDEA 2016.3
其他
java version “1.8.0_45”
scala 2.11.8
Spark 2.0.0-preview安裝配置
從官網拉取預編譯版本spark-2.0.0-preview-bin-hadoop2.7.tgz到
/usr/local
目錄下,解壓並創建軟鏈接cd /usr/local wget http://mirror.bit.edu.cn/apache/spark/spark-2.0.0-preview/spark-2.0.0-preview-bin-hadoop2.7.tgz tar -xvf spark-2.0.0-preview-bin-hadoop2.7.tgz ln -s spark-2.0.0-preview-bin-hadoop2.7 spark
修改Spark配置文件,指定Hadoop Yarn路徑
cd /usr/local/spark/conf mv spark-default.conf.template spark-default.conf mv spark-env.sh.template spark-env.sh vim spark-env.sh export HADOOP_CONF_DIR=/etc/hadoop/conf
下載相關依賴
從http://search.maven.org/上拉取Spark Streaming連接Kafka Broker的相關依賴spark-streaming-kafka-0-8-assembly_2.11-2.0.0-preview.jar
運行Spark Streaming python測試腳本
cd /usr/loca/spark
bin/spark-submit --jars jars/spark-streaming-kafka-0-8-assembly_2.11-2.0.0-preview.jar examples/src/main/python/streaming/direct_kafka_wordcount.py broker Topic
Spark 1.4.1升級到2.0.0-preview遇到的坑
Spark Streaming以及Kafka依賴規則微調(pom.xml)
1.4.1
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka_2.10</artifactId> <version>1.4.1</version> </dependency>
2.0.0-preview
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-8_2.10</artifactId> <version>2.0.0-preview</version> </dependency>
import org.apache.spark.Logging的問題
- 1.4.1部分源碼
trait Logging{
}
- 2.0.0-preview部分源碼
private[spark] trait Logging{
...
}
原項目中繼承org.apache.spark.Logging
類,並自定義了日誌打印方法。但是在2.0.0-preview
版本中,org.apache.spark.Logging
這個類並不存在,轉移到org.apache.spark.internal.Logging
。由上述源碼可知,在2.0.0-preview
版本中,這已經不是DeveloperApi了。
提交代碼報錯Caused by: java.lang.ClassNotFoundException: scala.collection.GenTraversableOnce$class
解決思路:
統一整個系統Scala、JDK版本,更換Spark包。
填坑過程:
1. 因爲原來線上跑的Spark版本爲spark-1.4.1-bin-hadoop2.4
,從Spark官網拉取spark-2.0.0-preview-bin-hadoop2.4
預編譯版本,運行DirectKafkaWordCount.scala
報上述錯誤,懷疑是Scala版本問題,於是統一系統Scala版本爲2.11.8,JDK版本爲1.8.0_45,任報上述錯誤。
2. 編寫SparkPi Scala程序,打包上傳服務器,運行驗證Spark安裝正確。
3. 運行官方案例direct_kafka_wordcount.py
測試,錯誤依舊存在
bin/spark-submit examples/src/main/python/streaming/direct_kafka_wordcount.py broker topic
4. 拉取spark-2.0.0-preview-bin-hadoop2.7
版本,錯誤消失,具體原因暫時不明。