Spark 2.0.0-preview流式處理環境部署

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安裝配置

  1. 從官網拉取預編譯版本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
  2. 修改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版本,錯誤消失,具體原因暫時不明。

發佈了45 篇原創文章 · 獲贊 35 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章