spark on yarn 搭建

原理

  • Spark on YARN的原理就是依靠yarn來調(diào)度Spark,比默認(rèn)的Spark運(yùn)行模式性能要好的多,前提是首先部署好hadoop HDFS并且運(yùn)行在yarn上,然后就可以開始部署spark on yarn了,假設(shè)現(xiàn)在準(zhǔn)備環(huán)境已經(jīng)部署完畢,這里是在CDH 環(huán)境下部署Spark

  • 除了上面的環(huán)境準(zhǔn)備,安裝Spark前,還應(yīng)該保證Scala正常安裝,基于Scala的情況下,就可以開始部署Spark了,

  • 首先還是解壓Spark,安裝位置就是/home/hdfs/software/

cd /home/hdfs/software
tar -xvzf spark-1.6.3-bin-hadoop2.6.tgz
ln -s spark-1.6.3-bin-hadoop2.6 spark
cd /home/hdfs/software

  • 這里為了方便升級(jí),使用/bigdata/sprak指向具體的spark目錄,接下來可以配置環(huán)境變量,以方便隨時(shí)輸入命令來提交相關(guān)程序
    然后同樣是處理配置文件:

cp conf/spark-env.sh.template conf/spark-env.sh
cp conf/slaves.template conf/slaves

  • 這時(shí)slaves不用做任何修改默認(rèn)即可,如果有多臺(tái)spark,也可以配置除master之外的主機(jī)名列表,這個(gè)不用配置也可以
  • 需要把yarn用戶下的 yarn 配置拷貝到 hdfs 用戶下 ;

執(zhí)行 vim conf/spark-env.sh 編輯配置文件,在最后追加如下配置:

export JAVA_HOME=/home/hdfs/software/jdk
//Scala目錄
export SCALA_HOME=/home/hdfs/software/scala-2.10.6
//Master IP地址
export SPARK_MASTER_IP=192.168.88.240
//Worker運(yùn)行內(nèi)存
export SPARK_WORKER_MEMORY=32G
// hadoop配置文件目錄 cdh中默認(rèn)是如下目錄 這個(gè)hadoop必須運(yùn)行在yarn上 spark才能直接通過此配置文件目錄通過yarn進(jìn)行調(diào)度
export HADOOP_CONF_DIR=/home/hdfs/software/hadoop/etc/hadoop
//spark master端口 默認(rèn)7077 下面是可選的
export SPARK_MASTER_PORT=7077
export SPARK_HOME=/home/hdfs/software/spark163
//此項(xiàng)默認(rèn) 也是可選的
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
export SPARK_CLASSPATH=$SPARK_HOME/jars/hadoop-lzo-0.4.20-SNAPSHOT.jar:$SPARK_HOME/jars/mysql-connector-java-5.1.38-bin.jar:$SPARK_CLASSPATH

  • 在spark163 下新建jars 將hadoop-lzo-0.4.20-SNAPSHOT.jar,mysql-connector-java-5.1.38-bin.jar放到j(luò)ars下;

搭建問題

web ui 頁面,想通過application id 查看作業(yè)詳情,報(bào)下面的信息:
You (User dr.who) are not authorized to view application application_xxxx
這個(gè)問題是由于權(quán)限受限制,我們需要設(shè)置我們登錄web頁面的用戶,在core-site.xml 文件添加如下設(shè)置:

<property>
<name>hadoop.http.staticuser.user</name>
<value>hdfs</value>
</property>

這樣就會(huì)正常的打開application詳情頁面
為了在yarn UI 看到spark 執(zhí)行日志,需要在/home/hdfs/software/spark/conf/spark-defaults.conf
添加:

spark.eventLog.enabled true
spark.eventLog.dir hdfs://hdp-bjyn-cluster/user/spark/applicationHistory
//Spark運(yùn)行歷史Server的地址,主機(jī):host,如:hdp1.bjyn.com:18080,注意不能包含http://
//默認(rèn)不配置,必須開啟Spark的historyServer之后才能配置。該地址用于Yarn ResourceManager在Spark應(yīng)用程序結(jié)束時(shí)候,將該application的運(yùn)行URL從ResourceManager的UI指向Spark historyServer UI。
spark.yarn.historyServer.address hdp1.bjyn.com:18080

啟動(dòng)spark historyserver

sbin/start-history-server.sh hdfs://hdp-bjyn-cluster/user/spark/applicationHistory

  • 配置完這些項(xiàng)之后,spark就可以跑在yarn上了,到這里就部署完了,也沒必要啟動(dòng)spark的master和slaves服務(wù),因?yàn)槭强縴arn進(jìn)行任務(wù)調(diào)度,所以直接提交任務(wù)即可,也可以在yarn ui 的history中看到任務(wù)執(zhí)行l(wèi)og

提交job示例

cd /home/hdfs/software/spark163

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1G --executor-memory 1G --executor-cores 1 /home/hdfs/software/spark16/lib/spark-examples-1.6.3-hadoop2.6.0.jar 40

參考

http://blog.csdn.net/zyj8170/article/details/58158966

spark-env.sh

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hdp-neunn-cluster/user/spark/applicationHistory"

sbin/start-history-server.sh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容