基于CentOS6.4環(huán)境編譯Spark-2.1.0源碼

      網(wǎng)友投稿 687 2022-05-30

      基于CentOS6.4環(huán)境編譯Spark-2.1.0源碼

      1 寫在前面的話

      有些小伙伴可能會問:Spark官網(wǎng)不是已經(jīng)提供了Spark針對不同版本的安裝包了嗎,我們?yōu)槭裁催€需要對Spark源碼進行編譯呢?針對這個問題我們到Spark官網(wǎng):?spark.apache.org來看下,如下圖所示:

      Spark官網(wǎng)的確是提供了一些Hadoop版本的Spark安裝包,但是提供的這些是否能夠滿足我們的要求呢?答案肯定是否定的,根據(jù)本人近幾年做Spark的開發(fā)經(jīng)驗,列出如下幾點

      在生產(chǎn)環(huán)境中Hadoop的選型,很大部分都是CDH或者HDP系列的,那么官方提供的這幾個Hadoop系列是否能夠生產(chǎn)的需求?

      在開發(fā)過程中,我們經(jīng)常會遇到需要對Spark的源碼進行修改,那么修改后的代碼如何集成到Spark安裝包中去呢?

      針對如上列出的兩點的個人覺得比較好的最佳實踐:

      根據(jù)生產(chǎn)上運行的Hadoop版本編譯出Spark的安裝包

      修改Spark源碼之后,重新編譯Spark

      所以:個人覺得如果想更好的學(xué)習(xí)和使用Spark,那么第一步就是要會根據(jù)Spark源碼編譯出安裝包。

      2 前置準備

      根據(jù)Spark官方文檔編譯模塊的介紹(http://spark.apache.org/docs/2.1.0/building-spark.html)的介紹:

      The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.3.9 or newer and Java 7+. Note that support for Java 7 is deprecated as of Spark 2.0.0 and may be removed in Spark 2.2.0.”

      我們得知:

      Java需要7+版本,而且在Spark2.0.0之后Java 7已經(jīng)被標識成deprecated了,但是不影響使用,但是在Spark2.2.0版本之后Java 7的支持將會被移除;

      Maven需要3.3.9+版本

      2.1 Java7的安裝

      2.1.1 下載

      Java SE安裝包-:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

      本文章我們使用的JDK版本是:jdk1.7.0_51

      2.1.2 安裝

      我們所有的軟件都安裝在hadoop用戶的根目錄的app文件夾下

      //解壓

      tar -zxvf jdk-7u51-linux-x64.tar.gz -C ~/app

      //將JDK目錄添加到系統(tǒng)環(huán)境變量(~/.bash_profile)中

      export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51

      export PATH=$JAVA_HOME/bin:$PATH

      //讓配置文件生效

      source ~/.bash_profile

      //執(zhí)行java,查看java版本

      java -version

      //如果安裝成功后,則有如下信息的輸出

      java version "1.7.0_51"

      Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

      Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

      2.2 Maven3.3.9的安裝

      2.2.1 下載

      Maven3.3.9安裝包-:https://mirrors.tuna.tsinghua.edu.cn/apache//maven/maven-3/3.3.9/binaries/

      2.2.2 安裝

      // 解壓

      tar -zxvf apache-maven-3.3.9-bin.tar.gz -C ~/app/

      //將JDK目錄添加到系統(tǒng)環(huán)境變量(~/.bash_profile)中

      export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9

      export PATH=$MAVEN_HOME/bin:$PATH

      基于CentOS6.4環(huán)境編譯Spark-2.1.0源碼

      //讓配置文件生效

      source ~/.bash_profile

      //執(zhí)行mvn,查看版本

      mvn -v

      //如果安裝成功后,則有如下信息的輸出

      Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00)

      Maven home: /home/hadoop/app/apache-maven-3.3.9

      Java version: 1.7.0_51, vendor: Oracle Corporation

      Java home: /home/hadoop/app/jdk1.7.0_51/jre

      Default locale: zh_CN, platform encoding: UTF-8

      OS name: "linux", version: "2.6.32-358.el6.x86_64", arch: "amd64", family: "unix"

      2.3 Spark-2.1.0源碼下載

      -:http://spark.apache.org/downloads.html

      下載完成后解壓即可,解壓后的目錄結(jié)構(gòu)如下圖所示

      3 Spark源碼編譯

      查看官方文檔編譯源碼部分:http://spark.apache.org/docs/2.1.0/building-spark.html#building-a-runnable-distribution

      我們可以使用Spark源碼目錄中的dev下的make-distribution.sh腳本,官方提供的編譯命令如下:

      ./dev/make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.4 -Phive -Phive-thriftserver -Pmesos -Pyarn

      參數(shù)說明:

      --name:指定編譯完成后Spark安裝包的名字

      --tgz:以tgz的方式進行壓縮

      -Psparkr:編譯出來的Spark支持R語言

      -Phadoop-2.4:以hadoop-2.4的profile進行編譯,具體的profile可以看出源碼根目錄中的pom.xml中查看

      -Phive和-Phive-thriftserver:編譯出來的Spark支持對Hive的操作

      -Pmesos:編譯出來的Spark支持運行在Mesos上

      -Pyarn:編譯出來的Spark支持運行在YARN上

      那么我們可以根據(jù)具體的條件來編譯Spark,比如我們使用的Hadoop版本是2.6.0-cdh5.7.0,并且我們需要將Spark運行在YARN上、支持對Hive的操作,那么我們的Spark源碼編譯腳本就是:

      ./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

      編譯成功后,在Spark源碼的根目錄中就spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz包,那么我們就可以使用編譯出來的這個安裝包來進行Spark的安裝了。

      有小伙伴可能會問,為什么編譯出來的安裝包的名稱是spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz呢?我們可以帶著這個疑惑,查看make-distribution.sh的源碼,在該腳本的最后部分,有如下代碼:

      if [ "$MAKE_TGZ" == "true" ]; then

      TARDIR_NAME=spark-$VERSION-bin-$NAME

      TARDIR="$SPARK_HOME/$TARDIR_NAME"

      rm -rf "$TARDIR"

      cp -r "$DISTDIR" "$TARDIR"

      tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"

      rm -rf "$TARDIR"

      fi

      該VERSION就是我們Spark的版本即2.1.0,NAME就是我們在編譯時指定的2.6.0-cdh5.7.0,所以根據(jù)該腳本最終輸出的Spark安裝包的全稱為:?spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz。通過該代碼的查看希望大家能明白一個問題:源碼面前,了無秘密。

      注意:在編譯過程中會出現(xiàn)下載某個依賴包的時間太久,這是由于網(wǎng)絡(luò)問題,可以執(zhí)行ctrl+c停止編譯命令,然后重新運行編譯命令,在編譯過程中多試幾次即可。有條件的小伙伴,建議開著VPN然后再進行編譯,整個編譯過程會順暢很多。

      CentOS Hadoop spark

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Bluetooth Profile Specification之3.0 RFCOMM服務(wù)
      下一篇:多模態(tài)學(xué)習(xí)綜述
      相關(guān)文章
      亚洲日韩久久综合中文字幕| 亚洲AV无码一区二区一二区| 亚洲精品国自产拍在线观看| 亚洲av无码专区国产不乱码| 中文字幕在线日亚洲9| 亚洲一卡二卡三卡| 久久亚洲AV无码精品色午夜麻豆| 亚洲a一级免费视频| 亚洲av无码一区二区三区乱子伦| 亚洲人成图片小说网站| 国产aⅴ无码专区亚洲av麻豆| 亚洲天堂中文字幕在线| 中文字幕亚洲综合久久男男| 亚洲无线一二三四区手机| 亚洲日韩人妻第一页| 爱情岛论坛网亚洲品质自拍| 亚洲偷自拍拍综合网| 亚洲无av在线中文字幕| 亚洲精品成人片在线播放| 亚洲精品高清无码视频| 亚洲成人动漫在线| 91大神亚洲影视在线| 亚洲成a人不卡在线观看| 亚洲中文字幕在线无码一区二区| 亚洲三级在线播放| 伊人久久亚洲综合影院首页| 亚洲欧洲无码一区二区三区| 亚洲成在人线在线播放无码 | 亚洲黄色激情视频| 自拍偷区亚洲国内自拍| 亚洲AV无码国产一区二区三区| WWW国产亚洲精品久久麻豆| 国产区图片区小说区亚洲区| 亚洲乱码国产一区网址| 国产亚洲成人久久| 久久亚洲AV午夜福利精品一区| 久久精品亚洲中文字幕无码麻豆 | 亚洲区不卡顿区在线观看| 国产亚洲精品福利在线无卡一 | 亚洲婷婷综合色高清在线| 亚洲最大无码中文字幕|