1. 程式人生 > >spark2.2.0 原始碼編譯安裝

spark2.2.0 原始碼編譯安裝

1. Spark概述
    Spark 是一個用來實現快速而通用的叢集計算的平臺。

    在速度方面,Spark 擴充套件了廣泛使用的 MapReduce 計算模型,而且高效地支援更多計算模式,包括互動式查詢和流處理。 在處理大規模資料集時,速度是非常重要的。速度快就意味著我們可以進行互動式的資料操作,否則我們每次操作就需要等待數分鐘甚至數小時。

    Spark 的一個主要特點就是能夠在記憶體中進行計算,因而更快。不過即使是必須在磁碟上進行的複雜計算,Spark 依然比 MapReduce 更加高效。

2. Spark學網站
1)databricks 網站
2)spark 官網
3)github 網站
3. Spark2.x原始碼下載及編譯生成版本
1)Spark2.2原始碼下載到node5節點的/opt/softwares/目錄下,解壓
tar -zxf spark-2.2.0.tgz -C /opt/modules/
2)spark2.2編譯所需要的環境:Maven3.3.9和Java8
3)Spark原始碼編譯的方式:Maven編譯、SBT編譯(暫無)和打包編譯make-distribution.sh
    a)下載Jdk8並安裝
tar -zxf jdk8u11-linux-x64.tar.gz -C /opt/modules/
    b)JAVA_HOME配置/etc/profile
export JAVA_HOME=/opt/modules/jdk1.8.0_11
export PATH=$PATH:$JAVA_HOME/bin
    編輯退出之後,使之生效
source /etc/profile
    c)如果遇到不能載入當前版本的問題
rpm -qa|grep jdk
rpm -e --nodeps jdk版本
    d)下載並解壓Maven
    下載Maven,解壓maven
tar -zxf apache-maven-3.3.9-bin.tar.gz -C /opt/modules/
    配置MAVEN_HOME(/etc/profile)
export MAVEN_HOME=/opt/modules/apache-maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=1024M -XX:ReservedCodeCacheSize=1024M"
    編輯退出之後,使之生效
source /etc/profile
    檢視maven版本
mvn -version
    e)編輯make-distribution.sh內容,可以讓編譯速度更快
VERSION=2.2.0
SCALA_VERSION=2.11.8
SPARK_HADOOP_VERSION=2.6.4
# 支援spark on hive
SPARK_HIVE=1
4)編譯前安裝一些壓縮解壓縮工具
yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop openssl openssl-devel
5)maven編譯,僅僅是為了編譯原始碼, 編譯後可以匯入idea中
mvn clean package -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests
6)通過make-distribution.sh原始碼編譯spark,打包後可以丟到生產環境了
./dev/make-distribution.sh --name custom-spark --tgz -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests
    編譯完成之後解壓
tar -zxf spark-2.2.0-bin-custom-spark.tgz -C /opt/modules/
4. scala安裝及環境變數設定
1)下載
2)解壓
tar -zxf scala-2.11.8.tgz -C /opt/modules/
3)配置環境變數(/etc/profile)
export SCALA_HOME=/opt/modules/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
4)編輯退出之後,使之生效
source /etc/profile
5. spark2.2.0本地模式執行測試
1)啟動spark-shell測試
./bin/spark-shell
scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
 
scala> textFile.count() 
res0: Long = 126
 
scala> textFile.first() 
res1: String = # Apache Spark
 
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
 
scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15
2)詞頻統計
    a)建立一個本地檔案stu.txt,內容為
hadoop storm spark
hbase spark flume
spark dajiangtai spark
hdfs mapreduce spark
hive hdfs solr
spark flink storm
hbase storm es    
solr dajiangtai scala
linux java scala
python spark mlib
kafka spark mysql
spark es scala
azkaban oozie mysql
storm storm storm
scala mysql es
spark spark spark
    b)spark-shell 詞頻統計
./bin/spark-shell
scala> val rdd = spark.read.textFile("/opt/datas/stu.txt")
# 詞頻統計
scala> val lines = rdd.flatmap(x => x.split(" ")).map(x => (x,1)).rdd.reduceBykey((a,b) => (a+b)).collect
# 對詞頻進行排序
scala> val lines = rdd.flatmap(x => x.split(" ")).map(x => (x,1)).rdd.reduceBykey((a,b) => (a+b)).map(x =>(x._2,x._1)).sortBykey().map(x => (x._2,x._1)).collect
6. spark 服務web監控頁面
通過web頁面檢視spark服務情況,http://node5:4040