Spark On Yarn部署

作者: 见丰 | 来源:发表于2017-03-20 11:01 被阅读148次

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

    1. Linux 4.4.0-62-generic #83-Ubuntu x86_64 GNU/Linux
    2. java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
    3. Spark 2.1.0 built for Hadoop 2.7.3
    4. Hadoop 2.7.3

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

    1 hadoop配置

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

    These configs are used to write to HDFS and connect to the YARN ResourceManager.

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

    1.1 hadoop核心配置

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


    这个配置也是主从机都需要的。
    1.2 hdfs集群配置

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


    对于datanode,需要指定datanode存放文件的路径:

    然后需要在各个机器上建立好指定的目录。

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

    ./bin/hdfs namenode -format
    ./sbin/start-dfs.sh

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


    Live Nodes可以点开看每个slave机器的信息。
    1.3 yarn集群配置

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

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

    ./sbin/start-yarn.sh

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


    2 spark配置

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


    这个配置的修改是所有spark所在主机都要的。
    由于之前已经搭建过了独立模式的集群,也为了控制台执行spark命令行时少输入点参数,还需要修改同目录下的spark-defaults.conf文件,将spark.master指定为yarn,同时修改默认的部署方式,将spark.submit.deployMode指定为cluster。这个修改也要应用到所有的spark中:

    3 运行

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


    在spark-submit运行过程中,yarn的web控制台Applications界面会进行展示:

    点击Tracking UI栏中的链接,就可以看到熟悉的spark作业运行界面,这个界面只有spark作业运行期可以看到。

    如果需要中止运行,需要在yarn的web控制台Applications界面通过Application ID一列中的链接进入Application的详情界面,在左上角有个Kill Application按钮:

    相关文章

      网友评论

        本文标题:Spark On Yarn部署

        本文链接:https://www.haomeiwen.com/subject/jnrbnttx.html