Apache Spark学习:将Spark部署到Hadoop 2.2.0上
需要注意兩點(diǎn):(1)使用的Hadoop必須是2.0系列,比如0.23.x,2.0.x,2.x.x或CDH4、CDH5等,將Spark運(yùn)行在Hadoop上,本質(zhì)上是將Spark運(yùn)行在Hadoop YARN上,因?yàn)镾park自身只提供了作業(yè)管理功能,資源調(diào)度要依托于第三方系統(tǒng),比如YARN或Mesos等 (2)之所以不采用Mesos而是YARN,是因?yàn)閅ARN擁有強(qiáng)大的社區(qū)支持,且逐步已經(jīng)成為資源管理系統(tǒng)中的標(biāo)準(zhǔn)。
注意,目前官方已經(jīng)發(fā)布了0.8.1版本,可以直接從這里選擇合適的版本下載,如果你使用的是hadoop 2.2.0或者CDH5,可以直接從這里下載。
將Spark部署到Hadoop 2.2.0上需要經(jīng)過以下幾步:
步驟1:準(zhǔn)備基礎(chǔ)軟件
步驟2:下載編譯spark 0.8.1或者更高版本
步驟3:運(yùn)行Spark實(shí)例
接下來詳細(xì)介紹這幾個(gè)步驟。
步驟1:準(zhǔn)備基礎(chǔ)軟件
(1) 基本軟件
包括linux操作系統(tǒng)、Hadoop 2.2.0或者更高版本、Maven 3.0.4版本(或者最新3.0.x版本),其中,Hadoop 2.2.0只需采用最簡(jiǎn)單的方式安裝即可,具體可參考我的這篇文章:Hadoop YARN安裝部署,Maven安裝方法很簡(jiǎn)單,可以在http://maven.apache.org/download.cgi上下載binary版本,解壓后,配置MAVEN_HOME和PATH兩個(gè)環(huán)境變量,具體可自行在網(wǎng)上查找相關(guān)方法,比如這篇“Linux下安裝maven”,但需要注意,版本不是3.0.x版,Spark對(duì)版本要求很嚴(yán)格。
(2)硬件準(zhǔn)備
Spark 2.2.0專門搞出來一個(gè)yarn-new支持hadoop 2.2.0,因?yàn)閔adoop 2.2.0的API發(fā)生了不兼容變化,需要使用Maven單獨(dú)編譯并打包,而編譯過程非常慢(一般機(jī)器,2個(gè)小時(shí)左右),且占用內(nèi)存較多,因此,你需要一臺(tái)滿足以下條件的機(jī)器作為編譯機(jī):
條件1:可以聯(lián)網(wǎng):第一次編譯時(shí),maven需要從網(wǎng)上下載大量的jar包,速度比較慢,如果你網(wǎng)絡(luò)不行,建議直接放棄編譯。
條件2:內(nèi)存2GB以上
步驟2:下載編譯spark 0.8.1或者更高版本
可以用git下載或者直接wget或者spark 0.8.1版本
wget https://github.com/apache/incubator-spark/archive/v0.8.1-incubating.zip
注意,0.8.1之前的版本不支持hadoop 2.2.0,從0.8.1版本開始支持。
下載之后,對(duì)其解壓:
unzip v0.8.1-incubating
然后進(jìn)入解壓目錄,輸入以下命令:
cd incubator-spark-0.8.1-incubating
export MAVEN_OPTS=”-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m”
mvn -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0? -Pnew-yarn -DskipTests package
一般需要等待很長(zhǎng)時(shí)間,編譯完成后,將spark內(nèi)核打包成一個(gè)獨(dú)立的jar包,命令如下:
SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly
打包完成后,在assembly/target/scala-2.9.3/目錄下會(huì)生成兩個(gè)jar包,其中一個(gè)是spark-assembly-0.8.1-incubating-hadoop2.2.0.jar,examples/target/scala-2.9.3/下面也有一個(gè)jar包:spark-examples-assembly-0.8.1-incubating.jar,接下來將重點(diǎn)使用這兩個(gè)包。
如果你想把spark作為一個(gè)客戶端,放到hadoop集群上,供用戶使用,需要拷貝以下幾個(gè)目錄:
conf/
assembly/target/scala-2.9.3/ 只需拷貝jar包
examples/target/scala-2.9.3/只需拷貝jar包
spark-class
注意,需要保證以上目錄的層次結(jié)構(gòu),即一個(gè)目錄下有:
conf目錄、spark-class文件,assembly目錄(內(nèi)部有target目錄)、examples目錄(內(nèi)部有target目錄)
一切就緒后,可以編寫一個(gè)shell腳本run_spark_shell.sh運(yùn)行pi計(jì)算程序:
#用YARN_CONF_DIR或HADOOP_CONF_DIR指定YARN或者Hadoop配置文件存放目錄
export YARN_CONF_DIR=/opt /yarn/etc/hadoop/
SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \
./spark-class org.apache.spark.deploy.yarn.Client \
–jar ./assembly/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \
–class org.apache.spark.examples.JavaSparkPi \
–args yarn-standalone \
–num-workers 3 \
–master-memory 2g \
–worker-memory 2g \
–worker-cores 1
然后運(yùn)行該shell腳本:
sh run_spark_shell.sh
可在終端看到以下內(nèi)容:
以上程序比較簡(jiǎn)單,你可以運(yùn)行一個(gè)復(fù)雜點(diǎn)的迭代程序,Spark提供了一個(gè)圖閉包傳遞算法(Transitive closure),可以通過以下腳本運(yùn)行(run_spark_tc.sh):
#用YARN_CONF_DIR或HADOOP_CONF_DIR指定YARN或者Hadoop配置文件存放目錄
export YARN_CONF_DIR=/opt /yarn/etc/hadoop/
SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \
./spark-class org.apache.spark.deploy.yarn.Client \
–jar ./assembly/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \
–class org.apache.spark.examples.SparkTC \
–args yarn-standalone \
–num-workers 3 \
–master-memory 2g \
–worker-memory 2g \
–worker-cores 1
運(yùn)行該腳本后,可在YARN界面上看到運(yùn)行過程:
如果你使用的CDH4或者2.0.x版本,無需使用maven編譯,直接使用sbt打包即可,具體可參考:Building a YARN-Enabled Assembly JAR。
截止目前,CDH成為第一個(gè)宣稱支持Spark的發(fā)行版,預(yù)計(jì)在CDH5版本中將打入Spark,到之后使用Spark更加方便。
另外,如果你只想體驗(yàn)一下Spark,不想自己編譯打包Spark,可以直接下載我打包好的spark(下載地址:spark-on-hadoop-2.2.0.tar.gz),內(nèi)置兩個(gè)可以直接運(yùn)行的spark作業(yè)(run_spark_pi.sh和run_spark_tc.sh),不過運(yùn)行前,你需要先配置以下hadoop目錄所在位置,即修改腳本的第一行內(nèi)容:
export YARN_CONF_DIR=/opt/pgs/yarn/etc/hadoop/
目前0.8.1版本已經(jīng)發(fā)布,官網(wǎng)提供了安裝包下載,下載后可以直接使用,下載鏈接是:spark-hadoop2。
總結(jié)
以上是生活随笔為你收集整理的Apache Spark学习:将Spark部署到Hadoop 2.2.0上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python+Django+Eclips
- 下一篇: mahout 算法集