Spark On Yarn部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark On Yarn部署相关的知识,希望对你有一定的参考价值。

参考技术A 本文使用的软件环境同 第一篇 ,另增加了hadoop的环境:

另外扯一句题外话,由于hadoop体系的复杂,我会从最简单的层级来配置,多余的配置项不会列出。
所有机器的jdk、spark、hadoop版本,目录位置都相同。

配置的基础是集群主机到从机的无密码ssh登录,spark需要hdfs和yarn集群同时运行。在 官方文档 上一句话提及了这一点:

这是一个坑,很多文章都没有强调hdfs集群配置的重要性。

这一步主要参考 Hadoop集群配置官方文档 。
进入 <HADOOP_DIR>/etc/hadoop/ 目录,为了让hadoop系列服务能够启动,首先需要修改 hadoop-env.sh 文件,指定JDK的目录所在。 JAVA_HOME 这个变量如果在 .bashrc 中 export 了,hadoop执行脚本时还是不行的,所以要在hadoop自己的配置文件中指定。无论主从机都需要。
接着修改hadoop的一些核心配置,修改同目录下的 core-site.xml 文件,指定hdfs的NameNode的位置:

接着配置hdfs集群,需要修改同目录下的 hdfs-site.xml 文件,这个主从机有所不同,对于namenode,需要指定namenode存放文件的路径:

修改同目录下的slaves文件,将从机名称一机一行写入。
在主机<HADOOP_DIR>下执行Name Node的初始化及集群的启动脚本:

需要检验一下hdfs集群是否成功,这里再次说明,不要相信jps的输出,即便jps的输出完备,各种角色都列出了,也不一定说明集群能正常运行了,只有从web控制台看到主从机的信息才算配置正常了。
hdfs的默认web端口在50070,用浏览器访问Name Node的50070端口就可以看到结果:

修改同目录下的 yarn-site.xml 文件,设定 yarn.resourcemanager.hostname 为Resource Manager主机名,主从机都需要:

在主机<HADOOP_DIR>下执行Yarn的启动脚本

yarn的web控制台默认端口是8088,访问Resouce Manager所在主机的8088端口就可以看到yarn的集群情况:

修改<SPARK_DIR>/conf目录下的 spark-env.sh 文件,将 HADOOP_CONF_DIR 变量指定到hadoop配置文件目录并导出。

在集群中任意机器上执行以下测试看看结果:

以上是关于Spark On Yarn部署的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark支持三种分布式部署方式 standalonespark on mesos和 spark on YARN区别

Spark 2.4 集群部署(on Yarn模式)

Spark On YARN 分布式集群安装

部署Spark2.2集群(on Yarn模式)

Spark HA on yarn 最简易安装。

为什么我们生产上要选择Spark On Yarn模式?