導航:首頁 > 源碼編譯 > spark30編譯

spark30編譯

發布時間:2022-04-30 20:40:38

㈠ 怎麼編譯spark-streaming-flume

storm是實時處理,spark和hadoop是批處理,兩者是互補。在Hadoop2.0之後,hadoop使用了新的yarn框架,map/rece只是其中一種默許了,spark也可以在hadoop的yarn框架下運行的,所以2者還會是融合的。
spark還有與storm相同功能的 Spark Steaming,實時處理流式數據。可以順著Hadoop -> spark -> spark Steaming一路學下去,storm是否學習,你可以自己選擇下。如果有相同功能的spark Steaming,肯定是學習spark Steaming啦。
如果我的回答沒幫助到您,請繼續追問。

㈡ spark java本地環境怎麼搭建

1. 環境准備

Eclipse 請不要使用最新的 Neon(4.6) ,太多Bug了。 還是使用最新的 Mars(4.5) 系列吧
JDK 版本8.x (linux推薦Oracle, 沒有測試過OpenJDK)
因為只是用Java,因此無需安裝Scala及其相應的插件

2. 創建一個新的maven項目

3. pom.xml

org.apache.hadoop
hadoop-client
2.6.0

javax.servlet
*

org.apache.spark
spark-core_2.10
1.6.1

org.apache.spark
spark-streaming_2.10
1.6.1

org.apache.spark
spark-mllib_2.10
1.6.1

org.scala-lang
scala-library
2.10.5

這里只列出了必要的幾個依賴。 其他的請根據你自己的項目需求添加

4. 使用maven打包

之後在Goal 之中填寫clean package 即可

如果在修改了與Spark相關的代碼之後,需要重新編譯打包才行。 否則會有異常提示。

5. 代碼編寫注意事項:

在創建JavaSparkContext的時候,需要把自己加進去。
public static JavaSparkContextgetContext(String taskName) {
JavaSparkContextsc = new JavaSparkContext(SparkConnUtils.getSparkConf(taskName));
sc.addJar("target/sparkstat-0.0.1-SNAPSHOT.jar");

return sc;
}

其中target/sparkstat-0.0.1-SNAPSHOT.jar是maven 運行之後生成的完整的jar包

㈢ 如何使用intellij搭建spark開發環境

注意,客戶端和虛擬集群中hadoop、spark、scala的安裝目錄是一致的,這樣開發的spark應用程序的時候不需要打包spark開發包和scala的庫文件,減少不必要的網路IO和磁碟IO。當然也可以不一樣,不過在使用部署工具spark-submit的時候需要參數指明classpath。
1:IDEA的安裝
官網jetbrains.com下載IntelliJ IDEA,有Community Editions 和& Ultimate Editions,前者免費,用戶可以選擇合適的版本使用。
根據安裝指導安裝IDEA後,需要安裝scala插件,有兩種途徑可以安裝scala插件:
啟動IDEA -> Welcome to IntelliJ IDEA -> Configure -> Plugins -> Install JetBrains plugin... -> 找到scala後安裝。
啟動IDEA -> Welcome to IntelliJ IDEA -> Open Project -> File -> Settings -> plugins -> Install JetBrains plugin... -> 找到scala後安裝。

如果你想使用那種酷酷的黑底界面,在File -> Settings -> Appearance -> Theme選擇Darcula,同時需要修改默認字體,不然菜單中的中文字體不能正常顯示。2:建立Spark應用程序
下面講述如何建立一個Spark項目week2(,正在錄制視頻),該項目包含3個object:
取自spark examples源碼中的SparkPi
計詞程序WordCount1
計詞排序程序WordCount2

A:建立新項目
創建名為dataguru的project:啟動IDEA -> Welcome to IntelliJ IDEA -> Create New Project -> Scala -> Non-SBT -> 創建一個名為week2的project(注意這里選擇自己安裝的JDK和scala編譯器) -> Finish。
設置week2的project structure
增加源碼目錄:File -> Project Structure -> Meles -> week2,給week2創建源代碼目錄和資源目錄,注意用上面的按鈕標注新增加的目錄的用途。


增加開發包:File -> Project Structure -> Libraries -> + -> java -> 選擇
/app/hadoop/spark100/lib/spark-assembly-1.0.0-hadoop2.2.0.jar
/app/scala2104/lib/scala-library.jar可能會提示錯誤,可以根據fix提示進行處理

B:編寫代碼
在源代碼scala目錄下創建1個名為week2的package,並增加3個object(SparkPi、WordCoun1、WordCount2):


SparkPi代碼
package week2

import scala.math.random
import org.apache.spark._

/** Computes an approximation to pi */
object SparkPi {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Spark Pi")
val spark = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = 100000 * slices
val count = spark.parallelize(1 to n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.rece(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
}
復制代碼

WordCount1代碼

package week2

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._

object WordCount1 {
def main(args: Array[String]) {
if (args.length == 0) {
System.err.println("Usage: WordCount1 <file1>")
System.exit(1)
}

val conf = new SparkConf().setAppName("WordCount1")
val sc = new SparkContext(conf)
sc.textFile(args(0)).flatMap(_.split(" ")).map(x => (x, 1)).receByKey(_ + _).take(10).foreach(println)
sc.stop()
}
}
復制代碼

WordCount2代碼

package week2

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._

object WordCount2 {
def main(args: Array[String]) {
if (args.length == 0) {
System.err.println("Usage: WordCount2 <file1>")
System.exit(1)
}

val conf = new SparkConf().setAppName("WordCount2")
val sc = new SparkContext(conf)
sc.textFile(args(0)).flatMap(_.split(" ")).map(x => (x, 1)).receByKey(_ + _).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).take(10).foreach(println)
sc.stop()
}
}
復制代碼

C:生成程序包
生成程序包之前要先建立一個artifacts,File -> Project Structure -> Artifacts -> + -> Jars -> From moudles with dependencies,然後隨便選一個class作為主class。


按OK後,對artifacts進行配置,修改Name為week2,刪除Output Layout中week2.jar中的幾個依賴包,只剩week2項目本身。


按OK後, Build -> Build Artifacts -> week2 -> rebuild進行打包,經過編譯後,程序包放置在out/artifacts/week2目錄下,文件名為week2.jar。

3:Spark應用程序部署
將生成的程序包week2.jar復制到spark安裝目錄下,切換到用戶hadoop,然後切換到/app/hadoop/spark100目錄,進行程序包的部署。具體的部署參見應用程序部署工具spark-submit 。

㈣ 新手請教:為什麼安裝spark需要源碼編譯

因為不同版本的HDFS在協議上是不兼容的,所以如果你想用你的Spark從HDFS上讀取數據,那麼你就的選擇相應版本的HDFS來編譯Spark,這個可以在編譯的時候通過設置hadoop.version來選擇,默認情況下,Spark默認為編譯成Hadoop 1.0.4版本。現在可以使用的方法有Maven編譯,sbt編譯(時間較長),Spark自帶腳本編譯(實際還是調用Maven)。

㈤ 如何使用spark做大數據分析

動手實驗Apache Spark的最好方式是使用互動式Shell命令行,Spark目前有Python Shell和Scala Shell兩種互動式命令行。
可以從 這里下載Apache Spark,下載時選擇最近預編譯好的版本以便能夠立即運行shell。
目前最新的Apache Spark版本是1.5.0,發布時間是2015年9月9日。
tar -xvzf ~/spark-1.5.0-bin-hadoop2.4.tgz

運行Python Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/pyspark

在本節中不會使用Python Shell進行演示。
Scala互動式命令行由於運行在JVM上,能夠使用java庫。
運行Scala Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/spark-shell

執行完上述命令行,你可以看到下列輸出:
Scala Shell歡迎信息
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.5.0
/_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25)
Type in expressions to have them evaluated.
Type :help for more information.
15/08/24 21:58:29 INFO SparkContext: Running Spark version 1.5.0

下面是一些簡單的練習以便幫助使用shell。也許你現在不能理解我們做的是什麼,但在後面我們會對此進行詳細分析。在Scala Shell中,執行下列操作:
在Spark中使用README 文件創建textFileRDD
val textFile = sc.textFile("README.md")

獲取textFile RDD的第一個元素
textFile.first()
res3: String = # Apache Spark

對textFile RDD中的數據進行過濾操作,返回所有包含「Spark」關鍵字的行,操作完成後會返回一個新的RDD,操作完成後可以對返回的RDD的行進行計數
篩選出包括Spark關鍵字的RDD然後進行行計數
val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark.count()
res10: Long = 19

要找出RDD linesWithSpark單詞出現最多的行,可以使用下列操作。使用map方法,將RDD中的各行映射成一個數,然後再使用rece方法找出包含單詞數最多的行。
找出RDD textFile 中包含單詞數最多的行
textFile.map(line => line.split(" ").size)
.rece((a, b) => if (a > b) a else b)
res11: Int = 14

返回結果表明第14行單詞數最多。
也可以引入其它java包,例如 Math.max()方法,因為map和rece方法接受scala函數字面量作為參數。
在scala shell中引入Java方法
import java.lang.Math
textFile.map(line => line.split(" ").size)
.rece((a, b) => Math.max(a, b))
res12: Int = 14

我們可以很容易地將數據緩存到內存當中。
將RDD linesWithSpark 緩存,然後進行行計數
linesWithSpark.cache()
res13: linesWithSpark.type =
MapPartitionsRDD[8] at filter at <console>:23
linesWithSpark.count()
res15: Long = 19

上面簡要地給大家演示的了如何使用Spark互動式命令行。
彈性分布式數據集(RDDs)
Spark在集群中可以並行地執行任務,並行度由Spark中的主要組件之一——RDD決定。彈性分布式數據集(Resilient distributed data, RDD)是一種數據表示方式,RDD中的數據被分區存儲在集群中(碎片化的數據存儲方式),正是由於數據的分區存儲使得任務可以並行執行。分區數量越多,並行越高。下圖給出了RDD的表示:

Display- Edit
想像每列均為一個分區(partition ),你可以非常方便地將分區數據分配給集群中的各個節點。
為創建RDD,可以從外部存儲中讀取數據,例如從Cassandra、Amazon簡單存儲服務(Amazon Simple Storage Service)、HDFS或其它Hadoop支持的輸入數據格式中讀取。也可以通過讀取文件、數組或JSON格式的數據來創建RDD。另一方面,如果對於應用來說,數據是本地化的,此時你僅需要使用parallelize方法便可以將Spark的特性作用於相應數據,並通過Apache Spark集群對數據進行並行化分析。為驗證這一點,我們使用Scala Spark Shell進行演示:

㈥ spark的開發環境應該是怎樣的

indows下spark開發環境配置
特註:windows下開發spark不需要在本地安裝hadoop,但是需要winutils.exe、hadoop.dll等文件,前提是你已經安裝了eclipse、maven、jdk等軟體
spark支持jdk版本建議是1.8及以上,如果開發spark建議將jdk編譯版本設置為1.8

我選擇的spark是spark-1.4.0-bin-hadoop2.6.tgz,故以該版本為例

第一步:下載spark-1.4.0-bin-hadoop2.6.tgz到本地,並解壓在本地目錄

㈦ spark編譯在linux怎麼使用

在windows下安裝軟體大家都覺得很容易,只要雙擊setup或是install的圖標,然後跟著向導一步一步的按提示做就可以了,但是在linux下安裝軟體就不像windows下那樣容易了,有時你找到的是沒有編譯過的軟體源碼,那就更加的麻煩了,這里就介紹一下如...

㈧ spark獨立模式還需要編譯嗎

spark有三種集群部署方式:

1、獨立部署模式standalone,spark自身有一套完整的資源管理方式

2、架構於hadoop之上的spark集群

3、架構於mesos之上的spark集群

嘗試了下搭建第一種獨立部署模式集群,將安裝方式記錄如下:

環境ubuntu 12.04 (兩台),部署方式是和hadoop類似,先在一台機器上部署成功後直接將文件打包拷貝到其他機器上,這里假設現在A機器上部署,並且A為master,最後B為slave

A和B均上創建用戶spark

sudo useradd spark
以後spark的目錄在集群所有機器的/home/spark/spark下(第一個spark是用戶名,第二個spark是spark文件目錄名)

保證A能無密碼登陸到B上的spark用戶,在ssh裡面設置

這部分是現在master機器(A)上配置

0 首先保證A能無密碼方式ssh至localhost和B ,具體方式參見: 點擊打開鏈接

0.1 在A機器上執行

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
ssh localhost
那麼A可以實現無密碼登陸localhost

0.2 在B機器上執行

ps -e|grep ssh
如果出現:

695 ? 00:00:00 sshd

1754 ? 00:00:00 ssh-agent

若沒有sshd那麼在B上執行

sudo apt-get install openssh-server
在B上安裝ssh服務端(ubuntu有可能默認只有agent端)

0.3 在B上執行:

ssh-keygen -t rsa
scp spark@A:~/.ssh/authorized_keys ~/.ssh
第一句是為了保證在B上有.ssh目錄

第二句是將A的公鑰拷貝到B上,從而實現A無密碼訪問B

0.4 在A上執行gedit ~/.ssh/config添加

user spark
這里是為了A以默認用戶spark無密碼登陸B,其實這一步沒有必要,因為A和B機器上都是在spark用戶下操作的,那麼機器A的saprk執行ssh B也是以spark用戶登陸的

1 每台機器確保有java ,一個簡單的方式:

sudo apt-get install eclipse
2 需要maven編譯spark源碼 ,下載maven 點擊打開鏈接 ,隨便下載一個版本

簡單的方式:

sudo apt-get install maven
復雜的方式:

wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz
tar -zxvf apache-maven-3.2.2-bin.tar.gz
mv apache-maven-3.2.2-bin.tar.gz maven
sudo mv maven /usr/local
然後gedit /etc/profile末尾添加如下:

#set maven environment
M2_HOME=/usr/local/maven
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$M2_HOME/bin:$PATH
驗證maven安裝成功:

source /etc/profile
mvn -v
出現類似語句:Apache Maven 3.2.2 (; 2014-06-17T21:51:42+08:00)

3 下載spark, 點擊打開鏈接 ,注意不要下載帶有hadoop之類字樣的版本,而是source package比如spark-1.0.0.tgz

tar -zxvf spark-1.0.0.tgz
mv spark-1.0.0 spark
cd spark
sh make-distribution.sh
最後一步會

編譯spark源碼

,過程可能有點長,取決於網路和機器配置,我的用了19min,編譯成功類似如下圖(圖來自網上):

4 配置spark

4.1 gedit ./conf/spark-env.sh在spark-env.sh末尾添加如下:

export SPARK_MASTER_IP=A
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=1g
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
注意這里的SPARK_MASTER_IP我覺得還是設置為master機器的IP地址比較好,這里我假設master的hostname是A

SPARK_WORKER_INSTANCES表示slave機器的數目,這里只有B一台故設為1

4.2 gedit ./conf/slaves添加B的hostname,這里B機器的hostname假設就為B故在文件中追加一個B即可。文件里原來有一個localhost如果你想要master同時也為worker機器那麼可保留該行,否則可以刪除

5 驗證master機器A能否單機啟動spark

閱讀全文

與spark30編譯相關的資料

熱點內容
哈夫曼編碼數據壓縮 瀏覽:414
鎖定伺服器是什麼意思 瀏覽:375
場景檢測演算法 瀏覽:607
解壓手機軟體觸屏 瀏覽:338
方舟pv怎麼轉伺服器 瀏覽:99
數據挖掘中誤差值演算法函數 瀏覽:118
php開發套件 瀏覽:190
伺服器的spi板是什麼 瀏覽:896
解壓縮全能王中文密碼是什麼 瀏覽:80
javaftp伺服器上傳文件 瀏覽:103
演算法設計中文版pdf 瀏覽:81
視頻壓縮形式怎麼改 瀏覽:368
perl程序員 瀏覽:789
電子表格對比命令 瀏覽:610
php循環輸出數組內容 瀏覽:750
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:212
oppo手機谷歌伺服器無法核實什麼 瀏覽:320
軟體怎麼加密華為 瀏覽:222
掃地機怎麼安裝app 瀏覽:319