设为首页 加入收藏

TOP

spark on yarn 搭建
2019-02-11 13:23:12 】 浏览:50
Tags:spark yarn 搭建

原理

  • Spark on YARN的原理就是依靠yarn来调度Spark,比默认的Spark运行模式性能要好的多,前提是首先部署好hadoop HDFS并且运行在yarn上,然后就可以开始部署spark on yarn了,假设现在准备环境已经部署完毕,这里是在CDH 环境下部署Spark

  • 除了上面的环境准备,安装Spark前,还应该保证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

  • 这里为了方便升级,使用/bigdata/sprak指向具体的spark目录,接下来可以配置环境变量,以方便随时输入命令来提交相关程序
    然后同样是处理配置文件:

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

  • 这时slaves不用做任何修改默认即可,如果有多台spark,也可以配置除master之外的主机名列表,这个不用配置也可以
  • 需要把yarn用户下的 yarn 配置拷贝到 hdfs 用户下 ;

执行 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运行内存
export SPARK_WORKER_MEMORY=32G
// hadoop配置文件目录 cdh中默认是如下目录 这个hadoop必须运行在yarn上 spark才能直接通过此配置文件目录通过yarn进行调度
export HADOOP_CONF_DIR=/home/hdfs/software/hadoop/etc/hadoop
//spark master端口 默认7077 下

面是可选的
export SPARK_MASTER_PORT=7077
export SPARK_HOME=/home/hdfs/software/spark163
//此项默认 也是可选的
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放到jars下;

搭建问题

web ui 页面,想通过application id 查看作业详情,报下面的信息:
You (User dr.who) are not authorized to view application application_xxxx
这个问题是由于权限受限制,我们需要设置我们登录web页面的用户,在core-site.xml 文件添加如下设置:

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

这样就会正常的打开application详情页面
为了在yarn UI 看到spark 执行日志,需要在/home/hdfs/software/spark/conf/spark-defaults.conf
添加:

spark.eventLog.enabled true
spark.eventLog.dir hdfs://hdp-bjyn-cluster/user/spark/applicationHistory
//Spark运行历史Server的地址,主机:host,如:hdp1.bjyn.com:18080,注意不能包含http://
//默认不配置,必须开启Spark的historyServer之后才能配置。该地址用于Yarn ResourceManager在Spark应用程序结束时候,将该application的运行URL从ResourceManager的UI指向Spark historyServer UI。
spark.yarn.historyServer.address hdp1.bjyn.com:18080

启动spark historyserver

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

  • 配置完这些项之后,spark就可以跑在yarn上了,到这里就部署完了,也没必要启动spark的master和slaves服务,因为是靠yarn进行任务调度,所以直接提交任务即可,也可以在yarn ui 的history中看到任务执行log

提交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


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇spark master和spark worker挂掉a.. 下一篇Spark与深度学习框架——H2O、dee..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }