1、Spark 2.1 源碼編譯支持CDH



目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能編譯spark源碼生成支持CDH的版本。

一、准備工作


找一台Linux主機, 由於spark源碼編譯會下載很多的第三方類庫包, 因此需要主機能夠聯網。

1、安裝Java, 配置環境變量, 版本為JDK1.7或者以上

export JAVA_HOME=/usr/java/default
export JRE_HOME=/usr/java/default/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

2、安裝Maven, 版本為3.3.9或者以上

export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=$MAVEN_HOME/bin:$PATH

二、編譯Spark的源碼包

1、下載spark 2.1.0的源碼包


 

2、增加cdh的repository

解壓spark的源碼包, 編輯pom.xml文件, 在repositories節點 加入如下配置:
    <repository>
        <id>cloudera</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
 
 

3、開始編譯

./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz  -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0

在編譯過程中, 可能會出現各種莫名其妙的原因導致中斷, 只需要重新執行上面的編譯命令即可, 第一編譯可能需要幾個小時,第一次編譯成功后, 后面再編譯就很快了。

編譯成功后, 可以看到如下:
 

編譯成功后, 可以看到生成了tar包:
 

三、測試


1、提交到yarn上面

 
需要配置HADOOP_CONF_DIR或者YARN_CONF_DIR環境變量:
# export HADOOP_CONF_DIR=/etc/hadoop/conf
 
val file=spark.sparkContext.textFile("/tmp/appveyor.yml")
val wc = file.flatMap(line => line.split(",")).map(word=>(word,1)).reduceByKey(_ + _)
 

2、訪問hive的表

需要將hive的hive-site.xml復制到spark的conf目錄下面。
scala> spark.sql("select * from iot.tp").collect().foreach(println)
 


















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM