Spark on Yarn集群搭建

軟件環(huán)境:

linux系統(tǒng): CentOS6.7
Hadoop版本: 2.6.5
zookeeper版本: 3.4.8

</br>

主機配置:

一共m1, m2, m3這五部機, 每部主機的用戶名都為centos
192.168.179.201: m1 
192.168.179.202: m2 
192.168.179.203: m3 

m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker
m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker
m3: Zookeeper, DataNode, NodeManager, Worker

</br>

一.編譯Spark源碼

參考資料:

spark源碼編譯教程
    http://blog.csdn.net/yanran1991326/article/details/46506595

</br>

1.安裝Maven: (Linux下,若使用Spark自帶的編譯器可跳過此步)
 Maven教程:
    http://wiki.jikexueyuan.com/project/maven/
  1. 下載Maven安裝包
  2. 解壓Maven到指定位置
  3. 編輯/etc/profile文件
export M2_HOME=/home/centos/soft/maven
PATH=$PATH:$M2_HOME/bin
  1. 刷新一下/etc/profile文件
source /etc/profile
  1. 檢驗是否安裝成功,輸入以下指令
mvn -v
  1. 設(shè)置maven內(nèi)存大小
    (1)Linux下:
    配置環(huán)境變量,編輯/etc/profile文件
export MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

(2)Windows下:
配置環(huán)境變量:
新建變量:MAVEN_OPTS, 并將變量MAVEN_OPTS的值設(shè)置成-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

</br>

2.編譯spark源碼:
spark源碼下載官方地址:
    http://spark.apache.org/downloads.html
spark源碼編譯官方指南:
    http://spark.apache.org/docs/1.5.0/building-spark.html
spark源碼編譯教程:
    http://blog.csdn.net/yanran1991326/article/details/46506595
1. 下載spark源碼
2. 使用spark源碼編譯: (推薦使用第一種方案, 因為第二種方案親測編譯成功后各種缺包)
  1. 方案一:使用maven編譯: Linux下 (推薦使用這種方法)
    (1)編譯指令:
    如果想生成一個用scala2.1.2編譯的spark 部署包,則要先執(zhí)行change-scala-version.sh文件: ./dev/change-scala-version.sh 2.10(若要指定scala的編譯版本時, 必須先執(zhí)行該指令)
mvn -Phadoop-2.6 -Pyarn -Dhadoop.version=2.6.5 -Dyarn.version=2.6.5 -Dscala-2.10 -DskipTests clean package

指令參數(shù)使用介紹:

–Phadoop-$系列:                     打包時所用的Hadoop系列號,不加此參數(shù)時hadoop為pom.xml的默認系列刃鳄。 
-Dhadoop.version=$版本號:          打包時所用的Hadoop版本號厌衔,不加此參數(shù)時不可從HDFS上讀取數(shù)據(jù)驻襟。 
–Pyarn:                           是否支持Hadoop YARN夺艰,不加參數(shù)時為不支持yarn。 
-Dyarn.version=$版本號:               是否支持Hadoop YARN沉衣,不加參數(shù)時為不支持yarn調(diào)度郁副。 
–Phive:                              是否在Spark SQL中支持hive,不加此參數(shù)時為不支持hive厢蒜。(若要使用Hive on Spark功能時, 不能添加次參數(shù))
-Dscala-$版本號:                     打包時所用的Scala系列號霞势,不加此參數(shù)時Scala版本為pom.xml的默認版本, 在使用此函數(shù)之前必須先執(zhí)行./dev/change-scala-version.sh 2.10指令,否則無效 
-DskipTests:                          是否在編譯的過程中略過測試,加此參數(shù)時為略過斑鸦。 

(2)編譯成功:
編譯成功后的Spark引用包的存放位置:

$Spark源碼目錄/assembly/target/scala-2.10/spark-assembly-1.6.3-hadoop2.6.5.jar

該包的只是一個引用包, 應(yīng)把tgz解壓安裝的$SPARK_HOME/lib目錄下的assembly刪除, 然后將該包放入到$SPARK_HOME/lib目錄下

  1. 方案二:使用spark源碼包中自帶的make-distribution編譯工具
    (1)編譯指令:
    先編譯Spark源碼(若需要用到parquet功能,則帶上parquet-provided參數(shù))
    Spark2.0版本之前(hadoop版本可隨實際情況修改)
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"
Spark2.0版本之后(hadoop版本可隨實際情況修改)
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"

(2)編譯成功
編譯成功后的Spark安裝包的存放位置:

$Spark源碼目錄/spark-1.6.0-bin-hadoop2-without-hive-src.tgz

該包是一個安裝包, 用tar解壓出安裝即可, 不推薦使用


</br>
</br>

二.搭建Spark集群

0.安裝準備
  1. 下載Scala
http://www.scala-lang.org/download/
  1. 下載Spark
http://spark.apache.org/downloads.html

</br>

1.集群規(guī)劃(在m1上操作,然后在分發(fā)到其他主機)
Master  m1
Slaves  m3, m4, m5

</br>

2.解壓Scala,Spark安裝包
tar -zxvf scala-2.10.6/ -C /home/centos/soft/scala
tar -zxvf spark-1.6.0-bin-hadoop2.6/ -C /home/centos/soft/spark

</br>

3.配置環(huán)境變量
vi /etc/profile
## Spark
export SCALA_HOME=/home/centos/soft/scala
export SPARK_HOME=/home/centos/soft/spark
export CLASSPATH=$CLASSPATH:$SPARK_HOME/lib
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile

</br>

4.拷貝hdfs-site.xml, yarn-site.xml, hive-site.xml文件拷貝到spark的配置目錄下
cp /home/centos/soft/hadoop/etc/hadoop/hdfs-site.xml    /home/centos/soft/spark/conf
cp /home/centos/soft/hadoop/etc/hadoop/yarn-site.xml    /home/centos/soft/spark/conf
cp /home/centos/soft/hive/conf/hive-site.xml            /home/centos/soft/spark/conf

</br>

5.編輯$/SPARK_HOME/conf/spark-env.sh文件
Spark官方配置參考:
    https://spark.apache.org/docs/1.2.0/configuration.html
Hive On Spark配置參考:
    https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Spark
vi  $SPARK_HOME/conf/spark-env.sh
export JAVA_HOME=/home/centos/soft/jdk1.7.0_67
export HADOOP_HOME=/home/centos/soft/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SCALA_HOME=/home/centos/soft/scala
export SPARK_HOME=/home/centos/soft/spark
export SPARK_LOCAL_DIRS=$SPARK_HOME/tmp                 ## spark相關(guān)的臨時文件
export SPARK_DIST_CLASSPATH=$(/home/centos/soft/hadoop/bin/hadoop classpath)
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$SCALA_HOME/lib:$SPARK_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin

export SPARK_MASTER_IP=m1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_WORKER_CORES=3                                     ## 允許Spark應(yīng)用程序在每臺機器上使用的內(nèi)核總數(shù)
export SPARK_WORKER_MEMORY=512m                                 ## 允許Spark應(yīng)用程序在每臺機器上使用的總內(nèi)存量愕贡,例如1000m,2g(默認值:總內(nèi)存為1 GB);請注意巷屿,每個應(yīng)用程序的單獨內(nèi)存都使用其spark.executor.memory屬性配置
export SPARK_WORKER_INSTANCES=1                              ## 在每臺計算機上運行的工作程序?qū)嵗龜?shù)(默認值:1)固以。如果你有非常大的機器,并且想要多個Spark工作進程嘱巾,你可以使它超過1憨琳。如果你這樣設(shè)置,確保顯式地設(shè)置SPARK_WORKER_CORES以限制每個工人的核心旬昭,否則每個工人將嘗試使用所有核心篙螟。
export SPARK_DAEMON_MEMORY=512m                                 ## 要分配給Spark主服務(wù)器和工作程序守護程序本身的內(nèi)存(默認值:512m)。
export SPARK_EXECUTOR_CORES=1                                   ## 每個Executor使用的CPU核數(shù),每個Exector使用的總核心spark.max.cores在spark-default.conf中設(shè)置
export SPARK_EXECUTOR_MEMORY=512m                               ## 每個Executor使用多大的內(nèi)存
export SPARK_DRIVER_MEMORY=512m
export SPARK_YARN_AM_CORES=1
export SPARK_YARN_AM_MEMORY=512m
export SPARK_YARN_AM_WAITTIME=200ms
export SPARK_YARN_APP_NAME=Spark_On_Yarn
export SPARK_YARN_EXECUTOR_MEMORYOVERHEAD=75
export SPARK_TESTING_MEMORY=536870912

export SPARK_WORKER_DIR=$SPARK_HOME/logs/workerDir
export SPARK_LOG_DIR=$SPARK_HOME/logs/logDir
export SPARK_PID_DIR=$SPARK_HOME/logs/pidDir

export HIVE_SERVER2_THRIFT_PORT=10000
export HIVE_SERVER2_THRIFT_BIND_HOST=0.0.0.0

</br>

6.編輯$SPARK_HOME/conf/spark-default.conf文件
vi   $SPARK_HOME/conf/spark-default.conf
spark.master                          spark://master:7077
spark.shuffle.service.port            7337   
spark.eventLog.enabled                true
spark.eventLog.compress               true
spark.eventlog.dir                    /home/centos/soft/spark/logs/spark.log
spark.serializer                      org.apache.spark.serializer.KryoSerializer
spark.driver.memory                   5g
spark.executor.extraJavaOptions      -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

spark.sql.parquet.binaryAsString              true
spark.sql.parquet.mergeSchema                 true
spark.sql.parquet.cacheMetadata               false
spark.sql.hive.convertMetastoreParquet        false

spark.dynamicAllocation.enabled                                 true    # 開啟動態(tài)資源分配
spark.dynamicAllocation.minExecutors                            1       # 每個Application最小分配的executor數(shù)
spark.dynamicAllocation.maxExecutors                            30      # 每個Application最大并發(fā)分配的executor數(shù)
spark.dynamicAllocation.schedulerBacklogTimeout                 1s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout        5s

spark.scheduler.mode                    FAIR      # 調(diào)度模式
spark.executor.instances                1         # standalone模式下限制每個Executor最大核心數(shù)
spark.cores.max                         3         # Yarn模式下限制每個Executor最大核心數(shù)

</br>

7.實現(xiàn)Spark動態(tài)分配資源功能
  1. $SPARK_HOME/conf/spark-default.conf配置文件中將spark.dynamicAllocation.enabled配置項改為true
  2. $SPARK_HOME/lib/spark-1.6.0-yarn-shuffle.jar拷貝到每臺NodeManager節(jié)點的${HADOOP_HOME}/share/hadoop/yarn/lib/

</br>

8.編輯$SPARK_HOME/conf/slaves文件
m3
m4
m5

</br>

9.將安裝文件分發(fā)到其他主機上
scp -r   /home/centos/soft/scala   m3:/home/centos/soft/
scp -r   /home/centos/soft/scala   m4:/home/centos/soft/
scp -r   /home/centos/soft/scala   m5:/home/centos/soft/

</br>

10.啟動spark集群(注意: 啟動spark集群之前,需先啟動YARN)
  1. 在m1, m2上分別啟動YARN集群
start-yarn.sh
  1. 在WebUI上查看啟動情況
m1:8088
  1. 在m1主機上啟動主從節(jié)點:
start-master.sh      ## 啟動主節(jié)點: 
start-slaves.sh      ## 啟動從節(jié)點: 
  1. 在WebUI上查看啟動情況
m1:8080

</br>

11.測試實例
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --executor-cores 1 --queue thequeue lib/spark-assembly-1.6.0-hadoop2.6.0.jar 10

</br>
</br>
</br>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末问拘,一起剝皮案震驚了整個濱河市遍略,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骤坐,老刑警劉巖绪杏,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纽绍,居然都是意外死亡蕾久,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門拌夏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來僧著,“玉大人,你說我怎么就攤上這事障簿№镉蓿” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵卷谈,是天一觀的道長。 經(jīng)常有香客問我霞篡,道長世蔗,這世上最難降的妖魔是什么端逼? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮污淋,結(jié)果婚禮上顶滩,老公的妹妹穿的比我還像新娘。我一直安慰自己寸爆,他們只是感情好礁鲁,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赁豆,像睡著了一般仅醇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魔种,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天析二,我揣著相機與錄音,去河邊找鬼节预。 笑死叶摄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的安拟。 我是一名探鬼主播蛤吓,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糠赦!你這毒婦竟也來了会傲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤愉棱,失蹤者是張志新(化名)和其女友劉穎唆铐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奔滑,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡艾岂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了朋其。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片王浴。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖梅猿,靈堂內(nèi)的尸體忽然破棺而出氓辣,到底是詐尸還是另有隱情,我是刑警寧澤袱蚓,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布钞啸,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏体斩。R本人自食惡果不足惜梭稚,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望絮吵。 院中可真熱鬧弧烤,春花似錦、人聲如沸蹬敲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伴嗡。三九已至急波,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闹究,已是汗流浹背幔崖。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渣淤,地道東北人赏寇。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像价认,于是被迫代替她去往敵國和親嗅定。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容